INSERT qui ne marche plus

[Résolu]
Signaler
Messages postés
40
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
22 avril 2010
-
Messages postés
40
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
22 avril 2010
-
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

Messages postés
224
Date d'inscription
mercredi 23 mai 2007
Statut
Membre
Dernière intervention
8 septembre 2014
1
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.
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
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...
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
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.
Messages postés
40
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
22 avril 2010

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.
Messages postés
40
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
22 avril 2010

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 !
Messages postés
40
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
22 avril 2010

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 )
Messages postés
40
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
22 avril 2010

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 :)