[PHP] if... else... while.. boucle.. sos....

if... else... while.. boucle.. sos.... [PHP] - Programmation

Marsh Posté le 24-08-2001 à 14:10:55    

voici ma boucle :
 
while ($row1 = mysql_fetch_object($req1))
{
  $row1->id_cat = $row1->id_cat - 1;  
  if ($nb == "" )
  {
    $nb = 0;
    echo "nb est à 0<br>";
    $nb1 = 0;
    echo "nb1 est à 0<br>";    
  }
  else
  {
    if ($row1->id_cat == $nb)
    {
      $nb1 = $nb1 + 1;
      echo "on rajoute 1 à nb1<br>";    
    }
    else
    {
      $nb = $nb + 1;
      echo "on rajoute 1 à nb<br>";
      $nb1 = 0;
      echo "nb1 est à 0<br>";
    }
  }
  $ligne = "zlien["."$row1->id_cat"."]["."$nb1"."] = '<A HREF=\"..\materiels\matos_gen.php3?sscat="."$row1->id_sscat"."\" CLASS=ejsmenu>"."$row1->nom_sscat"."</A>';\n";
  echo $ligne;
  echo "<br><br>";
  $menu_centre .= $ligne;
}  
 
 
et voici ce que j'obtiens :
 
 
nb est à 0
nb1 est à 0
zlien[0][12] = 'Divers Divers Diversccccc';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = 'azedazdezad';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = 'ffdfdfdfeffezzef';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = 'Divers Divers Divers Divers';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = 'ffdfdfdfeffezzefdddddd';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = 'ffdfdfdfeffezzefd';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = 'sdfsdfsdfdf';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = 'Divers Ecrans';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = '14 pouces';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = '15 pouces';  
 
nb est à 0
nb1 est à 0
zlien[0][12] = '17 pouces';  
 
nb est à 0
nb1 est à 0
zlien[1][12] = 'Divers Boîtiers';  
 
nb est à 0
nb1 est à 0
zlien[1][12] = 'Mini-tour';  
 
 
comme si la variable $nb était réinitialisée à chaque début de while..... c normal... y'a un truc que j'aimal fait mais quoi ? je pige pas là....
 
merci les copines,
Elcap :):):)
 
PS : comme vous le voyez je suis toujours sur mon site sur le hardware:):):)

Reply

Marsh Posté le 24-08-2001 à 14:10:55   

Reply

Marsh Posté le 24-08-2001 à 14:35:15    

oui c'est normal, tu ne l'initialises jamais.
 
if ($nb == "" ) // $nb non initialisé donc ($nb == "" ) == true
{
  $nb = 0; // donc ($nb == "" ) == true
}
else
{
 // un gros bloc else par lequel php ne passera jamais car la condition plus haut est toujours vérifiée.
}

Reply

Marsh Posté le 24-08-2001 à 14:43:14    

ben oui mais la première fois....  
if ($nb == "" ) // $nb non initialisé donc ($nb == "" ) == true  
{  
 $nb = 0; // donc ($nb == "" ) == true  
}  
 
est normal... c ce que je veux...
 
mais je ne savais pas que  
 $nb = 0; // donc ($nb == "" ) == true  
 
considérant que je pensais que "" était différent de 0....
tu vois ce que je veux faire ?
 
comment le contourner ?

Reply

Marsh Posté le 24-08-2001 à 14:45:45    

si tu veux juste initialiser $nb, tu peux faire ton premier test avec isset(). if (!isset($nb)) ...

Reply

Marsh Posté le 25-08-2001 à 16:29:06    

pourtant je change le contenu de la variable en faisant $nb = 0; s'il est vide ("" ) ou $nb = 0; si $row1->id_cat est différent de $nb
 
donc il ne peut être égal à rien que la première fois que la boucle est lancée.. ensuite il est au moins égalà 0 mais pas à rien...
 
cela veut-il dire que $nb est remis à "vide" à chaque fin de boucle ???

Reply

Marsh Posté le 25-08-2001 à 16:54:22    

non, parce qu'en php, tu as une traduction de type dynamique. quand tu écris $nb=="" il considère que $nb est un string, or le string "" est aussi représenté par 0.

Reply

Marsh Posté le 26-08-2001 à 17:22:06    

hmm.... fais chier... alors comment faire ?? en partant de 1 au lieu de 0 pour faire mes comparaisons ? ensuite (puique j'utilise la valeur 0) je ferai $bn - 1 (qui le ramèenra à 0)
 
bref, je comprend mieux... merci :)

Reply

Marsh Posté le 26-08-2001 à 17:31:18    

isset() ! ça teste si la variable est initialisée (si on lui à déjà affecté une valeur).

Reply

Marsh Posté le 26-08-2001 à 17:37:07    

ha oui, j'avais squiizzé ton msg :))
 
merci, je vais faire comme ça :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed