Problème avec un INSERT INTO php

Résolu/Fermé
fillthevoid Messages postés 5 Date d'inscription mercredi 6 février 2013 Statut Membre Dernière intervention 6 février 2013 - Modifié par fillthevoid le 6/02/2013 à 10:07
fillthevoid Messages postés 5 Date d'inscription mercredi 6 février 2013 Statut Membre Dernière intervention 6 février 2013 - 6 févr. 2013 à 11:10
Bonjour,
J'ai un petit problème avec ma requête insert qui ne fait pas son boulot quelqu'un aurai une idée?
Merci d'avance pour toute les réponses. Voici mon code.

<form method="POST" action=""> 
Nom:*<br/><input type="text" name="nom" value=""><br/> 
Prenom:*<br/><input type="text" name="prenom" value=""><br/> 
Ville:<br/><input type="text" name="ville" value=""><br/> 
Adresse:<br/><TEXTAREA name="adresse"></TEXTAREA><br/> 
Code postal:<br/><input type="text" name="code_postal" value=""><br/> 
Téléphone:*<br/><input type="text" name="telephone" value=""><br/> 
Email:*<br/><input type="text" name="email_contact" value=""><br/> 
Message:*<br/><TEXTAREA name="message"></TEXTAREA><br/><br/><br/> 
<input type="submit" name="envoyer" value="Envoyer"> 
</form> 

<?php 
if (isset($_POST['envoyer']))  
{ 
 extract($_POST); 
 $_SESSION[nom] = $nom; 
 $_SESSION[prenom] = $prenom; 
 $_SESSION[adresse] = $adresse; 
 $_SESSION[code_postal] = $code_postal; 
 $_SESSION[ville] = $ville; 
 $_SESSION[email_contact] = $email_contact; 
 $_SESSION[telephone] = $telephone; 
 $_SESSION[message] = $message; 
 $message = ""; 

 $mail=verifEmail($email_contact); 
 if($mail == null AND $mail == "") 
 { 
  $message .= "Adresse Email non valide \\n"; 
  echo $_SESSION [email_contact]; 
 } 
 if ($prenom== null AND $prenom == "")  
 { 
  $message .= "Prenom non valide \\n"; 
  echo $_SESSION [prenom]; 
 } 
 if ($nom== null AND $nom == "") 
 { 
  $message .= "Nom non valide \\n"; 
  echo $_SESSION [nom]; 
 } 

 if ($code_postal==null AND $code_postal=="" AND strlen(code_postal)!=5)  
 { 
  $message .= "Code postal non valide \\n"; 
  echo $_SESSION [Code_postal]; 
 } 

 if ($ville==null AND $ville=="")  
 { 
  $message .= "ville non valide \\n"; 
  echo $_SESSION [ville]; 
 } 

 if ($telephone==null AND $telephone=="" AND strlen(telephone)<10 AND strlen(telephone)>15)  
 { 
  $message .= "Téléphone non valide \\n"; 
  echo $_SESSION [telephone]; 
 } 

 if ($adresse==null AND $adresse=="")  
 { 
  $message .= "Adresse non valide \\n"; 
  echo $_SESSION [adresse]; 
 } 

 if ($message != "")  
 { 
  echo popUp($message); 
  echo $_SESSION [message]; 

 } 
 else 
 { 
  mysql_connect("localhost", "root", "root"); 
  mysql_select_db("projet_bdd"); 
  $requete_insert = "INSERT INTO contact VALUES '".$telephone."', '".$ville."', '".$nom."', '".$prenom."', '".$email_contact."', '".$adresse."', '".$code_postal."', '".$message."'"; 
  $resultat_insert = query($requete_insert); 

  unset($_SESSION['nom']); 
  unset($_SESSION['prenom']); 
  unset($_SESSION['adresse']); 
  unset($_SESSION['code_postal']); 
  unset($_SESSION['email_contact']); 
  unset($_SESSION['ville']); 
  unset($_SESSION['telephone']); 
  unset($_SESSION['message']); 
   
   
 } 
 /*refresh(0, "php", "index?page=gestion_repertoire");*/ 

} 
?>

