Erreur de mysql_query

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Erreur de mysql_query

par dunbar » 19 juil. 2008, 17:01

Pourrais t'on voir la structure de ta table :?:

par scadox » 18 juil. 2008, 18:50

apret plusieurs test de form sur une page .php seul ... j'avais encore le problème...

j'ai esseyer 1 POST par 1 et voila j'ai trouver le problème !!
$id_form            = mysql_real_escape_string($_POST['id_form']); 
$references_form    = mysql_real_escape_string($_POST['references_form']); 
$titre_form         = mysql_real_escape_string($_POST['titre_form']); 
$description_form   = mysql_real_escape_string($_POST['description_form']); 
$quantite_form      = mysql_real_escape_string($_POST['quantite_form']); 
$prix1_form         = mysql_real_escape_string($_POST['prix1_form']); 
$rabais_form        = mysql_real_escape_string($_POST['rabais_form']);

//mysql_query(" UPDATE docs_lignes SET references=\"$references_form\" WHERE id='$id_form' ") or die('Erreur !<br>'.$sql.'<br>'.mysql_error());
mysql_query(" UPDATE docs_lignes SET titre=\"$titre_form\" WHERE id='$id_form' ") or die('Erreur !<br>'.$sql.'<br>'.mysql_error());
mysql_query(" UPDATE docs_lignes SET description=\"$description_form\" WHERE id='$id_form' ") or die('Erreur !<br>'.$sql.'<br>'.mysql_error());
mysql_query(" UPDATE docs_lignes SET quantite=\"$quantite_form\" WHERE id='$id_form' ") or die('Erreur !<br>'.$sql.'<br>'.mysql_error());
mysql_query(" UPDATE docs_lignes SET prix1=\"$prix1_form\" WHERE id='$id_form' ") or die('Erreur !<br>'.$sql.'<br>'.mysql_error());
mysql_query(" UPDATE docs_lignes SET rabais=\"$rabais_form\" WHERE id='$id_form' ") or die('Erreur !<br>'.$sql.'<br>'.mysql_error());
comme sa, il me donne encore l'erreur si je supprime la ligne UPDATE ...references la tout functionne... mais 'references' es écrit correctement comme dans ma base de donnée.

Je vous remercie a tous de mavoir aidée ! passez une belle journée a tous

par dunbar » 18 juil. 2008, 18:39

le href=?... sa functionne si tu reste dans le memme fichier .. comme moi je j'essey de faire le tout dans le memme fichier possible comme exemple config.php et index.php

