Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/06/2006, 13h18   #1
Invité de passage
 
Inscription : juin 2005
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 5
Points : 1
Points : 1
Par défaut [Conception] formulaire et case à cocher et recherche dans une base de donnée

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.
olivier_1970 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 13h31   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 13h40   #3
Invité de passage
 
Inscription : juin 2005
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 5
Points : 1
Points : 1
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
olivier_1970 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 13h45   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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 :
1
2
3
4
5
6
$req = "SELECT * FROM table WHERE 1";
foreach($coul as $val)
  $req .= " AND couleur='" . $val . "'";
$res = mysql_query($req);
while($row = mysql_fetch_array($res))
  echo $row['nom'] . "<BR>";
__________________
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)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 14h47   #5
Invité de passage
 
Inscription : juin 2005
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 5
Points : 1
Points : 1
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).
olivier_1970 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 15h57   #6
Invité de passage
 
Inscription : juin 2005
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 5
Points : 1
Points : 1
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 :
1
2
3
4
5
6
7
8
9
 
 <form method="post" action="test.php">
<p><input type="checkbox" name="coul[]" value ="rouge">ROUGE</p>
<p><input type="checkbox" name="coul[]" value ="bleu">BLEU</p>
<p><input type="checkbox" name="coul[]" value ="vert">VERT</p>
<p><input type="checkbox" name="coul[]" value ="jaune">JAUNE</p>
<p><input type="checkbox" name="coul[]" value ="orange">ORANGE</p> 
<p><input type="submit" value="OK" name="BoutonOK"></p>
    </form>
pour le formulaire et les cases à cocher

Ensuite j'ai ceci dans le fichier test.php
Code :
1
2
3
 
$ctrl=sizeof($coul);
echo "nombre de cases cochées =".$ctrl;
que je coche n'importe quel nombre de cases j'obtiens: nombre de cases cochées = 0
si j'écris :
Code :
1
2
3
 
$ctrl=sizeof('$coul');
echo "nombre de cases cochées =".$ctrl;
alors quand je coche n'importe quel nombre de cases j'obtiens :nombre de cases cochées = 1

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...
olivier_1970 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 16h10   #7
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 16h41   #8
Invité de passage
 
Inscription : juin 2005
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 5
Points : 1
Points : 1
MERCI, ça marche !!
olivier_1970 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 17h02   #9
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
__________________
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)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2006, 00h25   #10
Invité de passage
 
Inscription : juin 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 26
Points : 3
Points : 3
Par défaut recuperation des informations d'un formulaire

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 ?
franckywood est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2006, 01h03   #11
Membre Expert
 
Avatar de ska_root
 
Homme
Développeur informatique
Inscription : août 2005
Messages : 1 179
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : août 2005
Messages : 1 179
Points : 1 580
Points : 1 580
Citation:
Envoyé par franckywood
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 ?
Salut,

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...
ska_root est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h26.


 
 
 
 
Partenaires

Hébergement Web