Problème de comparaison (php4 objet)

Répondre
celia
le 10/10/2007 à 09:27
celia
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:

<?php
include ("../../Menu/menu.class.php");

$this->statut =null;
$menu = new liste_menu();

/*ON RECUPERE PAR POST, LES VARIABLES login et password DEPUIS LE FORMULAIRE DE LA PAGE INDEX.PHP
CES DEUX VARIABLES SERONT ENVOYES DANS LA REQUETE SELECT POUR IDENTIFIER L'UTILISATEUR QUI VIENT DE SE LOGUER.*/

$this->login = $_POST["login"];
$this->password = $_POST["password"];


//UNE CONDITION POUR VERIFIER SI login et password SONT VIDES

if(!isset ($this->login) || trim($this->login) == ""){
$this->message1 = "E-mail obligatoire!";
$menu->menu_accueil();// Redirection vers menu.class.php
echo "<tr><td>$this->message1</td></tr>";
exit();
}else if(!isset ($this->password) || trim($this->password) == ""){
$this->message1 = "Mot de passe obligatoire!";
$menu->menu_accueil();// Redirection vers menu.class.php
echo "<tr><td>$this->message1</td></tr>";
exit();
}else{

/*FONCTION POUR CRYPTER LE PASSWORD*/
$passcrypt = md5($this->password);

echo "Bonjour:<tr><td>$passcrypt</td></tr>AAA<br>";

$recordSet = &$conn->Execute("select * from ecomic.compte_utilisateur where mail='$this->login' and passcrypt='$passcrypt'");

if (!$recordSet)
print $conn->ErrorMsg();

else{
while (!$recordSet->EOF) {
print $recordSet->fields[0].' '.$recordSet->fields[1].' '.$recordSet->fields[2].' '.$recordSet->fields[3].'
'.$recordSet->fields[4].''.$recordSet->fields[5].''.$recordSet->fields[6].''.$recordSet->fields[7].'
'.$recordSet->fields[8].'<BR>';
$this->statut =$recordSet->fields[6];
echo ' le statut est:'.$this->statut;

//REDIRECTION VERS LES PAGES D'ACCUEIL POUR CHAQUE STATUT
if($this->statut == 'administrateur'){
echo'je suis la';
$menu->menu_administrateur(); // Redirection vers menu.class.php
exit();
}
elseif ($this->statut == 'partenaire'){
echo'Me voici';
$menu->menu_partenaire(); // Redirection vers menu.class.php
exit();
}
elseif($this->statut == 'adherent'){
echo'coucou';
$menu->menu_adherent(); // Redirection vers menu.class.php
exit();
}
$recordSet->MoveNext();
$recordSet->Close(); # optional
}

}
}

$conn->Close(); # optional


?>
LA GLOBULE
le 10/10/2007 à 10:06
LA GLOBULE
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
le 10/10/2007 à 10:13
celia
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
le 10/10/2007 à 10:15
LA GLOBULE
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
le 10/10/2007 à 10:20
celia
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
le 10/10/2007 à 10:32
LA GLOBULE
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
le 10/10/2007 à 10:40
celia
voila ce qu'il m'affiche le print_r de $this :

Object ( [statut] => administrateur [login] => toto@hotmail.com [password] => vivi )
LA GLOBULE
le 10/10/2007 à 10:51
LA GLOBULE
Donc tu dois voir le echo 'je suis la'; non ?

(fait un exit juste apres le echo 'je suis la';)
celia
le 10/10/2007 à 10:58
celia
Non je ne vois pas mon echo 'je suis là';

et même avec le exit; juste après le echo
LA GLOBULE
le 10/10/2007 à 11:03
LA GLOBULE
Au fait je vois le echo juste après la requete sql:

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


Et tu vois quoi la ?
Répondre
LoadingChargement en cours