[PHP][switch]

defi -  
crabs Messages postés 909 Statut Membre -
Quand j'appelle une fonction choix()
par php dans un switch quelque soit la valeur retournée par cette fonction c'est le case 0 qui se déclanche. Quelqu'un peut-il m'aider?

La fonction : function choix()
{
if (nonvide()== 0) return 0;// mettre en alert de remplir
else
{
if (age(tableau[10])>=18) return 1;// afficher le recap adulte
else
{
if ((tableaup1[4]== 0)&& (tableaup2[4] == 0)) return 2 ; // mettre en alert de remplir un parent
else if ((tableaup1[4] == 0) && (tableaup2[4] == 1))
{
if (nonvidep2() == 0) return 3 ; // mettre en alerte de remplir un parent
else
{ return 4 ; // afficher le p2
}
}
else if ((tableaup1[4] == 1) && (tableaup2[4]== 0))
{
if (nonvidep1() == 0) return 5 ;
// mettre en alerte de remplir un parent
else
{ return 6 ; //afficher le p1
}
}
else if ((tableaup1[4] == 1) && (tableaup2[4] == 1))
{
if ((nonvidep1() ==0) && (nonvidep2()==0)) return 7; // mettre en alert de remplir les 2 parents
else if ((nonvidep1() ==1) && (nonvidep2()==0)) return 8; // afficher le parent P1
else if ((nonvidep1() ==0) && (nonvidep2()==1)) return 9; // afficher le parent P2
else if ((nonvidep1() ==1) && (nonvidep2()==1)) return 10; // afficher les 2 parents
}
}
}
}

Le switch sur php :
switch('<script>choix()</script>') {

case '0' :
echo '<script> alert ("cas0") ; </script>';
break;
case '1':
echo '<script> alert ("cas1") ; </script>';
break;
case 2 :
echo '<script> alert ("cas2") ; </script>';
break;
case 3 :
echo '<script> alert ("cas3") ; </script>';
break;
case 4 :
echo '<script> alert ("cas4") ; </script>';
break;
case 5 :
echo '<script> alert ("cas5") ; </script>';
break;
case 6 :
echo '<script> alert ("cas6") ; </script>';
break;
case 7 :
echo '<script> alert ("cas7") ; </script>';
break;
case 8 :
echo '<script> alert ("cas8") ; </script>';
break;
case 9 :
echo '<script> alert ("cas9") ; </script>';
break;
case 10 :
echo '<script> alert ("cas10") ; </script>';
break;
default :
echo '<script> alert ("cas11") ; </script>';
break;
}

3 réponses

  1. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    Tu semble mélanger du javascript avec du PHP. Je dits ça car je vois des
    balises script et des variables sans $ dans la fonction choix.

    Hors cela n'est pas possible à priori :
    Lorque le navigateur demande un page : le serveur exécute le PHP pour générer
    la page, puis le navigateur exécute le JS si il en rencontre et qu'il sait le faire.

    Dans ton cas, il faut surement que tu fasses tout en JS.
    En PHP, la condition de ton switch '<script>choix()</script>' sera toujours la
    chaine de carectères et non le résultat de l'éxécution de la fonction choix().

    A+, crabs
    0
  2. defi
     
    En effet choix() est bien une fonction sous javascript mise dans une autre page script.php. Dans mon switch() je l'appelle.

    Sinon comment faire pour que le résultat pris en compte par le switch soit le résultat de la fonction?
    0
    1. defi
       
      Merci de ne pas répondre j'ai la solution. J'ai tout mis en javascript et php appelle une seule fonction selection():

      function choixp()
      {
      if (nonvide()== 0) document.write("0");// mettre en alert de remplir
      else
      {
      if (age(tableau[10])>=18) document.write("1");// afficher le recap adulte
      else
      {
      if ((tableaup1[4]== 0)&& (tableaup2[4] == 0)) document.write("2") ; // mettre en alert de remplir un parent
      else if ((tableaup1[4] == 0) && (tableaup2[4] == 1))
      {
      if (nonvidep2() == 0) document.write("3") ; // mettre en alerte de remplir un parent
      else
      { document.write("4") ; // afficher le p2
      }
      }
      else if ((tableaup1[4] == 1) && (tableaup2[4]== 0))
      {
      if (nonvidep1() == 0) document.write("5") ;
      // mettre en alerte de remplir un parent
      else
      { document.write("6") ; //afficher le p1
      }
      }
      else if ((tableaup1[4] == 1) && (tableaup2[4] == 1))
      {
      if ((nonvidep1() ==0) && (nonvidep2()==0)) document.write("7"); // mettre en alert de remplir les 2 parents
      else if ((nonvidep1() ==1) && (nonvidep2()==0)) document.write("8"); // afficher le parent P1
      else if ((nonvidep1() ==0) && (nonvidep2()==1)) document.write("9"); // afficher le parent P2
      else if ((nonvidep1() ==1) && (nonvidep2()==1)) document.write("10"); // afficher les 2 parents
      }
      }
      }
      }

      var n = document.write(choix());

      function selection()
      {
      switch(choix()) {

      case 0 :
      alert ("cas0") ;
      break;
      case 1:
      alert ("cas1") ;
      break;
      case 2 :
      alert ("cas2")
      break;
      case 3 :
      alert ("cas3") ;
      break;
      case 4 :
      alert ("cas4")
      break;
      case 5 :
      alert ("cas5") ;
      break;
      case 6 :
      alert ("cas6") ;
      break;
      case 7 :
      alert ("cas7") ;
      break;
      case 8 :
      alert ("cas8") ;
      break;
      case 9 :
      alert ("cas9") ;
      break;
      case 10 :
      alert ("cas10") ;
      break;
      default :
      alert ("cas11") ;
      break;
      }
      }
      0
  3. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    Pour préciser, PHP n'appelle pas de fonction javascript, il insère dans le
    html le code qui demande au navigateur d'appeler cette fonction.
    A+, crabs
    0