Page 1 sur 1

probleme avec parametre de fonctions

Posté : 20 mars 2006, 11:25
par cortex007
Bonjour, j'ai un probleme dans le passage de parametres des fonctions php. Je voudrais adresser à une fonction php un tableau en parametre, mais ce tableau n'as pas de taille definie car il est le resultat d'une requette sql. Je voudrais connaitre les moyens de contourner ce probleme dans sa forme/fond.
Pour preciser le probleme, je fait une requete qui retourne une liste de Questions reference par une clef primaire, le probleme que j'ai c'est de faire une fonction qui devra pour chaque reference de Questions chercher si une reponse existe, ca donne ça environs ... mais c'est FAUX bien sur car on peut pas envoyer en parametre un tableau indefini
function RechercheReponse($Question[])
il n'y a pas d'autre moyens que de definir le parametre comme variable globale et faire une fonction sans parametres ?
function RechercheReponse($Question[])
   {
     $numero=0;
     do
     {
       $Connection= mysql_connect('localhost','compte','') or die();
       mysql_select_db("base",$Connection) or die();
       $Requete=mysql_query ("SELECT Reponse FROM reponse WHERE NumeroQuestion ='$Question[$numero]'") or die("erreur sql");
       if (mysql_num_rows($Requette) <>0)
       {
         $Reponse[$numero]=mysql_result($Requette);
         mysql_free_result($Requete);
       }
       else
       {
          $Reponse[$numero]="Reponse non disponible";
          mysql_free_result($Requete);
       }
       $numero++
     }
     while($numero==count($Question[]))

Re: probleme avec parametre de fonctions

Posté : 20 mars 2006, 13:05
par jpaul
mais c'est FAUX bien sur car on peut pas envoyer en parametre un tableau indefini
Moi j'y arrive : par exemple ce code marche chez moi :
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META HTTP-EQU="pragma" CONTENT="no-cache">
<META HTTP-EQU="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="Tue, 20 Aug 1996 14:25:27 GMT">
   <meta name="Generator" content="Microsoft Word 97">
   <meta name="Template" content="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html.dot">
   <meta name="GENERATOR" content="Mozilla/4.7 [en] (Win98; I) [Netscape]">
   <title>Bienvenue</title>
</head>
<body link="#0000FF" vlink="#800080">
<?

function RechercheReponse($Question) {

//     $numero=0;
	 $rep[1]="rep 1";
	 $rep[3]="rep 3";
//     do

foreach($Question as $key => $val) {
	if ($rep[$key] != "") {
	 $Reponse[$key]=$rep[$key];
 //      $Connection= mysql_connect('localhost','compte','') or die();
 //      mysql_select_db("base",$Connection) or die();
 //      $Requete=mysql_query ("SELECT Reponse FROM reponse WHERE NumeroQuestion ='$Question[$numero]'") or die("erreur sql");
 //      if (mysql_num_rows($Requette) <>0)
 //      {
 //        $Reponse[$numero]=mysql_result($Requette);
 //        mysql_free_result($Requete);
      }
       else
       {
          $Reponse[$numero]="Reponse non disponible";
//          mysql_free_result($Requete);
       }
       $numero++;
     }
	 return $Reponse;
	 } 

	 
$Quest[0]="Question 0";
$Quest[1]="Question 1";
$Quest[2]="Question 2";
$Quest[3]="Question 3";
$Quest[4]="Question 4";
$les_rep=RechercheReponse($Quest);
foreach($les_rep as $key => $val) {
echo "<BR>key=".$key." val=".$val;
}
?>
</body>
</html>
J'ai un peu bricolé ton code pour ne pas passer par sql mais tu devrais t'y retrouver...
Au fait il me semble que la condition de ton while sort immédiatement...

Posté : 20 mars 2006, 14:56
par cortex007
Merci pour ta demonstration, oui la condition de la boucle est bancale mais le 1er truc a regler c'etait la gestion du parametre.
Je vais digerer ton code et je vais tenter de l'appliquer ;)