boucle for premier index=1

Eléphant du PHP | 331 Messages

03 janv. 2007, 22:35

Bonjour,

J'aimerais créer une boucle qui me créra des index de 1 à X et non de 0 à X

Comment faire?

Si j'utilise ça:
$nb_produits = 0;
$nb_produits = count($_SESSION["panier"]["id_produit"]);
for($y = 0; $y < $nb_produits; $y++)
{
echo "<input type=\"hidden\" name=\"item_name_".$y."\" value=\"".$_SESSION["panier"]["nom_produit"][$y]."\">\n";
echo "<input type=\"hidden\" name=\"item_number_".$y."\" value=\"".$_SESSION["panier"]["id_produit"][$y]."\">\n";
echo "<input type=\"hidden\" name=\"amount_".$y."\" value=\"".$_SESSION["panier"]["prix"][$y]."\">\n";
}
Sa commence à 0.

Si je met $y = 1 sa commence à 1 mais sa n'affiche pas le premier produit associé à l'index 1.

Pouvez-vous m'aider SVP?

Merci!

HD
Mammouth du PHP | 1181 Messages

03 janv. 2007, 22:42

on peut créer une $variable=0
au début de la boucle on va tester la valeur de $variable :

si $variable==0 -> on est à l'index 0 -> ne pas créer d'index, sans oublier : $variable++
sinon -> on est un index autre que 0 -> créer index !
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 janv. 2007, 22:52

si tu fait $y = 1 et qu'il n'affiche pas le 1er index, c'est que les index commencent à 0 ;)

essaye de faire
print_r($_SESSION["panier"]["nom_produit"]);
et vérifie que le 1er index est 0 ou 1
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 331 Messages

03 janv. 2007, 23:09

C'est 0 le premier index.

Je t'explique la raison pour laquelle je veux que sa commence par 1 comme ça tu pourra peut-être mieux m'aider.

C'est pour le paiement avec Paypal.

Il me demande chacun de ces champs pour chacun des produits a payer.

Je dois respecter la séquence numérique de commencer par 1 et de ne pas sauter de chiffre.

Eléphant du PHP | 331 Messages

03 janv. 2007, 23:29

J'ai réglé mon problème en créant $w pour identifié mon nom de champ;
$nb_produits = 0;
$nb_produits = count($_SESSION["panier"]["id_produit"]);
for($y = 0; $y < $nb_produits; $y++)
{
$w=$y+1;
echo "<input type=\"hidden\" name=\"item_name_".$w."\" value=\"".$_SESSION["panier"]["nom_produit"][$y]."\">\n";
echo "<input type=\"hidden\" name=\"item_number_".$w."\" value=\"".$_SESSION["panier"]["id_produit"][$y]."\">\n";
echo "<input type=\"hidden\" name=\"quantity_".$w."\" value=\"".$_SESSION["panier"]["qte"][$y]."\">\n";
echo "<input type=\"hidden\" name=\"amount_".$w."\" value=\"".$_SESSION["panier"]["prix"][$y]."\">\n";
echo "<input type=\"hidden\" name=\"on0_".$w."\" value=\"".$_SESSION["panier"]["nom_format"][$y]."\">\n";
echo "<input type=\"hidden\" name=\"qte_".$w."\" value=\"".$_SESSION["panier"]["qte"][$y]."\">\n";
}