INSERT qui ne marche plus [Résolu]

Euskalor 40 Messages postés mardi 4 mars 2008Date d'inscription 22 avril 2010 Dernière intervention - 24 avril 2008 à 19:50 - Dernière réponse : Euskalor 40 Messages postés mardi 4 mars 2008Date d'inscription 22 avril 2010 Dernière intervention
- 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 !
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
TheGorgo 224 Messages postés mercredi 23 mai 2007Date d'inscription 8 septembre 2014 Dernière intervention - 24 avril 2008 à 20:57
3
Merci
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.

Merci TheGorgo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de TheGorgo
Meilleure réponse
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 24 avril 2008 à 21:10
3
Merci
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...

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de neigedhiver
Meilleure réponse
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 24 avril 2008 à 21:26
3
Merci
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.

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de neigedhiver
Euskalor 40 Messages postés mardi 4 mars 2008Date d'inscription 22 avril 2010 Dernière intervention - 24 avril 2008 à 21:05
0
Merci
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.
Commenter la réponse de Euskalor
Euskalor 40 Messages postés mardi 4 mars 2008Date d'inscription 22 avril 2010 Dernière intervention - 24 avril 2008 à 21:19
0
Merci
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 !
Commenter la réponse de Euskalor
Euskalor 40 Messages postés mardi 4 mars 2008Date d'inscription 22 avril 2010 Dernière intervention - 24 avril 2008 à 21:30
0
Merci
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 )
Commenter la réponse de Euskalor
Euskalor 40 Messages postés mardi 4 mars 2008Date d'inscription 22 avril 2010 Dernière intervention - 24 avril 2008 à 21:36
0
Merci
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 :)
Commenter la réponse de Euskalor

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.