Condition dans une boucle

speedy67
Invité n'ayant pas de compte PHPfrance

04 déc. 2005, 16:19

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>

Mammouth du PHP | 768 Messages

04 déc. 2005, 16:58

<?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)
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Invité
Invité n'ayant pas de compte PHPfrance

04 déc. 2005, 17:47

<?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.

Mammouth du PHP | 19672 Messages

04 déc. 2005, 17:53

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>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

speedy67
Invité n'ayant pas de compte PHPfrance

04 déc. 2005, 21:02

Merci,

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