Pour les " " au lieu de ' ' je fait ceci car si exemple le texte dans le input est [ j'aime les fruits ] .. il va seulement prendre le [ j ] et non le reste c'est pour sa que je met des "

DrEAM's a écrit:
PHP:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs="$id" ORDER BY id ASC";

remplace par:
PHP:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs='$id' ORDER BY id ASC";
j'ai pas de problème pour faire afficher les entrées de MySQL ... ces seulement lorsque je click sur le 'SUBMIT' du form qu'il ne veut pas UPDATE ..

dunbar lorsque j'insert ton code ... aucun erreur ne s'affiche ... comme si le UPDATE serais ok mais dans MySql rien ne change via phpmyadmin[/b]
et si tu affiche ta requete update cela donne quoi :?:

par scadox » 18 juil. 2008, 18:34

le href=?... sa functionne si tu reste dans le memme fichier .. comme moi je j'essey de faire le tout dans le memme fichier possible comme exemple config.php et index.php

Pour les \" \" au lieu de ' ' je fait ceci car si exemple le texte dans le input est [ j'aime les fruits ] .. il va seulement prendre le [ j ] et non le reste c'est pour sa que je met des \"

DrEAM's a écrit:
PHP:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs=\"$id\" ORDER BY id ASC";

remplace par:
PHP:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs='$id' ORDER BY id ASC";
j'ai pas de problème pour faire afficher les entrées de MySQL ... ces seulement lorsque je click sur le 'SUBMIT' du form qu'il ne veut pas UPDATE ..

dunbar lorsque j'insert ton code ... aucun erreur ne s'affiche ... comme si le UPDATE serais ok mais dans MySql rien ne change via phpmyadmin[/b]

a quoi sert le $id
Je vais expliquer..

La page présent .. es un Document ( devis ou facture)
donc exemple ?section=modererfacture&id=\"".$data_docs['id']."\"

dans chaques Document ( docs = mysql )
il a des lignes de codes ( docs_lignes = mysql )

dans chaques lignes : comme ci-dessous = 3
Image
les 3 docs_lignes s'affiche bien dans le tableaux

Mon lien [ ajouter une ligne de produit ] functionne tres bien ! =
echo "[ <a href=?section=modererdoc&ajouter=ligne&id=$id><b>Ajouter une ligne de produit</b></a> ]";
if($ajouter=$_GET['ajouter']=="ligne")
{
$id=$_GET['id'];
mysql_query(" INSERT INTO docs_lignes (id_docs) VALUES (\"$id\")") or die('Erreur !<br>'.$sql.'<br>'.mysql_error());
echo "<script type=\"text/javascript\">function redirection_js(){ x=setTimeout(\"window.location.href='?section=modererdoc&id=$id'\",1); }    </script><body onLoad=\"redirection_js();\">";
}
[/b]

c'est seulement mon UPDATE qu'il functionne pas avec mon form pour modifier la ligne de produit

Erreur MySQL :
UPDATE docs_lignes SET references = 'fh1', titre = 'Forfait No.1', description = '1 nom de domaine gratuit\r\n500 megs d\'espaces\r\n2 gig de bandes passantes\r\n5 courriers électroniques\r\n2 base de données', quantite = '12', prix1 = '4.95', rabais = '' WHERE id = '1'
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 'references = 'fh1', titre = 'Forfai' at line 3

par dunbar » 18 juil. 2008, 18:27

Une question $id il correspond a quoi :?:

par chrislabricole » 18 juil. 2008, 18:18

Voila que rien functionne encore :S c'est vraiment bizare toujour la memme erreur..
Et..... quelle est ton erreur ? :roll:

par DrEAM's » 18 juil. 2008, 16:06

tout dépend si cela redirige sur le même fichier ou pas ;)

par dunbar » 18 juil. 2008, 15:53

Question stupide probablement :wink:
Mais ceci me semble bizarre :
<form action='?section=modererdoc&moderer=form&id
Ne manque t'il pas le fichier.php :?:

par Patriboom » 18 juil. 2008, 15:26

Il semble y avoir un problème de guillemets et apostrophes, c'est classique.
Pour le trouver, commence par sotir ton FORM de la zone <?PHP la coloration de ta syntaxe par ton éditeur te permettra de repérer les fautes de frappe, les " et ' en trop ou en manque dans ton FORM.
Quand tout cela sera correct, alors tu pourras le planter dans ton ECHO

Tu peux aussi, pour repérer une faute de " ou ', avec FireFox, faire "Afficher la source". FF colorera alors le texte selon la syntaxe HTML et tu pourras rapidement repérer ton erreur.

par DrEAM's » 18 juil. 2008, 14:38

oui mais je trouve cela plus simple a comprendre après quand il y a trop de \ partout on ne s'y retrouve plus(enfin pour moi^^)
Après je ne sais pas désoler j'ai bau chercher rien ne viens. :?

par guilt92 » 18 juil. 2008, 14:29

$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs="$id" ORDER BY id ASC";  
remplace par:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs='$id' ORDER BY id ASC";  
enjoy :mrgreen:
:shock: :shock: :shock:
les deux syntaxes que tu proposes sont rigoureusement identiques... le \ permet d'échapper le " donc faire un
echo ""bonjour""; //affichera "bonjour";
echo "'bonjour'"; //affichera 'bonjour'; 
donc ca revient au même sauf que dans un cas c'est des simple quotes et dans l autre des doubles...

Sinon scadox tu as fais quoi exactement ? Toujours la meme erreur sur la même requete ou celle que tu montres par la suite ? montre nous ta requete qui marche pas et le code correspondant stp...

