Page 1 sur 1

Condition dans une boucle

Posté : 04 déc. 2005, 16:19
par speedy67
Bonjour,

ça fait deux jours que je me suis mis au php et j'ai déjà un soucis que je n'arrive pas comprendre. Le script suivant fait le récapitulatif de la récupération d'un formulaire qui a la forme d'un tableau de 4 colonnes et 24 lignes. Mais je ne veux afficher que le contenu des lignes non-vides. j'ai donc inséré une condition if avant la commande qui affiche la ligne.Le script marche bien sans cette condition mais dès que je l'insère, j'ai une erreur de type "Parse error: parse error, unexpected T_IF". Vaudrait-il mieux que je fasse appel à une fonction pour éviter les problèmes de fin d'expression (, ou ;) ?
<html>
<?php 
for ($j = 0; $j<=24;
$biere[$j]=$_POST['biere'.$j],
$aperitif[$j]=$_POST['aperitif'.$j],
$digestif[$j]=$_POST['digestif'.$j],
$vin[$j]=$_POST['vin'.$j],
if ($biere[$j]+$aperitif[$j]+$digestif[$j]+$vin[$j]!=0)
{print $j.' heure'.($j<=1?' ':'s ').': '.($biere[$j]!=0?$biere[$j].' bi&egrave;re'.($biere[$j]>1?'s':''):'').($aperitif[$j]!=0?', '.$aperitif[$j].' ap&eacute;ritif'.($aperitif[$j]>1?'s':''):'').($digestif[$j]!=0?', '.$digestif[$j].' digestif'.($digestif[$j]>1?'s':''):'').($vin[$j]!=0?', '.$vin[$j].' verre'.($vin[$j]>1?'s de vin':' de vin'):'').'; <br>';},
$j++) ;
?>
</html>

Re: Condition dans une boucle

Posté : 04 déc. 2005, 16:58
par mario
<?php
for ($j = 0; $j<=24;

il manque la parenthèse fermée
et la structure d'une boucle for est:

Code : Tout sélectionner

for (expression1; condition; expression2)

Re: Condition dans une boucle

Posté : 04 déc. 2005, 17:47
par Invité
<?php
for ($j = 0; $j<=24;

il manque la parenthèse fermée
et la structure d'une boucle for est:

Code : Tout sélectionner

for (expression1; condition; expression2)
La paranthèse est à la fin de la boucle, après l'incrémentation :
$j++) ;

Comme l'expression 2 comporte plusieurs instructions, elles sont séparées par des virgules, comme indiqué ici (exemple 16-14-4 du manuel de référence (http://www.php.net/manual/fr/control-structures.for.php) :

for ($i = 1; $i <= 10; print $i, $i++);
?>

mais vu le nombre important d'instructions à mettre après le dernier point-virgule, je vais peut-être opter pour la syntaxe de l'exemble 1.

Posté : 04 déc. 2005, 17:53
par Cyrano
La syntaxe d'un for() ne souffre pas de fantaisie de ce genre. Essaye donc ça:
<html>
<?php
for ($j = 0; $j<=24;$j++)
{
    $biere[$j]    = $_POST['biere'.$j];
    $aperitif[$j] = $_POST['aperitif'.$j];
    $digestif[$j] = $_POST['digestif'.$j];
    $vin[$j]      = $_POST['vin'.$j];
    if ($biere[$j]+$aperitif[$j]+$digestif[$j]+$vin[$j] != 0)
    {
        print $j.' heure'.($j<=1?' ':'s ').': '.($biere[$j]!=0?$biere[$j].' bi&egrave;re'.($biere[$j]>1?'s':''):'').($aperitif[$j]!=0?', '.$aperitif[$j].' ap&eacute;ritif'.($aperitif[$j]>1?'s':''):'').($digestif[$j]!=0?', '.$digestif[$j].' digestif'.($digestif[$j]>1?'s':''):'').($vin[$j]!=0?', '.$vin[$j].' verre'.($vin[$j]>1?'s de vin':' de vin'):'').'; <br>';
    }
}
?>
</html>

Condition dans une boucle

Posté : 04 déc. 2005, 21:02
par speedy67
Merci,

c'est comme ça que j'avais finalement fait.