Et le code la fonction query :

function query($req)
{
	$resultat = mysql_query($req);
	return $resultat;
}

4 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 565
6 févr. 2013 à 11:01
Je ne sais pas si c'est facultatif ou pas, mais les VALUES doivent être entre parenthèses.

Sinon tu peux commencer par afficher $requete_insert et l'exécuter dans phpmyadmin, ça te donnera peut être une indication sur ton erreur.
1
fillthevoid Messages postés 5 Date d'inscription mercredi 6 février 2013 Statut Membre Dernière intervention 6 février 2013
6 févr. 2013 à 11:10
Excellente réaction et oui ca aide beaucoup vu que c'est cela qui fesiat qu'il prenait en compte ma double quote qui se trouvait devant le insert. MERCI DE VOS RÉPONSE A TOUS
0
Profil bloqué
6 févr. 2013 à 09:58
peut etre remplacer
$resultat_insert = query($requete_insert);

par

$resultat_insert = mysql_query($requete_insert);
0
fillthevoid Messages postés 5 Date d'inscription mercredi 6 février 2013 Statut Membre Dernière intervention 6 février 2013
6 févr. 2013 à 10:05
Non désolé je vais up mon post avec la fonction query. J'ai testé mes variable qui contiennent bien mes valeurs que j'ai saisie dans mon form.
0
Utilisateur anonyme
6 févr. 2013 à 10:42
Bonjour

Tu ne précises pas les noms des champs dans ton INSERT, les as-tu bien tous mis et dans le bon ordre ?

Sinon, pour diagnostiquer modifie ton appel à mysql_query :
$resultat = mysql_query($req) or die(mysql_error());
0
Utilisateur anonyme
6 févr. 2013 à 10:46
Remarque : toutes tes conditions sont fausses, il te faut des OR et non pas des AND. Et il faut échapper les données que tu mets dans ta requête avec mysql_real_escape_string
0
fillthevoid Messages postés 5 Date d'inscription mercredi 6 février 2013 Statut Membre Dernière intervention 6 février 2013
6 févr. 2013 à 10:47
Merci pour ta réponse j'ai essayé de mettre le nom des champs normallement pas obligatoire ça n'a rien changé mais j'ai quasiment trouvé le problème en fait j'ai une cote en trop dans la requête. Celle du début apparait celle qui précède le INSERT... je vois pas vraiment pourquoi elle aparait mais bon je vais essayer de la faire disparaitre.
0
Bien sûr que non les noms des chamsp ne sont pas obligatoires. Mias si tu ne les mets pas, il faut mettre les VALEURS pour tous les champs, et dans le bon ordre, sinon mysql ne peut pas deviner à quel champ correspond chaque valeur.
Celle du début apparait celle qui précède le INSERT Qu'esct-ce que ça veut dire, ça ? Je ne vois pas de quote en trop dans ta requête, celle qu'il y a avant le mot SELECT est un délimiteur de chaîne et ne fait en aucun cas partie de la requête
0
fillthevoid Messages postés 5 Date d'inscription mercredi 6 février 2013 Statut Membre Dernière intervention 6 février 2013
6 févr. 2013 à 11:06
$resultat_insert = mysql_query("INSERT INTO contact VALUES '".$ville."', '".$telephone."', '".$nom."', '".$prenom."', '".$email_contact."', '".$adresse."', '".$code_postal."', '".$message."'");
et mysql répond ceci :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Les Houches', '0450543572', 'Vantourout', 'Benoit', 'vantourout.ben@gmail.com',' at line 1.
Regarde avant les houches il y a une double quote celle qui me pose problème... et j'ai bien mis toute les valeur de ma table dans le bonne ordre.
0