par DrEAM's » 18 juil. 2008, 13:50

$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs=\"$id\" ORDER BY id ASC";  
remplace par:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs='$id' ORDER BY id ASC";  
enjoy :mrgreen:

par scadox » 18 juil. 2008, 13:30

Voila que rien functionne encore :S c'est vraiment bizare toujour la memme erreur..

voici mon form :
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs=\"$id\" ORDER BY id ASC"; 
$req_docs_lignes = mysql_query($sql_docs_lignes) or die('Erreur !<br>'.$sql_docs_lignes.'<br>'.mysql_error()); 
while($data_docs_lignes = mysql_fetch_assoc($req_docs_lignes)) 
{
echo " 
<tr bgcolor=\""; echo switchcolortable(); echo "\">
<td>
<form action='?section=modererdoc&moderer=form&id=".$data_docs['id']."' method='POST' name='".$data_docs_lignes['id']."'>
<input type='hidden' name='id_form' size='8' value='".$data_docs_lignes['id']."'>
<center><input type='text' name='references_form' size='8' value='".$data_docs_lignes['references']."'>
<td><center><input type='text' name='titre_form' size='25' value='".$data_docs_lignes['titre']."'>
<td><center><textarea name='description_form' cols='45' rows='3'>".$data_docs_lignes['description']."</textarea>
<td><center><input type='text' name='quantite_form' size='5' value='".$data_docs_lignes['quantite']."'>
<td><center><input type='text' name='prix1_form' size='5' value='".$data_docs_lignes['prix1']."'>
<td><center><input type='text' name='rabais_form' size='5' value='".$data_docs_lignes['rabais']."'>

<td><center><br><input type='submit' name='submit' value='Save'> <a href=?section=modererdoc&supprimer=ligne&idligne=".$data_docs_lignes['id']."&id=$id><img border=0 src=img/delete.png alt='Supprimer cette ligne'></a> </form>
";
}
Image

Je vous remercie pour le temps que vous prenez pour esseyer de m'aider.

par dunbar » 17 juil. 2008, 22:33

Salut.

N'oublie pas de te protégé contre les injections
Proposition de correction:
<?php

$id_form            = mysql_real_escape_string($_POST['id_form']);
$references_form    = mysql_real_escape_string($_POST['references_form']);
$titre_form         = mysql_real_escape_string($_POST['titre_form']);
$description_form   = mysql_real_escape_string($_POST['description_form']);
$quantite_form      = mysql_real_escape_string($_POST['quantite_form']);
$prix1_form         = mysql_real_escape_string($_POST['prix1_form']);
$rabais_form        = mysql_real_escape_string($_POST['rabais_form']);


            $sql = " UPDATE docs_lignes
                            SET
                                references    = '".$references_form."',
                                titre         = '".$titre_form."',
                                description   = '".$description_form."',
                                quantite      = '".$quantite_form."',
                                prix1         = '".$prix1_form."',
                                rabais        = '".$rabais_form."'
                           WHERE
                                id            = '".$id_form."'";

                            $resultat = mysql_query($sql) or die('Erreur MySQL : ton message ici !<br>'.$sql.'<br>'.mysql_error());

?>

par chrislabricole » 17 juil. 2008, 20:42

C'est pas une erreur du mysql_query() c'est tout simplement une erreur de ta requête SQL, donc, si un modo, passe ici, c'est dans le forum SQL & bases de données :)

Pour ton problème, il est préférable de mettre des apostrophes ( " ) dans ton <form> ;)


Pour ta requête, il est préférable également de pas avoir recours au backslash ( \ ) pour tes apostrophes, après, ont s'embrouille....
donc, moi, perso, je l'écrirait comme ça :
mysql_query('UPDATE docs_lignes SET references="'.$references_form.'", titre="'.$titre_form.'", description="'.$description_form.'", quantite="'.$quantite_form.'", prix1="'.$prix1_form.'", rabais="'.$rabais_form.'" WHERE id="'.$id_form.'"') or die('Erreur !<br />'.mysql_error());
Plus clair, plus pro, plus compréhensif ;) ^^