Probleme php et mysql

Résolu
Bonjour, je suis actuellement en train de refaire mon site, et donc je'ai décidé de faire un formulaire de contact.

Seulement je suis un petit débutant en php, et j'ai un peu du mal ^^

Donc j'ai un forumalire en html avec 5 valeurs : prenom, nom, email, motif, et la case pour le texte.

code html :
form name='formulaire_contact' action='traitement_contact.php' method='post' onSubmit="return verification()">

<table>
<tr><td>Votre nom : </td><td><input name='nom' type='text' size='50'></td></tr>
<tr><td>Votre prénom : </td><td><input name='prenom' type='text' size='50'></td></tr>
<tr><td>Votre email</td><td><input name='email' type='text' size='50'></td></tr><br />
<tr><td>Motif de votre message :</td><td><input name='sujet' type='radio' value='renseignement'>Renseignement<br>
<input name='sujet' type='radio' value='probleme technique'>Demande d'interventions<br>
<input name='sujet' type='radio' value='partenariat'>Partenariat</td></tr><br />
<tr><td>Votre message</td><td><textarea name='texte' cols='50' rows='20'></textarea></td></tr>
<tr><td><input name='annuler' type='reset' value='Annuler'></td><td>
<input name='soumettre' type='submit' value='Envoyer'></td></tr>
</table>

</form>


Puis je fais ma page traitement_contact pour le script php qui stocke les valeur dans la bdd :

code php :

<?php
$dbhost = "srv";
$dbuser ="user";
$dbpass="pass";
$dbbase="BDD";
@mysql_connect($dbhost,$dbuser,$dbpass) or die("La Connexion a échouée");  @mysql_select_db($dbbase) or die("La Base $dbbase n'existe pas");
$enregistrement = "INSERT INTO formulaire_contact (nom,prenom,email,sujet,texte)  VALUES ('$nom','$prenom','$email','$sujet',$texte)";    
mysql_query($enregistrement);
mysql_close();
?> 


Bien sur je déclare les infos de connexion au début du script ;), je vais vérifier ensuite sur la table formulaire_contact que j'ai préalablement créer, mais elle n'a aucun enregistrement.

Si vous pouvez m'aider à y voir plus clair, ce serait super :)

merci à vous cher CCMiste.

9 réponses

Résumé de la discussion

Un formulaire de contact en HTML et un script PHP destiné à enregistrer les données dans une base MySQL présentent des erreurs bloquantes et des messages de syntaxe lors de l'envoi. Plusieurs réponses proposent des correctifs simples, comme ajuster la construction de la requête et corriger les guillemets, afin d'envoyer correctement les valeurs nom, prénom, email, sujet et texte. D'autres interventions soulignent l'importance de gérer les NULL et de vérifier que les valeurs POST sont bien reçues avant l'insertion, avec des tests et des ajustements dans le code. L'échange aboutit à une correction ciblée où la ligne d'insertion est ajustée et les tests affichent les valeurs POST, confirmant l'enregistrement lorsque les champs ne sont plus NULL.

