[RESOLU] Probleme de requette PHP / MYSQL

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 : [RESOLU] Probleme de requette PHP / MYSQL

par Donald08 » 24 juil. 2008, 11:16

Ok, merci, je vais aller faire un tour vers le lien que tu m'a donné.

par vince_weed » 24 juil. 2008, 10:53

Pour le foreach c'est tout simple: à la place d'un while() tu met foreach() et tu lui passe une tableau, il vas alors parcourir ton tableau et effectuer le code entre {} pour chaque élément.
ex:
                foreach($table as $id)
	{
	        echo $id;//affichera chaque élément de $table
	}
Mais plus je regarde la premiere solution que je t'ai proposé moins elle me parrai élégante car elle te fait faire plusieurs requetes SQL alors que tu peut tout faire avec une seul.

Donc pour la jointure c'est pas tres compliqué non plus, ca consiste à joindre (relativement normal non ^^) deux tables, par exemple dans ton cas en fesant une jointure de la bonne facon tu optiendra une table identique à ta table produits_taille mais avec une colonne en plus reseignant le nom de la taille.

cf:http://sqlpro.developpez.com/cours/sqlaz/jointures/

par Donald08 » 24 juil. 2008, 10:42

Merci pur ta réponse.

Il y a 2 trucs que je n'ai pas vu lors de ma formation par manque de temps :

Foreach et les jointurs

:( je pleurs

par vince_weed » 24 juil. 2008, 10:32

Commence par faire afficher les valeur de tes variable a chaque itération de ta boucle et tu verra surement d'ou vient le problème (je ne suis pas sur que ton algo soit juste).
Sinon a ta place j'aurait plustot fait autrement:
- un foreach sur le resultat de ta requete (sur la table produits_taille) puis récupéré le nom de la taille en fonction de l'id pour chaque ligne pour faire au plus simple du point de vu sql (si vraiment tu est juste en SQL et que tu ne veut pas changer tes requetes).
- Une solution plus propre serai de faire une jointure entre tes deux table dans ta requete sql ce qui te simplifiera beaucoup le traitement des données.

[RESOLU] Probleme de requette PHP / MYSQL

par Donald08 » 23 juil. 2008, 16:54

Bonjour,

J'ai une table "taille" ou dedans j' un champ ID et un champ TAILLE
J'ai également une table "produits_taille" ou dedans j'ai un champs ID_PRODUIT et un champ ID_Taille.
Cette table me permet de faire la liaison produit/taille car un produit peut etre decliné en plusieurs taille.

Dans l'administration de mon site, il faut que je puisse afficher une liste de toutes les tailles (table "taille") mais que les tailles utilisés par le produit soit cochés

Voici ci dessous mon caode, probleme, il ne me coche qu'une seule case même si dasn ma table un produit est décliné en plusieurs tailles.

Mon code :

Code : Tout sélectionner

$taille2_def = "SELECT * FROM `taille`"; $taille2_def2 = mysql_query ($taille2_def) or die ("Erreur : ".$taille2_def); $taille_def = "SELECT * FROM `produits_taille` WHERE `id_produit` ='".$id."'"; $taille_def2 = mysql_query ($taille_def) or die ("Erreur : ".$taille_def); $taille_def3 = mysql_fetch_array ($taille_def2); while ($taille2_def3 = mysql_fetch_array ($taille2_def2)) { $taille_list = $taille_def3["id_taille"]; if ($taille2_def3["id"]==$taille_list) { // affiche avec la case cochée $affiche_taille.='<input name="taille" type="checkbox" value="'.$taille2_def3["id"].'" checked/>'.$taille2_def3["taille"].'<br />'; } else { // Affiche avec la case non cochée $affiche_taille.='<input name="taille" type="checkbox" value="'.$taille2_def3["id"].'" />'.$taille2_def3["taille"].'<br />'; } }
Merci pour votre aide.