IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problème formulaire insert mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut problème formulaire insert mysql
    bonjour à tous,

    voila j'essaye de créé un simple formulaire et la partie html fonctionne mais pas la partie php. je viens vers vous pour que vous m'aidez a résoudre ce petit problème. voici le code entier de la page en question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <form action= "<?PHP echo $_SERVER['PHP_SELF'];?>" method="post"
    enctype="application/x-www-form-urlencoded">
    <fieldset>
    <legend> <b>Pays</b></legend>
    <table>
    <tr><td>Code Pays: </td><td><input type="text" name="Code" size="5" maxlength="5"/></td></tr>
    <tr><td>Nom Pays: </td><td><input type="text" name="Nom" size="20" maxlength="20"/></td></tr>
    <tr><td>Drapeau: </td><td><input type="text" name="URL_Drapeau" size="255" maxlength="255"/></td></tr>
    <tr>
    <td><input type="reset" value=" Effacer " /></td>
    <td><input type="submit" value=" Envoyer " /></td>
    </tr>
    </table>
    </fieldset>
    </form>
    <?PHP
    include('myparam.inc.php');
    if(!empty($_post['Code'])&& !empty($_post['Nom'])&& !empty($_post['URL_Drapeau']))
    {
    	$ID_Pays="\N";
    	$Code= $_post['Code'];
    	$Nom= $_post['Nom'];
    	$URL_Drapeau= $_post['URL_Drapeau'];
    	//Requête SQL
    	$requete="INSERT INTO pays VALUES('$ID_Pays','$Code','$Nom','$URL_Drapeau')";
    	$idcom=connex('lesbgay','myparam');
    	$result=mysql_query($requete,$idcom);
    	mysql_close($idcom);
    	if(!$result)
    	{
    		echo "<h2>Erreur d'insertion \n n'",mysql_erno(),":",mysql_erroe()."</h2>";
    	}
    	else
    	{
    		echo"<script type=\"text/javascript\">
    		alert ('Vous avez enregistré le pays et son numéro est : ".
    			   mysql_insert_id(),"')</script>";
    	}
    }
    }
    else {echo "Formulaire à compléter!";}
    ?>
    fichier myparam.inc.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?PHP
    define("MYHOST","localhost");
    define("MYUSER","LOGIN");
    define("MYPASS","PASSWORD");
    ?>
    Biensur le login est pass sont juste

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Les noms des variables, contrairement aux fonctions, sont sensibles à la casse en PHP. Il s'agit sinon de variables différentes. Par conséquent, ce n'est pas $_post mais $_POST qu'il faut écrire.

    Il y a une coquille sur mysql_erroe pour mysql_error.

    Et il faudrait penser à se protéger des injections.

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    merci deja pour ton aide, voila j'ai corriger les POST dans mon fichier, mais je vois pas pourquoi j'ai tjrs une page blanche.

    tu sais me dire ou est la faille d'injonction?



    Merci de m'aider.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il faut visiblement faire afficher les erreurs PHP (paramètre display_errors à On) au niveau du serveur (php.ini) voir autre si le serveur le permet (.htaccess par exemple). La mise en forme de votre code n'aide pas - surtout s'il est incomplet - mais j'ai l'impression qu'il y a une accolade fermante en trop à la fin.

    Sinon pour les injections, comme indiqué sur le lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $Code = mysql_real_escape_string($_POST['Code']);
    $Nom = mysql_real_escape_string($_POST['Nom']);
    $URL_Drapeau = mysql_real_escape_string($_POST['URL_Drapeau']);
    (à condition de ne pas avoir les magic_quotes_gpc actives - fonctionnalité dépréciée de PHP)

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    Citation Envoyé par julp Voir le message
    Il faut visiblement faire afficher les erreurs PHP (paramètre display_errors à On) au niveau du serveur (php.ini) voir autre si le serveur le permet (.htaccess par exemple). La mise en forme de votre code n'aide pas - surtout s'il est incomplet - mais j'ai l'impression qu'il y a une accolade fermante en trop à la fin.

    Sinon pour les injections, comme indiqué sur le lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $Code = mysql_real_escape_string($_POST['Code']);
    $Nom = mysql_real_escape_string($_POST['Nom']);
    $URL_Drapeau = mysql_real_escape_string($_POST['URL_Drapeau']);
    (à condition de ne pas avoir les magic_quotes_gpc actives - fonctionnalité dépréciée de PHP)

    je viens de mettre le display_errors en mode On, pour ce qui est du magic_quotes_gpc il n'est pas actif, pour toi je devrais l'activer?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Non, justement !

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    okay, voila je vois les erreurs si je laisse mon code et enlève un }, me reste une erreur que voici


    Fatal error: Call to undefined function connex() in /var/www/**********************/ajout_pays.php on line 34


    que voici

    $idcom=connex('lesbgay','myparam');

    le nom de ma base est bien lesbgay et mon fichier config est bien myparam.

    maintenant si je met tes codes

    $Code = mysql_real_escape_string($_POST['Code']);
    $Nom = mysql_real_escape_string($_POST['Nom']);
    $URL_Drapeau = mysql_real_escape_string($_POST['URL_Drapeau']);

    j'ai aussi a ces endroit les erreurs.


    Merci encore pour votre aide

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Elle est définie où cette fonction connex ?

  9. #9
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    a voila mon erreur de débutant, j'ai pas créé cette fonction connex, je la crée et je te tiens au courant. des erreurs si y a des erreurs mais j'espere plus en avoir.

    Merci encore pour ton aide que tu m'a apporter.

  10. #10
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    voila j'ai ecris la fonction connex que voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?PHP
    function connex($base,$param)
    {
    	include_once($param.".inc.php");
    	$idcom=@mysql_connect(MYHOST,MYUSER,MYPASS);
    	$idbase=@mysql_select_db($base);
    	if(!$idcom | !$idbase)
    	{
    		echo "script type=text/javascript>";
    		echo "alert('Connexion Impossible à la base  $base')</script>";
    	}
    	return $idcom;
    }
    ?>
    j'ai modivier aussi le fichier ajout_pays.php et dont voici la partie php de celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?PHP
    include('connex.inc.php');
    if(!empty($_POST['Code'])&& !empty($_POST['Nom'])&& !empty($_POST['URL_Drapeau']))
    {
    	$ID_Pays="\N";
    	$Code= $_POST['Code'];
    	$Nom= $_POST['Nom'];
    	$URL_Drapeau= $_POST['URL_Drapeau'];
    	//Requête SQL
    	$requete="INSERT INTO pays VALUES('$ID_Pays','$Code','$Nom','$URL_Drapeau')";
    	$idcom=connex('lesbgay','myparam');
    	$result=mysql_query($requete,$idcom);
    	mysql_close($idcom);
    	if(!$result)
    	{
    		echo "<h2>Erreur d'insertion \n n'",mysql_erno(),":",mysql_erroe()."</h2>";
    	}
    	else
    	{
    		echo"<script type=\"text/javascript\">
    		alert ('Vous avez enregistré le pays et son numéro est : ".
    			   mysql_insert_id(),"')</script>";
    	}
    }
    else {echo "Formulaire à compléter!";}
    ?>
    lorsque j'essaye d'insérer un pays j'ai une erreur

    Erreur d'insertion n'
    Fatal error: Call to undefined function mysql_erno() in /var/www/************************/ajout_pays.php on line 39

    que voici :
    echo "<h2>Erreur d'insertion \n n'",mysql_erno(),":",mysql_erroe()."</h2>";



    Merci encore pour ton aide.

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il ne faut pas cacher les erreurs avec @ : on le réalise au niveau du serveur dans un environnement de production. Ce n'est pas très grave mais vous pouvez perdre du temps sur une erreur que vous ne verriez pas tout de suite.

    L'opérateur logique ou est || (deux barres obliques) c'est l'opérateur ou bit à bit sinon.

    Certains noms de fonctions comportent des coquilles : mysql_erroe => mysql_error et mysql_erno => mysql_errno (2 R). Sinon, normal que PHP parte en erreur puisqu'il ne connaît pas ces fonctions.

    Après ces corrections, nous devrions avoir l'erreur liée à MySQL (connexion ? requête ?).

  12. #12
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    voila j'ai corriger en ceci

    echo "<h2>Erreur d'insertion \n n'",mysql_errno(),":",mysql_error()."</h2>";

    et lorsque je lance le fichier j'ai plus que ceci comme message

    Erreur d'insertion n':


    on approche du résultat je le sans bien grace a toi

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Sûr ? Donc la connexion est en faute ? Il faudrait obtenir les messages d'erreur des fonctions mysql_connect et/ou mysql_select_db parce que vous avez dû de nouveau les cacher, au moins en partie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $idcom = mysql_connect(MYHOST,MYUSER,MYPASS) or die(mysql_error());
    $idbase = mysql_select_db($base) or die(mysql_error());
    Et il vaudrait mieux éviter de générer des messages d'erreur en Javascript surtout quand ils sont syntaxiquement erronés ou peuvent l'être ...

  14. #14
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    je viens de changer par tes ecris et j'ai tjrs pareil


    Erreur d'insertion n':


    mais j'ai laisser le javascript dans mon fichier

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Oui, normal que les erreurs soient perdues, la connexion est fermée juste avant donc trop tôt. Déplacez mysql_close en fin de script.

  16. #16
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    voila j'ai descendu la partie et j'ai cette erreur

    Erreur d'insertion n'1146:Table 'lesbgay.pays' doesn't exist


    bon ma table s'appelle pays et lesbgay la base donc une erreur encore de ma part, mais je vois pas ou la changer.

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par ptiteuf Voir le message
    ma table s'appelle pays et lesbgay la base
    Nous sommes d'accord or ce n'est pas le cas sinon MySQL ne dirait pas le contraire.

  18. #18
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    alalala le novice que je suis, j'avais oublier la majuscule a Pays, maintenant ca marche sans erreur avec mon code. Par contre si je mets:

    $Code = mysql_real_escape_string($_POST['Code']);
    $Nom = mysql_real_escape_string($_POST['Nom']);
    $URL_Drapeau = mysql_real_escape_string($_POST['URL_Drapeau']);
    j'ai les erreurs suivantes:


    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'apache'@'localhost' (using password: NO) in /var/www/****************************************/ajout_pays.php on line 29

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /var/www/*****************************************/ajout_pays.php on line 29

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'apache'@'localhost' (using password: NO) in /var/www/*******************************/ajout_pays.php on line 30

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /var/www/**********************************/ajout_pays.php on line 30

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'apache'@'localhost' (using password: NO) in /var/www/*********************************/ajout_pays.php on line 31

    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /var/**************************/ajout_pays.php on line 31

    donc j'ai remis mon propre code pour que ca marche pour le moment.


    Merci a toi encore pour ton aide

  19. #19
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Décidément, la connexion mysql doit déjà être établie pour pouvoir utiliser mysql_real_escape_string. Il faudrait donc également déplacer l'appel à la fonction connex avant l'affectation et protection des variables POST.

  20. #20
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    Citation Envoyé par julp Voir le message
    Décidément, la connexion mysql doit déjà être établie pour pouvoir utiliser mysql_real_escape_string. Il faudrait donc également déplacer l'appel à la fonction connex avant l'affectation et protection des variables POST.
    Il me semble qu'on l'avais deja mise avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?PHP
    include('connex.inc.php');
    if(!empty($_POST['Code'])&& !empty($_POST['Nom'])&& !empty($_POST['URL_Drapeau']))
    {
    	$ID_Pays="\N";
    	$Code = mysql_real_escape_string($_POST['Code']);
    	$Nom = mysql_real_escape_string($_POST['Nom']);
    	$URL_Drapeau = mysql_real_escape_string($_POST['URL_Drapeau']);
    	//Requête SQL
    	$requete="INSERT INTO Pays VALUES('$ID_Pays','$Code','$Nom','$URL_Drapeau')";
    	$idcom=connex('lesbgay','myparam');
    	$result=mysql_query($requete,$idcom);
    	if(!$result)
    	{
    		echo "<h2>Erreur d'insertion \n n'",mysql_errno(),":",mysql_error()."</h2>";
    	}
    	else
    	{
    		echo"<script type=\"text/javascript\">
    		alert ('Vous avez enregistré le pays et son numéro est : ".
    			   mysql_insert_id(),"')</script>";
    		mysql_close($idcom);
    	}
    }
    else {echo "Formulaire à compléter!";}
    ?>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème d'insert mysql
    Par franck31 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/10/2011, 15h25
  2. [AC-2007] problème formulaire insertion
    Par virtual_bug dans le forum IHM
    Réponses: 1
    Dernier message: 18/06/2011, 16h13
  3. [1.x] Problème Formulaire insertion photo
    Par fastone650 dans le forum Symfony
    Réponses: 4
    Dernier message: 01/12/2010, 11h55
  4. [MySQL] problème d'insertion de données dans MySQL à partir d'un formulaire
    Par centia28 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/08/2010, 14h31
  5. Problème d'insertion (mySQL)
    Par Nimothenicefish dans le forum JDBC
    Réponses: 4
    Dernier message: 06/06/2008, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo