|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 5 ![]() |
Bonjour,
je debute en php et base de données et j'ai rencontré plusieurs problèmes. Je les ai résolues en parties mais celui-ci me résiste : 1. J'ai créé avec phpmyadmin une base de donnée qui contients les champs suivants : id - fruit - couleur - prix - poids. j'ai ainsi par exemple 1-pomme -vert-2-1 2-poire-vert-3-8 3-citron-jaune-4-8 4-orange-orange-1-2 2. j'ai un formulaire avec des cases à cochers permettant de choisir la couleur : Ca ressemble à quelques choses comme : <input type="checkbox" name="coul[]" value ="rouge">ROUGE</p> <input type="checkbox" name="coul[]" value ="bleu">BLEU</p> <input type="checkbox" name="coul[]" value ="vert">VERT</p> <input type="checkbox" name="coul[]" value ="jaune">JAUNE</p> <input type="checkbox" name="coul[]" value ="orange">ORANGE</p> 3. Mon but : donner tous les fruits correspondant AUX couleur(S) choisie(s). Si on choisissait une seule couleur je sais le faire (avec des boutons radios) mais là on peut choisir plusieurs couleurs et je ne vois pas comment faire ! Avec boutons radios cela donne ceci : $Resultat = mysql_query("SELECT * FROM table_fruit WHERE couleur = '$coul';"); for ($Compteur=0 ; $Compteur<mysql_numrows($Resultat) ; $Compteur++) { $nom = mysql_result($Resultat , $Compteur , "fruit"); echo $nom ,"<BR>"; } Mais là, avec des cases à cocher ça ne peut pas marcher puisque j'ai un tableau coul[] ! J'avais pensé à ça : $Resultat = mysql_query("SELECT * FROM table_fruit WHERE couleur IN '$coul[]';"); if (mysql_numrows($Resultat)>0) { $nom = mysql_result($Resultat , 0 , "fruit"); echo $nom ,"<BR>"; } Mais ça ne marche pas. J'ai l'erreur suivante Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\test.php on line 56 ce qui veut dire, je pense, qu'il n'a rien trouvé. PS : je compte ensuite modifier, avec des boutons radios pour le prix cette fois, la requete en un truc de ce genre : $Resultat = mysql_query("SELECT * FROM table_fruit WHERE (prix = '$prix') and ('couleur IN '$coul[]');"); if (mysql_numrows($Resultat)>0) { $nom = mysql_result($Resultat , 0 , "fruit"); echo $nom ,"<BR>"; } et avec d'autres conditions dans le where si possible (ordre,...) mais j'ai toujours mon probleme avec les cases à cocher... Bref, si quelqu'un pouvait m'aider, je l'en remercie par avance. |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : juillet 2004 Messages : 2 684 ![]() |
L'idée :
Construire ta requête en initialisant avec SELECT * FROM table WHERE 1 Ensuite tu parcours ton tableau coul à l'aide d'un foreach, et pour chaque valeur tu ajoutes à ta requête " AND couleur='valeur'" et hop le tour est joué. Bon courage. PS :
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace. Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h) |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 5 ![]() |
merci, mais je ne vois pas trop comment ecrire tout ça (même si je pense avoir compris l'idée).
D'abord dans Where 1 : c'est quoi ce 1 ? ensuite où faut il écrire le for each ? j'aimerai avoir tous mes resultats dans la variable $resultat comme dans mon exemple. Est-ce possible ? Merci |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() ![]() Inscription : juillet 2004 Messages : 2 684 ![]() |
WHERE 1 c'est juste une astuce pour simplifier grandement l'ajout de conditions (1 est VRAI donc pas d'influence sur le résultat).
Le foreach c'est pour construire ta requête donc tu le mets là où tu construis ladite requête (logique...). Allez un peu de début de code (pas testé) : Code :
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace. Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h) |
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 5 ![]() |
j'ai compris l'idée.
mais ça ne marche pas j'ai une erreur : Invalid argument supplied for foreach() au niveau de la ligne du foreach. je me demandais si cela ne provenait pas de certaines cases non cochées mais j'ai la même chose si je coche toutes les cases. un problème de syntaxe ? j'ai fait plusieurs essais sans résultats positifs Je suis un peu perdu.... Dans le cas où vous pourriez résoudre ce problème, la longueur de la requète est-elle limité ? Si j'ai bien compris la variable $req grandi à chaque fois qu'on a une case à cocher (qu'elle soit cochée ou non). Si jamais il y en avait une vingtaine ou plus, n'y aurait-il pas une erreur ? Je pense à une limitation de chaine de caractère à 256 (je ne sais pas si cela existe en php). |
|
|
00
|
|
|
#6 | ||||||
|
Invité de passage
![]() Inscription : juin 2005 Messages : 5 ![]() |
je n'arrive toujours pas à voir l'erreur mais j'ai découvert ceci :
(vu que ca ne concerne plus les bases de données je ne sais pas si il faut que je le poste ici ou ailleurs car ça concerne le post précédent). je reprends mon code : Code :
Ensuite j'ai ceci dans le fichier test.php Code :
si j'écris : Code :
Je croyais que sizeof comptais le nombre de cases cochées. J'ai donc l'impression que suis à la recherche de la bonne syntaxe pour afficher le nombre de cases cochées. Je pense que ceci permettra de résoudre mon problème précédent car je pense que l'erreur sur le foreach vient aussi de là. Mais je peux me tromper car je débute... |
||||||
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() ![]() Inscription : juillet 2004 Messages : 2 684 ![]() |
C'est parce que il faut récupérer le tableau avec $_POST['coul'] et pas directement avec $coul
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace. Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h) |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 5 ![]() |
MERCI, ça marche !!
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() ![]() Inscription : juillet 2004 Messages : 2 684 ![]() |
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace. Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h) |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : juin 2006 Messages : 26 ![]() |
bonjour,
je debute en php/mysql. j'aimerai faire un script php qui me permetrai de recuperer des informations entrées dans un formulaire contenant juste les champs: nom, prenom, age, adresse. et ces informations doivent etre placées dans une base mysql. quelqu'un peut-il m'aider ? |
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() Développeur informatique Inscription : août 2005 Messages : 1 179 ![]() |
Citation:
tu trouveras certainement ton bonheur ici : >>> php.developpez.com fais quelques essais, et si tu as un souci de compréhension ou de fonctionnement sur une partie du code, le forum pourra t'aider... mais, sans vouloir te vexer, on n'est pas là pour donner des cours bon développement,
__________________
http://cdemarche.developpez.com/ Tu as la réponse à ta question ? N'oublies pas le petit en bas à gauche de ton message...
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com