Bobot (l’IA à votre service)
  1. Contributeur
    deja, je ne vois pas la balise <form method=POST action="traitement_contact .php"> </form> qui doit encadrer l'ensemble des champs à envoyer ....
    1. Contributeur
      et, bon, je n'ai pas l'habitude de travaille en PHP tous les jours, mais :
      VALUES ('$nom','$prenom','$email','$sujet',$texte)";
      j'aurai mis les variables plutot comme ca: $_POST['nom'] ...
  2. Contributeur
    eh bien j'essaye ça de suite et vous tient au courant, merci
    1. Contributeur
      Ok maintenant, j'ai un retour d'erreur, :

      Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/j/jx/jxv/jxv2.perso.sfr.fr/public_html/traitement_contact.php on line 7
      1. Très bien mais pourrais-tu montrer les lignes 6,7 et 8 s'il te plait...
      2. Contributeur
        Bien sur :)
        @mysql_connect($dbhost,$dbuser,$dbpass) or die("La Connexion a échouée");  @mysql_select_db($dbbase) or die("La Base $dbbase n'existe pas");
        
        $enregistrement = "INSERT INTO formulaire_contact (nom,prenom,email,sujet,texte)  VALUES ($_POST['nom'], $_POST['prenom'], $_POST['email'], $_POST['sujet'], $_POST['texte'])";    
        
        mysql_query($enregistrement);
        
        
      3. Remplace ta ligne 7 par ceci :
        $enregistrement = "INSERT INTO formulaire_contact (nom,prenom,email,sujet,texte)  VALUES ('".$_POST['nom']."','".$_POST['prenom']."','".$_POST['email']."','".$_POST['sujet']."','".$_POST['texte']."')";    
      4. Contributeur
        Alors j'ai plus d'erreur, mais toujours pas d'enregistrement dans la table.

        Excuse moi pour le dérangement et merci pour l'aide que tu m'apporte ^^.
    2. Contributeur
      as tu rajouté la balise <form> comme je t'ai indiqué plus haut ?

      <form method="POST" action="traitement_contact .php">
      <table>
      <tr><td>Votre nom : </td><td><input name='nom' type='text' size='50'></td></tr>
      <tr><td>Votre prénom : </td><td><input name='prenom' type='text' size='50'></td></tr>
      <tr><td>Votre email</td><td><input name='email' type='text' size='50'></td></tr><br />
      <tr><td>Motif de votre message :</td><td><input name='sujet' type='radio' value='renseignement'>Renseignement<br>
      <input name='sujet' type='radio' value='probleme technique'>Demande d'interventions<br>
      <input name='sujet' type='radio' value='partenariat'>Partenariat</td></tr><br />
      <tr><td>Votre message</td><td><textarea name='texte' cols='50' rows='20'></textarea></td></tr>
      <tr><td><input name='annuler' type='reset' value='Annuler'></td><td>
      <input name='soumettre' type='submit' value='Envoyer'></td></tr>
      </table>

      </form>
      1. Contributeur
        oui elle y était déjà, regarde bien mon premier post ;)
      2. Contributeur
        fais un petit:
        echo: "test" .$_POST['nom']."','".$_POST['prenom']."','".$_POST['email']."','".$_POST['sujet']."','".$_POST['texte']."')
        pour voir si la page recoit bien tout ....
      3. Contributeur
        :/ :

        Parse error: syntax error, unexpected ':' in /var/www/j/jx/jxv/jxv2.perso.sfr.fr/public_html/traitement_contact.php on line 2
      4. C'est parce qu'il n'y a pas de ":" après le echo...
        ;-)
      5. Contributeur
        youps, faute de frappe ;)
    3. Contributeur
      Donc la page reçoit bien les données a ce que j'ai compris, et donc le problème se situerai au niveau de la BDD.

      J'ai essayé un test de connexion :

      <?php    
      $dbhost = "BDD";  
      $dbuser ="USER";  
      $dbpass="PASS";  
      @mysql_connect($dbhost,$dbuser,$dbpass) or die("La Connexion a échouée");    echo "la connexion a réussie";    
      mysql_close();  
      ?>  
      


      Le test est concluant par "la connexion à réussi"
      J'ai inscrit la bonne table, et les champ sont correct.

      Le savoir est universel et doit être partagé par tous, les échanges nous enrichissent.
      (@)-JYX8X8-(@) ou JYX pour pas se prendre la tête ^^
      1. Contributeur
        essayes de tester ta requete directement depusi la console SQL de phpmyadmin ...
      2. Contributeur
        Je vois bien la console, mais je comprend pas ce que tu veux que je tape comme requête.
      3. Contributeur
        "INSERT INTO formulaire_contact ('nom','prenom','email','sujet','texte') VALUES ('martin','roger','roger@ratata.com','sujet du mail','texte du mail')";
      4. Contributeur
        "INSERT INTO formulaire_contact ('nom','prenom','email','sujet','texte') VALUES ('martin','roger','roger@ratata.com','sujet du mail','texte du mail')";
      5. Contributeur
        et d'ailleurs dans ton code:
        VALUES ('$nom','$prenom','$email','$sujet',$texte)";
        pourquoi toutes les variables sont entre ' ' et pas $texte ????
    4. Contributeur
      Bon j'avance un peu, j'ai maintenant des enregistrements dans la table, mais les valeurs ne s'affiche pas ;)
      1. Contributeur
        J'ai compris pourquoi il n'y avait pas d'enregistrements, j'avais coché NULL, ce qui fait qu'il n'accepte les enregistrements que si il y a une valeur a rentré.

        Donc quand j'ai décoché cette case, les enregistrement se sont fait, certes sans valeur, le problème vient donc du fait que ces valeurs ne sont pas envoyé à la base => script php en cause ;)

        Je me remet au boulot, par contre si vous avez des idée je suis preneur.
    5. Contributeur
      C'est bon j'ai finalement réussi, merci pour l'aide que vous m'avez apporté ;)