dr3amerz Posté 31 Mai 2005 Posté 31 Mai 2005 Salut a tous Je vous explique mon probleme : Sur mon site de vente en ligne , je dispose d'un tableau avec des produits , dans chaque case du tableau il y a un produit avec toutes ses caracteristique , ceci est géré dynamiquement. J'ai un champ TailleProduit dans ma base de donnée pour chaque produit , et dedans il est par exemple marqué : S , L , XL. Comment faire pour que quand la personne clique sur acheter , il puisse selectionner la taille dans une liste deroulante ou il y aurait les choix S , L et XL Voila merci , si je n'ai pas été clair n'hesitez pas a me demander des eclaircissements
Light_at_the_end Posté 31 Mai 2005 Posté 31 Mai 2005 (modifié) Il faut mettre le tout dans un select (intégré dans ta balise formulaire) <SELECT name='Taille' id="Taille" ><OPTION value='S'>1</OPTION><OPTION value='L'>2</OPTION><OPTION value='XL'>2</OPTION></SELECT> Et si tu veux générer les options automatiquement : tu met une routine php avec un if à l'intérieur et un test à la bbd Et ensuite tu récupères les valeurs de ta liste via la variable 'taille' Voilu je sais pas si c tres clair non plus, mais si tu veux plus de précision n'hésite pasà demander Modifié 31 Mai 2005 par Light_at_the_end
dr3amerz Posté 31 Mai 2005 Auteur Posté 31 Mai 2005 Ouaip tout ca j'avais cerné mais en fait l'etape qu'il me manque c'est celle la : "tu met une routine php avec un if à l'intérieur et un test à la bbd " Car en fait dans le champ taille il y a : "S , L , XL" , ecrit comme ca avec des virgules. Comment faire pour detecter les virgules et dire que entre chaque virgule c'est un choix oulala je me rend que jsuis pas clair du tout lol
Light_at_the_end Posté 31 Mai 2005 Posté 31 Mai 2005 (modifié) Je crois que tu peux faire cela avec la fonction explode Ca donnerai qqchose comme ca <SELECT name='Taille' id="Taille" ><?$req=mysql_query("SELECT * FROM xxx WHERE produit='tant' ");//tu remplces xx par ta table et tant par ta variable produit$tab = mysql_fetch_array($req,MYSQL_ASSOC))//il récupere le champ de taille$taille =$tab['TailleProduit];$tabtaille = explode(",", $taille);//converti ta liste en tableau$result = count($tabtaille);$compteur = 1;while($compteur <= $result) {// dans la boucle ajoute l'option correspondanteecho"<OPTION value='".$tabtaille[$compteur].">".$tabtaille[$compteur]."</OPTION>";}?></SELECT> voilu voilo Modifié 31 Mai 2005 par Light_at_the_end
dr3amerz Posté 31 Mai 2005 Auteur Posté 31 Mai 2005 (modifié) Alors j'ai testé , mais ca ne marche pas , dans la liste deroulante il n'y que ca : '.L.' , ( avec les ' et les . ), donc apparament ca prend le champ du milieu et c'est tout. Je te montre mon code , peut etre que j'ai mal adapté au site : $reqSQL = "SELECT * FROM spip_documents WHERE Ref=$ref";$result = spip_query($reqSQL); if ($row = spip_fetch_array($result)) { $TailleProduit = $row['TailleProduit']; $tabtaille = explode(",", $TailleProduit); $result2 = count($tabtaille); $compteur = 1; } echo "<SELECT name='Taille' id='Taille' >while($compteur <= $result2){echo'<OPTION value='.$tabtaille[$compteur].'>'.$tabtaille[$compteur].'</OPTION>';}"; Modifié 31 Mai 2005 par dr3amerz
Light_at_the_end Posté 31 Mai 2005 Posté 31 Mai 2005 (modifié) Oui en fait j'ai fait une petite erreur, j'ai mis une boucle sans fin... Just avant le while :$compteur = 0;while($compteur < $result) {// dans la boucle ajoute l'option correspondanteecho"<OPTION value='".$tabtaille[$compteur].">".$tabtaille[$compteur]."</OPTION>";$compteur = $compteur + 1;} Voila j'ai oublié d'incrémenter le compteur à l'intérieur, et de plus le compteur commence à 0 au lieu de 1 Normalement ca devrait être bon Donc : 1) remplace le 1 par 0 pour l'initialisation du compteur 2) remplace le <= par un < 3) rajoute $compteur = compteur + 1; dans la boucle while Désolé pour l'erreur sinon pour les ' et les . , je comprends pas trop ton codage : echo "<SELECT name='Taille' id='Taille' >while($compteur <= $result){echo'<OPTION value='.$tabtaille[$compteur].'>'.$tabtaille[$compteur].'</OPTION>';}"; avec un echo au debut sans la fermeture du guillemet et deuxio tu utilises ensuite un apostrophe pour ton deuxieme echo au lieu d'un guillemet.. bref pour ca je suis pas sur, utilise toujours ce ke j'ai mis à la place : echo"<OPTION value='".$tabtaille[$compteur].">".$tabtaille[$compteur]."</OPTION>"; Modifié 31 Mai 2005 par Light_at_the_end
dr3amerz Posté 31 Mai 2005 Auteur Posté 31 Mai 2005 Ca fait pareil sauf que maintenant c'est plus L qu'il y a mais S , je pense que le probleme vient des " et '
loulou Posté 1 Juin 2005 Posté 1 Juin 2005 Salut, Je n'ai pas compris quelque chose : Dans ton champs, est ce qu'il y a s , l , xl ou bien "s , l , xl", si c'est ça tu dois aussi supprimer les " de ta chaine. Peut être en faisant un str_replace() $tabtaille =str_replace(""","", $tabtaille); Je ne suis pas sure que ça marche, mais en fait tu remplaces les " par rien, et ta chaine finale devient s , l , xl Par contre si il y a des . autour de tes tailles, n'est ce pas parceque les tailles sont stockées avec des . autour ? Bon courage
Rapace15 Posté 1 Juin 2005 Posté 1 Juin 2005 (modifié) Bonjour, Si je ne me trompe pas, c'est ton code. echo "<SELECT name='Taille' id='Taille' >while($compteur <= $result2){echo'<OPTION value='.$tabtaille[$compteur].'>'.$tabtaille[$compteur].'</OPTION>';}"; <{POST_SNAPBACK}> Pour moi une simple erreur dans ton premier echo... (le while est intégré dans le echo chez toi et donc au niveau du navigateur il ne sais pas le traduire) essaye ceci : $compteur=1;echo "<SELECT name='Taille' id='Taille'> \n";while($compteur<=$result2) { echo "<OPTION value='".$tabtaille[$compteur]."'>".$tabtaille[$compteur]."</OPTION> \n"; $compteur++; //On incrémente le compteur }echo "</SELECT> \n"; La remarque de Light_at_the_end était bien justifiée le seul bémol c'est que la cote de value n'était pas refermée dans son code. Modifié 1 Juin 2005 par Rapace15
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant