Page 1 sur 1

Tableaux et boucle

Posté : 05 avr. 2008, 15:59
par katagoto
Bonjour a tous,
Comme certains le savent je suis amoureux des tableaux 8-)
Et j'aimerais bien lister mon tableau,
j'ai tenté la manière suivante :

<?php
$tableau=array('Catégorie 01', 'Catégorie 02');
$taille=count($tableau)-1;
?>

<p><label for="categorie">Dans quel catégorie classeriez vous votre site</label><br />
<select name="categorie" id="categorie">
<?php
for($i=0; $i=$taille; $i++)
{
echo '<option value="'.$i.'">'.$tableau[$i].'</option>';
}
?>
</select>
</p>
et à ce moment là : carnage
Image

Je pense que à viens de $i=$taille

J'ai d'ailleur un autre problème de boucle :

Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting ';' template.php on line 19

<?php // ligne artificielle
mysql_connect($url_de_la_bdd, $login, $mot_de_passe); // ligne 6
mysql_select_db($nom_de_la_bdd);

define("SECURITE", true);
include("tableau_categorie.php");
$taille=count($categories)-1;

// Gestion du fichier
$fichier = fopen('partenaires.php', 'a');

// $template[]='include("haut.php");';
$template[]="<p></p>";

for($i=0; $i=$taille; $i++)
{ // ligne 20
?>// ligne artificielle
Avant il y a la définition des paramètres de connexion et j'utilise le même tableau que de le première exemple

Merci par avance de vos réponses

Posté : 05 avr. 2008, 16:40
par ouckileou
Une boucle for() fonctionne comme ça :
for (initialisation compteur; itérer tant que cette condition est vraie, incrémentation compteur)
Ceci est marqué dans la doc : http://fr2.php.net/for

Alors effectivement ton intuition est bonne, ta condition ne l'est pas.

Pour ton erreur de syntaxe, je ne vois rien ici, regarde dans le fichier inclu.

Enfin, pourquoi fais-tu "-1" au retour de count() ? Ton tableau contient bien 2 éléments, à ta place je gérerais le -1 pour les indices dans les conditions de boucle, et je garderais bien une variable $taille qui vaut 2, ce serait plus logique. M'enfin là c'est toi qui voit.

Posté : 05 avr. 2008, 16:55
par katagoto
J'enlève 1 pour pas que ma boucle indique le troisième membre...
C'est idiot non ???

Posté : 05 avr. 2008, 17:00
par ouckileou
J'ai bien compris pourquoi tu faisais ça, parceque tu as 2 éléments, numérotés 0 et 1. Je disais juste qu'à mon avis ce n'est pas l'endroit où le mettre, vu que dans ta variable $taille tu as maintenant "1", ce qui est faux puisque ton tableau contient 2 éléments. Ce qui pourrait être gênant si tu veux laréutiliser plus loin.

Mais comme je l'ai dis c'est juste une remarque et tu le gères comme tu le veux, ce n'était pas le sujet principal.

Posté : 05 avr. 2008, 17:11
par katagoto
Non non tu as raison, mais je ne compte pas m'en servir plus loin
mais là ça me met que catégorie 01 même si je ne l'ais pas décrémenté...
for($i=0; $i<=$taille; $i++)

Posté : 05 avr. 2008, 17:15
par ouckileou
C'est quoi "ça me met", essaie d'être précis stp

Posté : 05 avr. 2008, 17:27
par katagoto
Image

En gros il me manque un choix...

Posté : 05 avr. 2008, 19:39
par ouckileou
Faisons au plus simple déjà:
<?php
$tableau=array('Catégorie 01', 'Catégorie 02');
echo '<pre>';
print_r($tableau);
echo '</pre>';

$taille = count($tableau);
for($i=0; $i < $taille; $i++) {
   echo $tableau[$i];
}
ça donne ?

Posté : 06 avr. 2008, 09:39
par katagoto
hier au soir vers 19h j'ai trouvé la solution, ça venait de ma méthode :
<?php
$taille_reel=count($tableau);
$taille=$taille_reel-1;
Et là tout marche :wink:
Merci quand même ^^