INSERT qui ne marche plus

Résolu
Euskalor Messages postés 40 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 avril 2010 - 24 avril 2008 à 19:50
Euskalor Messages postés 40 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 avril 2010 - 24 avril 2008 à 21:36
Bonjour à toutes et à tous !!

Je rencontre un prblème qui a le don de m'énerver.
Dans mon site j'utilise plsuieurs fois la requête INSERT INTO pour différentes tables et elle fonctionne bien. Mais alors que je crée une nouvelle page pour envoyer des donnée dans une nouvelle table la requête ( INSERT INTO ) ne veux pas marcher !! Et je ne vois pas pourquoi alors que les autres marchent !!!!
Les seuls changement par rapport à celle qui ne marche est le nom de la table et biensure les valeurs !

Alors soit je ne vois pas une erreur que j'ai fait soit je ne comprends pas.

Voici le code qui se rebelle :

<form action="liens_bo.php" method="post">

Type :
<select name="choix"><option value="">Sélection du type</option>
<?php
$typeArray = array (
1=>"meteo",
2=>"forum",
3=>"telechargement",
4=>"divers"
);




 for($i=1;$i<=count($typeArray);$i++){
 echo"<option value="".$i."">".$typeArray[$i]."</option>\n";}
?>
</select>

Nom :

Adresse :

</td>
<td class="tdContenuSouche">

Description :
<textarea name="coment" cols="50" rows="6" id="champ"></textarea>

</td></tr><tr>
<td colspan="2" class="tdContenuSouche">

</form>
<?php
$dte = date ("d / m / Y");
if($_POST["poster"]=="enregistrer" AND empty($_POST["nom"])){
 echo"
Nom absent
";
}elseif($_POST["poster"]=="enregistrer" AND empty($_POST["adresse"])){
 echo"
Adresse absente
";
}elseif($_POST["poster"]=="enregistrer"AND !empty($_POST["nom"]) AND !empty($_POST["adresse"])){


 $query = "INSERT INTO lien (add, nom_add, comment, date, type_ls) VALUES ('" .$_POST["adresse"]. "', '". $_POST["nom"]. "', '". $_POST["coment"] ."', '".$dte."', '".$typeArray[$_POST["choix"]]."')";
 $result = mysql_query($query) or die ("
Enregistrement impossible : ".$query." !
");


 if(!$result)
   echo"
Erreur lors de l'enregistrement veuillez recommencer

";
  else
   echo"
Liens enregistré

";
}
?>

Nom de ma table : lien

Ma table MySQL du type

id_li int(11) unsigned NOT NULL Auto_increment <- Index
add VARCHAR 100 Latin1_swedich_ci
etc....

L'erreur qui s'affiche est celle de :  $result = mysql_query($query) or die ("
Enregistrement impossible : ".$query." !
");

A savoir que celui-ci est dans une cellule d'un tableau ( <td></td > ). J'ai un code similaire mais sans le Array qui marche trés bien.
J'ai essayé d'enlever le Array , ou la date ou d'autre valeur en les prenant une par une et rien n'y fait ça ne marche toujours pas.

Sinon j'utilise du PHP 4 ( je ne connais que lui )
Je travaille avec Dreamweaver
Et mon serveur est du type Apache MySQL ( fonction en interne )

Voilà, je ne comprends pas pourquoi cet INSERT ne marche pas alors que d'autres marche.
Ca vient de mon serveur ?

Merci d'avance pour vos réponses !

7 réponses

Utilisateur anonyme
24 avril 2008 à 20:57
salut

le plus simple pour voir un probleme dans une requete sql c de mettre
die (mysql_error())

normalement ca devrait téexpliker ce qui va pas.
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
24 avril 2008 à 21:10
Salut,

Bon... Pour le debug, comme le souligne TheGorgo, afficher l'erreur MySQL avec mysql_error() ne peut pas faire de mal... Afficher également la requête SQL peut être une bonne idée, pour voir à quoi elle ressemble une fois construite.

Sinon...
Tu te casses la tête pour afficher tes chaines, à échapper les guillemets doubles du code html, alors que tu pourrais tout simplement utiliser des guillemets simples pour tes echo :

echo '
Liens enregistré

';

Pour ta requête, tu peux utiliser sprintf() qui permet d'y voir plus clair :

$query = sprintf("INSERT INTO lien (add, nom_add, comment, date, type_ls) VALUES ('%s', '%s', '%s', '%s', '%s')", $_POST['adresse'], $_POST['nom'], $_POST['coment'], $dte, $typeArray[$_POST['choix']]);

Ca évite de se mélanger dans les guillemets, simples, doubles, ouverts, fermés...

Enfin, tu dis que la table concernée est la table lien, mais tu donnes le début (sic) de la structure de la table type... Je comprends pas pourquoi...
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
24 avril 2008 à 21:26
Re,

ADD est un mot réservé de MySQL, tu ne peux pas l'utiliser pour un nom de champ, un nom de table, ou autre.
3
Euskalor Messages postés 40 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 avril 2010
24 avril 2008 à 21:05
Humm je te remercie j'ai essayé de le faire mais je me rappellais plus la fonction ! J'essayais avec ECHO $result;

Je regarde ce que ça donne et je donne une suite pour clore ( je l'espère ) le sujet.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Euskalor Messages postés 40 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 avril 2010
24 avril 2008 à 21:19
Bon il me dit :

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 'add, nom_add, comment, date, type_ls) VALUES ('rth', 'rth', 'rth', '24 / 04 / 20' at line 1

Ok je veux bien mais j'ai relu et rerelu ma requetête mais je ne vois pas la faute !!

 $query = "INSERT INTO lien (add, nom_add, comment, date, type_ls) VALUES ('" .$_POST["adresse"]. "', '". $_POST["nom"]. "', '". $_POST["coment"] ."', '".$dte."', '".$typeArray[$_POST["choix"]]."')";

Faut que je consulte un occuliste ? Je ne vois vraiment pas l'erreur ! Les autres requètes INSERT que j'utilise marche trés bien, j'ai l'habitude de m'en servir en plus !!

Si c'était une erreur de virgule ou de parenthèse ça me mettrais un PARSE ERROR !!

C'est pour ça que je ne comprends pas.

Ca viens du nom de mes champs ? Il n'aime pas le changement ? ( add et type _ls par exemple ) c'est le _ qui n'est pas dans tous les noms des champs qu'il n'aime pas ?

Je vais finir par avoir honte, c'est pourtant une requète basique !
0
Euskalor Messages postés 40 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 avril 2010
24 avril 2008 à 21:30
Pour les " dans les echo j'ai appris le php en faisant comme ça. Je sais qu'on peut faire avec ' . Mais bon, les habitudes .....

Mais j'essayerai de faire comme tu dis histoire de rendre mon code plus clair ! En effet. 

Sinon je ne connaissait pas cette façon d'écrire une requète. C'est plus clair en effet !

Mais je ne trouve toujours pas mon erreur ( quel ane que je suis )
0
Euskalor Messages postés 40 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 avril 2010
24 avril 2008 à 21:36
Un grand merci à vous deux !!! Je ne savais pas dutout que ADD était un mot réservé SQL !!! Je pouvais toujours chercher

Vous venez de sauver mon ordi car je devenait dingue de ne pas comprendre pourquoi cet INSERT ne marchais pas  et les autres oui ( pas de nom de champs add ) !!

Encore merci beaucoup bonne soirée ! J'espère que ce post va aider aussi du monde :)
0
Rejoignez-nous