Problème de comparaison (php4 objet)

Répondre
celia
celia
Déconnecté
J'ai un script qui me pose un petit souci et je n'arrive pas avoir pour quoi je n'arrive pas à rentrer dans mes instructions(if..elseif..else).
En effet mon script fonctionne bien, il execute bien la requete et me recupere le $statut .par contre ne rentrepas dans mon bloc d'instruction pour faire la redirection même si les conditions sont verifier.

si quelqu'un peut m'aider merci !
Voila mon code:

  1. <?php
  2. include ("../../Menu/menu.class.php"); 
  3.  
  4.    $this->statut =null; 
  5.    $menu = new liste_menu(); 
  6.       
  7.    /*ON RECUPERE PAR POST, LES VARIABLES login et password DEPUIS LE FORMULAIRE DE LA PAGE INDEX.PHP
  8.    CES DEUX VARIABLES SERONT ENVOYES DANS LA REQUETE SELECT POUR IDENTIFIER L'UTILISATEUR QUI VIENT DE SE LOGUER.*/ 
  9.    
  10.    $this->login = $_POST["login"]; 
  11.    $this->password = $_POST["password"]; 
  12.    
  13.    
  14.    //UNE CONDITION POUR VERIFIER SI login et password SONT VIDES
  15.    
  16.    if(!isset ($this->login) || trim($this->login) == ""){ 
  17.           $this->message1 = "E-mail obligatoire!"; 
  18.          $menu->menu_accueil();// Redirection vers menu.class.php
  19.          echo "<tr><td>$this->message1</td></tr>"; 
  20.          exit(); 
  21.    }else if(!isset ($this->password) || trim($this->password) == ""){ 
  22.           $this->message1 = "Mot de passe obligatoire!"; 
  23.          $menu->menu_accueil();// Redirection vers menu.class.php
  24.          echo "<tr><td>$this->message1</td></tr>"; 
  25.          exit(); 
  26.    }else{ 
  27.       
  28.       /*FONCTION POUR CRYPTER LE PASSWORD*/ 
  29.       $passcrypt = md5($this->password); 
  30.       
  31.       echo "Bonjour:<tr><td>$passcrypt</td></tr>AAA<br>"; 
  32.       
  33.       $recordSet = &$conn->Execute("select * from ecomic.compte_utilisateur where mail='$this->login' and passcrypt='$passcrypt'"); 
  34.       
  35.       if (!$recordSet) 
  36.          print $conn->ErrorMsg(); 
  37.       
  38.       else{ 
  39.          while (!$recordSet->EOF) { 
  40.             print $recordSet->fields[0].' '.$recordSet->fields[1].' '.$recordSet->fields[2].' '.$recordSet->fields[3].'
  41.             '.$recordSet->fields[4].''.$recordSet->fields[5].''.$recordSet->fields[6].''.$recordSet->fields[7].'
  42.             '.$recordSet->fields[8].'<BR>'; 
  43.             $this->statut =$recordSet->fields[6]; 
  44.             echo ' le statut est:'.$this->statut; 
  45.                         
  46.             //REDIRECTION VERS LES PAGES D'ACCUEIL POUR CHAQUE STATUT
  47.             if($this->statut == 'administrateur'){ 
  48.                echo'je suis la'; 
  49.                $menu->menu_administrateur(); // Redirection vers menu.class.php
  50.                exit();  
  51. }  
  52. elseif ($this->statut == 'partenaire'){ 
  53.                echo'Me voici'; 
  54.                $menu->menu_partenaire(); // Redirection vers menu.class.php
  55.                exit();  
  56. }  
  57. elseif($this->statut == 'adherent'){ 
  58.                echo'coucou'; 
  59.                $menu->menu_adherent(); // Redirection vers menu.class.php
  60.                exit();  
  61. } 
  62.             $recordSet->MoveNext(); 
  63.             $recordSet->Close(); # optional
  64.          } 
  65.       
  66.       } 
  67.    } 
  68.        
  69.    $conn->Close(); # optional
  70.    
  71.  
  72. ?> 
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Les conditions ne sont pas vérifiées, sinon il rentrerait dedans.

Tu vois quel echo ?

Sinon, fait un print_r de $this tu seras fixé.

PS : merci d'utiliser le BBCode.
celia
celia
Déconnecté
Au fait je vois le echo juste après la requete sql:

echo ' le statut est:'.$this->statut;

Ca me prouve que ma requête marche
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Oui, mais après, pour les if.
Tu vois dans lequel il rentre ? (grâce à tes echo).

Et un print_r de $this ne t'aide pas à débugguer ?
celia
celia
Déconnecté
je cois que le problème vient de l'opérateur de comparaison == .
Si je mets :

if($this->statut = 'administrateur')=> il rentre et m'affiche bien le
echo'je suis la';
avec == il ne rentre pas et même avec === il ne rentre pas.
et même effet qd j'utilise le print_r print_r($this->statut);
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Si tu mets qu'un =, c'est normal qu'il rentre dans le if : il modifie la valeur du statut.
Laisse les deux =, et avant ces if, fait un print_r($this).

Tu auras la réponse à tes problèmes en voyant ce que ça affiche.

Bref, ça affiche quoi ce print_r ?
celia
celia
Déconnecté
voila ce qu'il m'affiche le print_r de $this :

Object ( [statut] => administrateur [login] => toto@hotmail.com [password] => vivi )
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Donc tu dois voir le echo 'je suis la'; non ?

(fait un exit juste apres le echo 'je suis la';)
celia
celia
Déconnecté
Non je ne vois pas mon echo 'je suis là';

et même avec le exit; juste après le echo
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Au fait je vois le echo juste après la requete sql:

echo ' le statut est:'.$this->statut;


Et tu vois quoi la ?
celia
celia
Déconnecté
je vois la même chose que toi:
echo ' le statut est:'.$this->statut;
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Nan, mais en théorie, ça doit afficher la valeur de $this->statut et non '$this->statut'.
celia
celia
Déconnecté
au fait je vois :
echo ' le statut est:'.$this->statut;

et ca m'affiche bien administrateur.
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Breizh Blog