Page 1 sur 1

problème de fonction et paramètres

Posté : 27 juin 2012, 16:42
par piotrowski-s
Bonjour à tous, je souhaite afficher des informations de ma base de donnée, pour cela je fais ma requête et fais mon while, jusque la il n'y a aucun soucis.

Le soucis qui m'oppose est que j'ai une colonne dans la table qui est un décimal enregistré entre 0 et 5 par palier de 0.5 points.

Voila j'ai donc tenté de créer la fonction suivante:
<?php function note($note) {
	$note=$donnees['note'];
	if($note=='0.00')
		{echo '<img src="images/rate/0.gif">' ;}
	if($note=='0.50')
		{echo '<img src="images/rate/05.gif">' ;}	
	if($note=='1.00')
		{echo '<img src="images/rate/1.gif">' ;}
	if($note=='1.50')
		{echo '<img src="images/rate/15.gif">' ;}
	if($note=='2.00')
		{echo '<img src="images/rate/2.gif">' ;}
	if($note=='2.50')
		{echo '<img src="images/rate/25.gif">' ;}
	if($note=='3.00')
		{echo '<img src="images/rate/3.gif">' ;}
	if($note=='3.5')
		{echo '<img src="images/rate/35.gif">' ;}
	if($note=='4.00')
		{echo '<img src="images/rate/4.gif">' ;}
	if($note=='4.5')
		{echo '<img src="images/rate/45.gif">' ;
	if($note=='5')
		{echo '<img src="images/rate/5.gif">' ;}
?>

le soucis c'est que si je le met dans le while, ça me dit can not redeclare note()
et c'est normal je ne peux pas redéclarer la fonction autant de fois que j'ai de redondance.

Mais alors comme j'ai une requête de type $donnees= mysql_fetch_assoc($result); alors ma note est de la forme $donnees['note']
mais quand je met cette variable la dans la fonction j'ai un message d'erreur d'une part car la variable n'est pas définie
au moment ou je l'utilise.

du coup je ne sais pas comment procéder.

Quelqu'un saurait il m'aider?

Par avance merci.

Re: problème de fonction et paramètres

Posté : 27 juin 2012, 16:45
par xTG
Aille aille aille, pas tout compris aux fonctions semblerait. ^^
Voilà la démarche :
// déclaration de la fonction
function maFonction($monParam){
  echo $monParam;
}

// .. tout ce que l'on peut imaginer après tout cela, peu importe...

$sql = '....';
$res = mysql_query($sql);
while($data = mysql_fetch_assoc($res) ){
  // appel de la fonction avec notre paramètre
  maFonction($data['maColonne']);
}
Résultat : 1 déclaration, X appels à la fonction.

Re: problème de fonction et paramètres

Posté : 27 juin 2012, 16:50
par piotrowski-s
non ça je l'ai bien compris mais le soucis viens justement du fait que mon paramètre $note n'est pas reconnu et si je met $note=$donnees['note']; avant le while, alors il me dit que $donnees['note']; est indéfini, ce qui est normal.

Re: problème de fonction et paramètres

Posté : 27 juin 2012, 17:08
par Mazarini
faire $note = $donnee['note'] au début de ta fonction n'as pas de sens.

Il faut appeler la fonction avec XXX($donnee['note']) comme paramètre
et dans function XXX($note) {...}, $note a la bonne valeur

Re: problème de fonction et paramètres

Posté : 27 juin 2012, 17:08
par piotrowski-s
en fait j'ai fais un select * et puis la quand je mets la déclaration de fonction rien ne s'affiche alors que quand j'exécute la requete dans phpmyadmin j'ai bien des résultats pour les même paramètres et que avec la fonction rien ne s'affiche ni ne s'exécute./

Re: problème de fonction et paramètres

Posté : 27 juin 2012, 17:11
par sirakawa
Je suppose que tu as un code qui ressemble à ceci:
$resultat = mysql_query ($requete);
while ($ligne = mysql_fetch_array($resultat)
{
// c'est ici qu'il faut récupérer chaque note puis
$note = $ligne['note'];
note($note);
}

Re: problème de fonction et paramètres

Posté : 27 juin 2012, 17:13
par piotrowski-s
comme ça précisément:
</fieldset>
<?php 
function note($note) {

	if($note=='0.00')
		{echo '<img src="images/rate/0.gif">' ;}
	if($note=='0.50')
		{echo '<img src="images/rate/05.gif">' ;}	
	if($note=='1.00')
		{echo '<img src="images/rate/1.gif">' ;}
	if($note=='1.50')
		{echo '<img src="images/rate/15.gif">' ;}
	if($note=='2.00')
		{echo '<img src="images/rate/2.gif">' ;}
	if($note=='2.50')
		{echo '<img src="images/rate/25.gif">' ;}
	if($note=='3.00')
		{echo '<img src="images/rate/3.gif">' ;}
	if($note=='3.5')
		{echo '<img src="images/rate/35.gif">' ;}
	if($note=='4.00')
		{echo '<img src="images/rate/4.gif">' ;}
	if($note=='4.5')
		{echo '<img src="images/rate/45.gif">' ;
	if($note=='5')
		{echo '<img src="images/rate/5.gif">' ;}
}
echo $_GET['categorie'];
if(isset($_GET['categorie']) AND $_GET['categorie']=="avocat")
{
	echo "<fieldset style='background-color:#FFF'><legend style='background-color:#FFF'><strong>Tiers S&eacute;lectionn&eacute; : ".strtoupper($_GET['categorie'])."</strong></legend>" ;

$sql="SELECT * FROM tiers WHERE `categorie`='avocat'";

$result= mysql_query($sql) or die(__LINE__.mysql_error().$sql); 
echo "<table width='100%' id='box-table-a' align='center'>";
echo "<thead><tr><th scope='col' width='5%'><strong>ID</strong></th><th scope='col' width='15%'><strong>TYPE</strong></th><th scope='col' width='15%'><strong>CODE LETTRE</strong></th><th scope='col' width='35%'><strong>TITRE</strong></th><th scope='col' width='30%'><strong>ACTIONS</strong></th></tr></thead><tbody>";


while($donnees = mysql_fetch_assoc($result)) {
?>
	<tr>
    	<td><?php echo strtoupper($donnees['id']) ; ?></td>
        <td><?php echo strtoupper($donnees['ref']) ; ?></td>
        <td><?php echo strtoupper($donnees['raison_sociale']) ; ?></td>
        <td><?php echo strtoupper($donnees['adresse'])."<br>".strtoupper($donnees['suite'])."<br>".strtoupper($donnees['cp'])." - ".strtoupper($donnees['ville']) ; ?></td>
        <td><?php echo note($donnees['note']) ; ?></td>
		<td><a href="index.php?p=visualiser-courrier&id=<?php echo $donnees['id'] ; ?>"><img src="images/search.png" width="24" height="24" border="0" /></a> <a href="index.php?p=editer-courrier&id=<?php echo $donnees['id'] ; ?>"><img src="images/list-edit.png" width="24" height="24" border="0" /></a> <a href="javascript:confirmDelete('delete-courrier.php?id=<?php echo $donnees['id'] ; ?>')"><img src="images/list-delete.png" width="24" height="24" border="0" /></a> <a href="index.php?p=nouveau-courrier-type"><img src="images/list2-add.png" width="24" height="24" border="0" /></a> <a href="duplicate-courrier.php?id=<?php echo $donnees['id'] ; ?>" ><img src="images/copy.png" width="24" height="24" border="0" /></a></td></tr>
<?php }
	}

	
echo "</fieldset></tbody></table>";
}
?>   

Re: problème de fonction et paramètres

Posté : 27 juin 2012, 18:08
par sirakawa
Commence par modifier ta fonction (je me suis peut-être planté dans un copier/coller et teste ce truc complètement bêteau pour compendre où je veux en venir:
<?PHP 
function note($note) 
{
	if ($note=='0.00')
	{
	    echo '<img src="images/rate/0.gif">' ;
	}
	if($note=='0.50')
	{
		echo  '<img src="images/rate/05.gif">' ;
	}	
	if($note=='1.00')
	{
		echo   '<img src="images/rate/1.gif">' ;
	}
	if($note=='1.50')
	{
		echo '<img src="images/rate/15.gif">' ;
	}
	if($note=='2.00')
	{
		echo  '<img src="images/rate/2.gif">' ;
	}
	if($note=='2.50')
	{
		echo  '<img src="images/rate/25.gif">' ;
	}
	if($note=='3.00')
	{
		echo '<img src="images/rate/3.gif">' ;
	}
	if($note=='3.5')
	{
		echo  '<img src="images/rate/35.gif">' ;
	}
	if($note=='4.00')
	{
		echo  '<img src="images/rate/4.gif">' ;
	}
	if($note=='4.5')
	{
		echo  '<img src="images/rate/45.gif">';
	} // ajouté
	if($note=='5')
	{
		echo  '<img src="images/rate/5.gif">' ;
	}

}
note(1);
note(5);
echo (note(3));
?>
puis une version que je préfère:
<?PHP 
function note($note) 
{
	if ($note=='0.00')
	{
	$retour = '<img src="images/rate/0.gif">' ;
	}
	if($note=='0.50')
	{
		$retour = '<img src="images/rate/05.gif">' ;
	}	
	if($note=='1.00')
	{
		$retour =  '<img src="images/rate/1.gif">' ;
	}
	if($note=='1.50')
	{
		$retour =  '<img src="images/rate/15.gif">' ;
	}
	if($note=='2.00')
	{
		$retour =  '<img src="images/rate/2.gif">' ;
	}
	if($note=='2.50')
	{
		$retour =  '<img src="images/rate/25.gif">' ;
	}
	if($note=='3.00')
	{
		$retour =  '<img src="images/rate/3.gif">' ;
	}
	if($note=='3.5')
	{
		$retour =  '<img src="images/rate/35.gif">' ;
	}
	if($note=='4.00')
	{
		$retour =  '<img src="images/rate/4.gif">' ;
	}
	if($note=='4.5')
	{
		$retour =  '<img src="images/rate/45.gif">';
	} // ajouté
	if($note=='5')
	{
		$retour =  '<img src="images/rate/5.gif">' ;
	}
return $retour;
}
echo (note(3));
?>
quand tu l'appelles de ton while, ajoute:
$la_note = $donnees['note'];
suivi de
print "<br>note ==>$la_note<=="; // pour vérifier que tout va bien
et remplace
note($donnes['note'] par note($la_note);

Re: problème de fonction et paramètres

Posté : 27 juin 2012, 18:23
par xTG
A noter aussi que ta fonction n'a aucun retour, elle affiche d'elle même du contenu.
Donc echo note(); n'a aucun sens. ;)

Re: problème de fonction et paramètres

Posté : 27 juin 2012, 18:33
par sirakawa
une variante:
<?PHP
function note($note) 
{
	
	$str_note = $note."";
	$str_note = str_replace(".", "", $str_note);
	$chemin = "images/rate/";
	$retour = "<img src = '>".$chemin.$str_note.".gif' />" ;
	return $retour;
}
for ($i =0; $i<=5; $i +=0.5)
{
	echo (note($i));
}
?>

Re: problème de fonction et paramètres

Posté : 28 juin 2012, 08:53
par Mazarini
Il est possible que dans la fonction, tu ne passes dans aucun "if"

if ($note == '1.00') : pas sur qu'avec $notes = 1 ca passe.
<?PHP 
function note($note) 
{
     switch ($note) {
        case 0 :
            echo '<img src="images/rate/0.gif">' ;
            break:
        case 0.5 :
            echo  '<img src="images/rate/05.gif">' ;
            break;
        ...
        default :
                echo   'non trouvé "'.$note.'"' ;
   }
}
?>