|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 12 ![]() |
Bonsoir,
Voici une partie de mon code source : Code :
Le problème se situe au niveau de la requête préparée dans le if. Je ne sais pas ou est l'erreur, mais il y a une erreur de syntaxe. Pouvez-vous svp me l'indiquer car je ne la trouve pas. |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() |
Bonsoir,
ça nous aiderait de connaître le message d'erreur que tu obtiens.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 12 ![]() |
Bonjours rawsrc,
Citation:
|
|
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() ![]() |
Bonjour,
casting incorrect : essaies avec ça : Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 12 ![]() |
J'ai remplacer ceci...
Code :
$resultat->execute(array($_POST['pageBillets'])); Citation:
|
|
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() ![]() |
Ah bon ?
On va changer un peu : Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 12 ![]() |
Il n'y a plus d'erreur. En revanche, maintenant il n'y a plus que le formulaire qui s'affiche quand je clique sur 'envoyer' (page 1 ou page 2).
|
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() |
il faut regarder comment tu retournes tes données parce que mon code ne change rien à l'exécution, il ne modifie juste que la passage de paramètre.
J'ai remarqué dans ton code que d'un côté tu prépares ta requête et de l'autre pas.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
00
|
|
|
#9 | |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 12 ![]() |
Si $_POST['pageBillets'] n'existe pas, pas besoin de préparer la requête car il n'y a ps de variable dedans.
Citation:
|
|
|
|
00
|
|
|
#10 | ||
|
Expert Confirmé
![]() ![]() |
J'ai repris ton code et il se résume à ceci :
Code :
Corrigé
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 12 ![]() |
Je ne comprend pas les lignes 9, 10, 11, 13, 16, 20, 22, 23, 29(++$i), 36
|
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() ![]() |
On écrit la chaine SQL à plat. Vu que le paramètre attendu est un entier, je me suis juste contenté de l'ajouter à la fin de la chaine SQL en ayant au préalable bien vérifié qu'il était entier : intval().
Le .= est équivalent à ce que tu utilise pour ajouter et stocker dans la même variable +=, sauf que là au lieu de l'addition c'est la concaténation de chaines. Ensuite une fois que l'on a les $donnees, on passe tout le tableau à la fonction strip_tags() au lieu d'avoir à l'appeler à chaque fois que tu utilises une donnée. C'est le rôle de array_map(). Enfin le ++$i est équivalent à $i++ dans une boucle for, sauf qu'il est un poil plus rapide. C'est un réflexe que j'ai gardé depuis des années, donc je n'y pense pas. D'ailleurs question rapidité, je me pose la question s'il n'y aurait pas depuis une optimisation automatique du parser PHP. A voir. Pour les notations alternatives (les structures de contrôle avec les deux-points) regardes ici C'est plus visuel de repérer dans un rendu des endwhile | endfor qu'une simle accolade fermante.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
10
|
|
|
#13 | ||
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 12 ![]() |
A la fin de la ligne 17 avant '?>', il y a un ';' non ?
Sinon, c'est bon j'ai compris tes modifs. J'ai remplacé dans mon code la condition de départ if else (avec les 2 requêtes) par ton bout de code : Code :
Au final, ça fonctionne correctement maintenant, merci ! ![]() Juste une question : pourquoi ça n'a pas marché avant ? |
||
|
|
00
|
|
|
#14 |
|
Expert Confirmé
![]() ![]() |
Ce n'est pas obligatoire mais il vaut mieux le mettre.
Je te répète mon post précédent : il faut regarder comment tu retournes tes données parce que mon code ne change rien à l'exécution, il ne modifie juste que la passage de paramètre.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
10
|
|
|
#15 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 12 ![]() |
J'ai une autre question : Il s'agit d'une requête non préparé. Cette requête n'est-il pas vulnérable à une faille sql ?
|
|
|
00
|
|
|
#16 | |||||
|
Expert Confirmé
![]() ![]() |
Citation:
Bon je te l'accorde, intval ne sert pas uniquement à ça et peut avoir parfois un comportement quelque peu déroutant. Le mieux c'est d'utiliser les fonctions de filtrages comme filter_var() : Code :
Un autre moyen pour être absolument sûr de n'avoir que des chiffres et ceci quelque soit le système c'est ctype_digit() Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|||||
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 12 ![]() |
Merci !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com