Page 1 sur 1

créer avec function

Posté : 03 juil. 2007, 18:36
par waga77
Bonsoir a tous,

j'essaye d'écrire une function pour mon site car cela me prendrai trop de place autrement.

C'est la première fois que je fais ce genre de function avec if et elseif.

Code : Tout sélectionner

<? function essai($couleur){ if($row2["status"]=="En cours" and $row2["delai"]> $ladatejour) { echo'<td colspan="2" class="mm4" bgcolor="#0099FF">'; } elseif($row2["status"]=="En cours" and $row2["delai"]< $ladatejour){ echo'<td colspan="2" class="mm4" bgcolor="#FFCC00">'; } else{ echo'<td colspan="2" class="mm4" bgcolor="#00FF00">'; } return($couleur); } ?>
mais cela ne fonctionne pas.es ce que quelqu'un peu m'aider. Merci pour votre aide.

Posté : 03 juil. 2007, 19:57
par chrislabricole
ben déja, commence par mettre <?php et ?> au lieu de <? et ?>

Posté : 03 juil. 2007, 20:02
par AB
A l'intérieur d'une fonction si tu veux utiliser des variables qui ne sont pas passées en paramètre (comme $couleur), il faut déclarer ces variables globales.
ex
global $ladatejour;
//etc
Une petite recherche google sur "fonction portée des variables" devrait te donner un résultat instructif ex http://www.lephpfacile.com/cours/21-la- ... -variables

Posté : 03 juil. 2007, 20:28
par waga77
Merci a vous 2, je viens d'aller lire mais là je ne comprends plus rien. je comprends pas comment faire a cause de if et elseif.

Posté : 03 juil. 2007, 20:29
par hworang
Je crois qu'il y a un probleme avec les quotes mais je ne suis pas sur.
Puisque sur mon editeur de texte,sa prend des balises en texte.^^

Posté : 03 juil. 2007, 20:54
par orgerix
Le problème vient surtout du fait que la fonction n'accede pas à $row2 et à $ladatejour car une fonction ne peut pas accèder à des variables du reste du code qui ne sont pas passer en argument.

Essaye ca :
<?php
function essai($couleur,$row2,$ladatejour){  
if($row2["status"]=="En cours" and $row2["delai"]> $ladatejour)  
{  
echo'<td colspan="2" class="mm4" bgcolor="#0099FF">';  
}  
elseif($row2["status"]=="En cours" and $row2["delai"]< $ladatejour){  
echo'<td colspan="2" class="mm4" bgcolor="#FFCC00">';  
}  
else{  
echo'<td colspan="2" class="mm4" bgcolor="#00FF00">';  
}  
return($couleur);  
}  
?> 
Par contre, je ne comprends pas trop l'interet de mettre $couleur en argument puisque la variable n'est pas utilisé par la fonction.

Posté : 04 juil. 2007, 11:03
par waga77
Bonjour a tous et merci pour votre aide.

Voilà j'ai enfin réussi ma function.
le code de ma fonction:

Code : Tout sélectionner

<?php function couleur_ligne () { global $ladatejour; global $status; global $delai1; if($status=="En cours" and $delai1 > $ladatejour) { echo'<tr bgcolor="#00FF00" >'; } elseif($status=="En cours" and $delai1< $ladatejour){ echo'<tr bgcolor="#FFCC00">'; } else{ echo'<tr bgcolor="#0099FF" >'; } } couleur_ligne(); ?>
Sur ma page ou j'affiche le résultat de défini comme cela :

Code : Tout sélectionner

<?php $select = "select * FROM mandat ORDER BY mandate Desc "; $result1 = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); while($row2 = mysql_fetch_array($result1)) { $status=$row2["status"]; $delai1=$row2["delai"]; $ladatejour= date("Y-m-d"); } ?>
et pour afficher ma ligne qui va changer de couleur selon les informations dans delai et status :

Code : Tout sélectionner

<?php couleur_ligne();?>
Encore merci pour vos infos et votre aide[/code]

Posté : 04 juil. 2007, 11:04
par Truc
Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)