[PHP] Fonction qui ne marche pas !

Résolu
Sandriine Messages postés 1400 Statut Membre -  
sfel Messages postés 1645 Statut Membre -
Bonjour,

afin de raccourcir mon code, j'ai voulu faire une fonction afin d'éviter les répétitions.

Voici mon code php au début :

-------------------------------------------------------------------------

<?
$affi="";
$depp=$_GET["dep"];
$x=0;
$req = "SELECT * FROM ddass WHERE numero='".$depp."'";

if($depp=="liste") //il faut toutes les afficher
{
$req="SELECT * FROM ddass ORDER BY cp";
}

$res=mysql_query($req,$cnx); //exécution de la requete
$JeuEnr=mysql_fetch_assoc($res);

While ($JeuEnr)
{
$affi=$affi."<font face='arial' size='2'><b>";
$affi=$affi.$JeuEnr["adr1"]."</b><br>";
$x=$x+1;

If (!empty($JeuEnr["adr2"]))
{
$affi=$affi.$JeuEnr["adr2"]."<br>" ;
}
If (!empty($JeuEnr["adr3"]) )
{
$affi=$affi.$JeuEnr["adr3"]."<br>";
}
If (!empty($JeuEnr["adr4"]))
{
$affi=$affi.$JeuEnr["adr4"]."<br>";
}
If (!empty($JeuEnr["adr5"]))
{
$affi=$affi.$JeuEnr["adr5"]."<br>";
}
If (!empty($JeuEnr["adr6"] ))
{
$affi=$affi.$JeuEnr["adr6"]."<br>";
}
$affi=$affi.$JeuEnr["cp"]." ".$JeuEnr["ville"]."<br>";
$affi=$affi."Téléphone : ".$JeuEnr["tel"]."<br>";
$affi=$affi."Fax : ".$JeuEnr["fax"]."<br>";

$mail=$JeuEnr["mail"];

$affi=$affi."E-mail : <a href=mailto:'.$mail.'>".$mail."</a><br>";
$affi=$affi."</font><hr color='+chr(34)+'#F3BFB2'+chr(34)+' size='+chr(34)+'3'+chr(34)+'>";

$JeuEnr= mysql_fetch_assoc($res);//enregistrement suivant
}

--------------------------------------------------------------------------------------------------------------------

J'ai ensuite ajouté une fonction :

---------------------------------------------------------------------------------------------------------------------

<?
$affi="";
$depp=$_GET["dep"];
$x=0;
$req = "SELECT * FROM ddass WHERE numero='".$depp."'";

if($depp=="liste") //il faut toutes les afficher
{
$req="SELECT * FROM ddass ORDER BY cp";
}


function TesterSiNonVide($champ)
{
If (!empty($champ))
{
$affi=$affi.$champ."<br>" ;
}
}

$res=mysql_query($req,$cnx); //exécution de la requete
$JeuEnr=mysql_fetch_assoc($res);

While ($JeuEnr)
{
$affi=$affi."<font face='arial' size='2'><b>";
$affi=$affi.$JeuEnr["adr1"]."</b><br>";
$x=$x+1;

TesterSiNonVide($JeuEnr["adr2"]);
TesterSiNonVide($JeuEnr["adr3"]);
TesterSiNonVide($JeuEnr["adr4"]);
TesterSiNonVide($JeuEnr["adr5"]);
TesterSiNonVide($JeuEnr["adr6"]);


$affi=$affi.$JeuEnr["cp"]." ".$JeuEnr["ville"]."<br>";
$affi=$affi."Téléphone : ".$JeuEnr["tel"]."<br>";
$affi=$affi."Fax : ".$JeuEnr["fax"]."<br>";

$mail=$JeuEnr["mail"];

$affi=$affi."E-mail : <a href=mailto:'.$mail.'>".$mail."</a><br>";
$affi=$affi."</font><hr color='+chr(34)+'#F3BFB2'+chr(34)+' size='+chr(34)+'3'+chr(34)+'>";

$JeuEnr= mysql_fetch_assoc($res);//enregistrement suivant
}
if ($x=0 And $depp > "")
{
$affi= "non trouvé <hr color='+chr(34)+'#F3BFB2'+chr(34)+' size='+chr(34)+'3'+chr(34)+'>";
}
echo $affi; //affichage des coordonnées en fonction du département saisit

include('rech.inc');
?>

Ma fonction ne marche pas, puisque quand j'affiche la page, il ne me met plus les adresses... (adr2 à adr6)
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. sfel Messages postés 1645 Statut Membre 430
     
    bonjour,

    si tu affiche la variable de $champ dans TesterSiNonVide, il te met koi ??

    function TesterSiNonVide($champ)
    {
    echo "valeur champ = ".$champ;
    If (!empty($champ))
    {
    $affi=$affi.$champ."<br>" ;
    }
    } 
    0
  2. Sandriine Messages postés 1400 Statut Membre 283
     
    Mon problème est résolu, voici la solution :

    Il fallait demander à la fonction de renvoyer un résultat :

    function TesterSiNonVide($champ)
    {
    $resultat = "";
    If (!empty($champ))
    {
    $resultat = $champ."<br>" ;
    }
    return $resultat;
    }
    // [...]
    // et modifier les appels :
    $affi .= TesterSiNonVide($JeuEnr["adr2"]);
    $affi .= TesterSiNonVide($JeuEnr["adr3"]);
    $affi .= TesterSiNonVide($JeuEnr["adr4"]);
    // [...]
    0
  3. sfel Messages postés 1645 Statut Membre 430
     
    j'y avait pensé au return, mais je pensait que tu utilisait des variables globales justement
    0