[PHP] Fonction qui ne marche pas
Résolu
Sandriine
Messages postés
1255
Date d'inscription
Statut
Membre
Dernière intervention
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
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)
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)
A voir également:
- [PHP] Fonction qui ne marche pas
- Fonction si et - Guide
- Easy php - Télécharger - Divers Web & Internet
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Expert php pinterest - Télécharger - Langages
2 réponses
Bonjour,
Le problème, c'est que $affi n'existe pas au niveau de la fonction !
Tu as deux solutions pour ça :
Le plus simple, demander à la fonction de renvoyer un résultat :
Le problème, c'est que $affi n'existe pas au niveau de la fonction !
Tu as deux solutions pour ça :
Le plus simple, 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"]); // [...]Deuxième possibilité, moins recommandée mais plus simple à mettre en oeuvre, déclarer $affi comme globale au niveau de ta fonction :
function TesterSiNonVide($champ) { global $affi; If (!empty($champ)) { $affi=$affi.$champ."<br>" ; } }
Exactement !
$var .= "truc"; remplace $var = $var."truc";
$var += 5; remplace $var = $var + 5;
$var -= 5; remplace $var = $var - 5;
Et dans le même genre d'idées,
$var ++; remplace $var = $var + 1;
Dans ce dernier cas, le remplacement est également avantageux en terme de temps de calcul, puisque c'est directement le registre processeur qui est utilisé pour l'incrémentation (1 seule opération, donc), au lieu d'avoir une affectation et une addition (2 opérations). Enfin ce n'est réellement utile que dans des programmes de très haut niveau, où la moindre microseconde gagnée est appréciable. Ceci dit, c'est toujours plus simple à écrire ^^
Xavier
$var .= "truc"; remplace $var = $var."truc";
$var += 5; remplace $var = $var + 5;
$var -= 5; remplace $var = $var - 5;
Et dans le même genre d'idées,
$var ++; remplace $var = $var + 1;
Dans ce dernier cas, le remplacement est également avantageux en terme de temps de calcul, puisque c'est directement le registre processeur qui est utilisé pour l'incrémentation (1 seule opération, donc), au lieu d'avoir une affectation et une addition (2 opérations). Enfin ce n'est réellement utile que dans des programmes de très haut niveau, où la moindre microseconde gagnée est appréciable. Ceci dit, c'est toujours plus simple à écrire ^^
Xavier
Et j'aurais voulu faire une boucle for pour éviter de répeter les TesterSiNonVide
Mais ça ne marche pas...