Erreur de syntaxe ???????????????????????? - PHP - Programmation
Marsh Posté le 17-06-2005 à 15:22:44
Y'a quoi dans ton $NumFournisseur ? S'il est vide, c'est normal que ça foire...
Marsh Posté le 17-06-2005 à 15:23:00
HURSSSSSSS
Ta appris à codé ouk toi..?
Code :
|
Marsh Posté le 17-06-2005 à 15:23:07
numfournisseur est surement un champs TEXT ou VARCHAR. Il faut donc le mettre en quote :
$requete='SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur="'.$NumFournisseur.'"';
edit : FlorentG is the winner, il semblerait probable que numfournisseur soit un champ INT
Marsh Posté le 17-06-2005 à 15:25:02
micfont999 a écrit : HURSSSSSSS
|
Et toi, c'est où que t'as appris à coder ?
$requete = 'SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur=\'' . $NumFournisseur . '\''; |
(en faisant gaffe que $NumFournisseur ai été escapé au préalable
Marsh Posté le 17-06-2005 à 15:25:31
As-tu vérifié si $NumFournisseur n'est pas vide (zero) ?
Edit: Ok, j'arrive après la bataille... Désolé!
Marsh Posté le 17-06-2005 à 15:26:43
FlorentG a écrit :
|
Quelle horreur
$requete = 'SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur="' . $NumFournisseur . '"'; |
Marsh Posté le 17-06-2005 à 15:26:47
Le mieux est une petite fonction :
function escape($str) { |
Comme ça si c'est vide ou si c'est un string, ça escape et ça fout les quotes
Marsh Posté le 17-06-2005 à 15:27:14
Master p a écrit : Quelle horreur
|
Le miens, y'a des antislashs, ça fait plus pro
Marsh Posté le 17-06-2005 à 15:28:16
FlorentG a écrit : Et toi, c'est où que t'as appris à coder ?
|
Bah chui désolé mais pourquoi s'embeter à concaténer le code alors qu'on peux faire un truc simple...?
Je ne sais pas si son $numfournisseur est vide ou non ça fo l'afficher pour voir, mais en tout cas, je pensais que l'erreur venais de la.. Désolé ..
Marsh Posté le 17-06-2005 à 15:28:40
ouai merci sauf que maintenant quand j'affiche le résultat de la requète :
$requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur='$NumFournisseur'";
$result=mysql_query($requete,$db) or die('Erreur SQL !'.$requete.'<br>'.mysql_error());
echo 'La commande pour '.$result.' a été enregistrée.';
cela m'affiche "Resource id #3 " au lieu du Nom du fournisseur..
Marsh Posté le 17-06-2005 à 15:29:44
Après ton $result, fait $data = mysql_fetch_object;
echo 'La commande pour '.$data->nomfournisseur.' a été enregistrée.';
Marsh Posté le 17-06-2005 à 15:30:13
micfont999 a écrit : Bah chui désolé mais pourquoi s'embeter à concaténer le code alors qu'on peux faire un truc simple...? |
Parce que dans ton cas, il doit parser la chaîne à la recherche de variables, donc d'un point de vue masturbatoire, ton code est beaucoup plus lent que le miens
guen16 a écrit : ouai merci sauf que maintenant quand j'affiche le résultat de la requète : |
Va lire la doc sur mysql_fetch_assoc ou sur mysql_result
Marsh Posté le 17-06-2005 à 15:31:14
FlorentG a écrit : Parce que dans ton cas, il doit parser la chaîne à la recherche de variables, donc d'un point de vue masturbatoire, ton code est beaucoup plus lent que le miens |
J'y peux rien si t'est précose Moi j'aime prendre mon temps...
Marsh Posté le 17-06-2005 à 15:32:51
micfont999 a écrit : J'y peux rien si t'est précose Moi j'aime prendre mon temps... |
Mince, c'était pas dans ce sens J'voulais dire que si t'es du genre à te masturber sur des optimisations, c'est mon code qui est plus mieux
Marsh Posté le 17-06-2005 à 15:32:53
guen16 a écrit : ouai merci sauf que maintenant quand j'affiche le résultat de la requète : |
La valeur de retour de mysql_query est un identifiant de ressource et non pas de la data clef en main. Des fonctions PHP permettent d'analyser cette ressource et de récupérer les champs associés. Il faudrait que tu te documentes un chouia avant de te lancer dans MySQL...
Marsh Posté le 17-06-2005 à 15:34:47
Et même sans parler de lenteur, rien pour la coloration syntaxique (donc une meilleure lecture du code à l'écran) il faudrait concaténer correctement.
Marsh Posté le 17-06-2005 à 15:34:54
FlorentG a écrit : Mince, c'était pas dans ce sens J'voulais dire que si t'es du genre à te masturber sur des optimisations, c'est mon code qui est plus mieux |
Mouai, c'est ça essai de te rattraper comme tu peux..
Oki je dit pas l'inverse sinon ton script est certainement mieux... Moi je fonctionne comme je fait pas des prog de bourrin et ça fonctionne, après je changerais de méthode quand ça marchera plus..
Marsh Posté le 17-06-2005 à 15:35:27
Surfoo a écrit : Et même sans parler de lenteur, rien pour la coloration syntaxique (donc une meilleure lecture du code à l'écran) il faudrait concaténer correctement. |
Et s'il travail sur le bloc note...
Marsh Posté le 17-06-2005 à 15:38:39
Je connais personne qui travaille avec le bloc note, faut être masochiste.
Scite roxx !
Marsh Posté le 17-06-2005 à 15:41:04
Surfoo a écrit : Je connais personne qui travaille avec le bloc note, faut être masochiste. |
HAPedit aussi est très convenable, bah tu sais qu'au début de mon stage je bossais sur bloc note la mission je te promet, j'ai laché l'affaire au bout de la 120 parse error pour un ; oublié..
Marsh Posté le 17-06-2005 à 15:44:28
Moi je suis sous jEdit avec un parser qui me dit mes erreurs de syntaxe PHP
Marsh Posté le 17-06-2005 à 15:46:16
c'est normal ca: $data = mysql_fetch_object; ?
il me semble qu'il devrait y avoir des parametres en parenthèse?
vu le résultat affiché:
Notice: Use of undefined constant mysql_fetch_object - assumed 'mysql_fetch_object' in c:\program files\easyphp1-7\www\formcomm.php on line 31
La commande pour a été enregistrée.
Marsh Posté le 17-06-2005 à 15:46:55
$fixed = mysql_fetch_object($result); |
Aller, dis-nous que tu viens de commencer la programmation il y a 2 heures
Marsh Posté le 17-06-2005 à 15:54:35
en gros il faut coder :
$requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur='$NumFournisseur'";
$result=mysql_query($requete,$db) or die('Erreur SQL !'.$requete.'<br>'.mysql_error());
$data = mysql_fetch_object($result);
echo 'La commande pour '.$data.' a été enregistrée.';
et bien figurez-vous que cela ne fonctionne pas :
"La commande pour a été enregistrée."
Marsh Posté le 17-06-2005 à 15:57:45
Ben ouais... T'as oublié la moitié :
echo 'La commande pour ', $data->nomfournisseur, ' a été enregistrée.'; |
Note aussi les virgules à la place des points, pas besoin de concaténation pour un echo
Marsh Posté le 17-06-2005 à 15:58:05
Bon le mieux, c'est que t'aille lire tout ça : http://fr.php.net/manual/en/ref.mysql.php
Marsh Posté le 17-06-2005 à 18:21:25
c'est quoi l'URL du site, que j'aille lui faire quelques injections de SQL ? stune vraie passoire codé comme il est /o\
Marsh Posté le 17-06-2005 à 15:21:30
bonjour
je code:
$requete="SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur=".$NumFournisseur;
et on me dit:
Erreur SQL !SELECT nomfournisseur FROM fournisseurs WHERE numfournisseur=
Erreur de syntaxe près de '' à la ligne ..
comprend pas...
---------------
merci