créer avec function

waga77
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 18:36

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.

Mammouth du PHP | 959 Messages

03 juil. 2007, 19:57

ben déja, commence par mettre <?php et ?> au lieu de <? et ?>

ViPHP
AB
ViPHP | 5818 Messages

03 juil. 2007, 20:02

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

waga77
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 20:28

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.

Petit nouveau ! | 1 Messages

03 juil. 2007, 20:29

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

Mammouth du PHP | 693 Messages

03 juil. 2007, 20:54

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.

waga77
Invité n'ayant pas de compte PHPfrance

04 juil. 2007, 11:03

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]

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 juil. 2007, 11:04

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 !!! ;)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute