Aller au contenu

Sujets conseillés

Posté

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 ;)

Posté (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é par Light_at_the_end
Posté

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

Posté (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 correspondante
echo"<OPTION value='".$tabtaille[$compteur].">".$tabtaille[$compteur]."</OPTION>";
}
?>
</SELECT>

voilu voilo :)

Modifié par Light_at_the_end
Posté (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é par dr3amerz
Posté (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 correspondante
echo"<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é par Light_at_the_end
Posté

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

Posté (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é par Rapace15

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...