Problème if else header

Résolu/Fermé
bryce78 Messages postés 27 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 7 décembre 2011 - 11 juin 2011 à 21:20
bryce78 Messages postés 27 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 7 décembre 2011 - 11 juin 2011 à 22:45
Bonjour,

Je suis en train de réaliser un site avec une partie où l'utilisateur qui se logue est renvoyé sur une page bien précise, celle qui correspond à cet utilisateur. Pour cela je souhaite utiliser un if, else if et header mais je n'y parvient pas.

Voici mon code:


<?php
require("conf.php");

/*-----------------------------------------------------------------*/
/* PROGRAMME PRINCIPAL */
/*-----------------------------------------------------------------*/

// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>".$sql_bdd."</b> sur le serveur <b>".$sql_server."</b><br>Vérifiez les paramètres du fichier conf.php"; exit;}
if (isset($_POST['pseudo_membre']) and isset($_POST['passe_membre'])) {

$pseudo_membre=$_POST['pseudo_membre'];
$passe_membre=$_POST['passe_membre'];

// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
// MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
$requete=mysql_select_db($sql_bdd,$db_link);
$requete=mysql_query("select pseudo,passe from membre where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\"") or die(mysql_error());


// SI AUCUN ENREGISTREMENT NE CORRESPOND
if(mysql_num_rows($requete)==0)
{

header("Location:$url_erreur");}


else { if($pseudo=="usinage")
header("Location:inter-atelier.php");}
else { if($pseudo=="logistique")
header("Location:inter_logistique.php");}
else { if($pseudo=="moulage")
header("Location:inter-atelier.php");}
else { if($pseudo=="lambda")
header("Location:atelier.php");}
else { if($pseudo=="peinture")
header("Location:inter-atelier.php");}



// DECONNEXION MYSQL
mysql_close($db_link);
?>




Lorsque le pseudo et le passe sont juste, c'est toujours la page inter-atelier.php qui s'affiche.

Je ne comprends pas pourquoi.

Merci de votre aide


3 réponses

Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 206
11 juin 2011 à 21:47
salut,

les if se placent avant l'accolade

else if ($pseudo=="usinage") {
0
bryce78 Messages postés 27 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 7 décembre 2011
11 juin 2011 à 22:18
Merci de ta réponse Meoran, mais ça ne fonctionne toujours pas.

Voici mon code avec les modifs dont tu parles:



<?php
require("conf.php");

/*-----------------------------------------------------------------*/
/* PROGRAMME PRINCIPAL */
/*-----------------------------------------------------------------*/

// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>".$sql_bdd."</b> sur le serveur <b>".$sql_server."</b><br>Vérifiez les paramètres du fichier conf.php"; exit;}
if (isset($_POST['pseudo_membre']) and isset($_POST['passe_membre'])) {

$pseudo_membre=$_POST['pseudo_membre'];
$passe_membre=$_POST['passe_membre'];

// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
// MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
$requete=mysql_select_db($sql_bdd,$db_link);
$requete=mysql_query("select pseudo,passe from membre where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\"") or die(mysql_error());


// SI AUCUN ENREGISTREMENT NE CORRESPOND
if(mysql_num_rows($requete)==0)
{

header("Location:$url_erreur");}


else if($pseudo=="usinage"){
header("Location:inter-atelier.php");}
else if($pseudo=="logistique"){
header("Location:inter_logistique.php");}
else if($pseudo=="moulage"){
header("Location:inter-atelier.php");}
else if($pseudo=="lambda"){
header("Location:atelier.php");}
else if($pseudo=="peinture"){
header("Location:inter-atelier.php");}

}

// DECONNEXION MYSQL
mysql_close($db_link);
?>





et voici le message d'erreur que j'obtiens:



( ! ) Notice: Undefined variable: pseudo in C:\wamp\www\login.php on line 29
Call Stack
# Time Memory Function Location
1 0.0007 378000 {main}( ) ..\login.php:0

( ! ) Notice: Undefined variable: pseudo in C:\wamp\www\login.php on line 31
Call Stack
# Time Memory Function Location
1 0.0007 378000 {main}( ) ..\login.php:0

( ! ) Notice: Undefined variable: pseudo in C:\wamp\www\login.php on line 33
Call Stack
# Time Memory Function Location
1 0.0007 378000 {main}( ) ..\login.php:0

( ! ) Notice: Undefined variable: pseudo in C:\wamp\www\login.php on line 35
Call Stack
# Time Memory Function Location
1 0.0007 378000 {main}( ) ..\login.php:0

( ! ) Notice: Undefined variable: pseudo in C:\wamp\www\login.php on line 37
Call Stack
# Time Memory Function Location
1 0.0007 378000 {main}( ) ..\login.php:0



Une autre idée?

Merci!
0
bryce78 Messages postés 27 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 7 décembre 2011
11 juin 2011 à 22:20
Pardon, la ligne 29 correspond au premier else if
0
Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 206
Modifié par Meoran le 11/06/2011 à 22:31
Re,

l'erreur est on ne peut plus clair, la variable pseudo n'est pas défini... Et il a raison où la définis tu dans ton code ?? ^^

Tu fais une requête sql, tu récupères le résultat mais il faut le rendre exploitable avant de l'utiliser ;)

$array = $requête->fetch();

if (empty($array)) {
...
}
else if ($array['pseudo'] == 'usinage') {
...
}
...
0
Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 206
Modifié par Meoran le 11/06/2011 à 22:33
Et puis prendre l'habitude de regarder la doc des fonctions que l'on utilise fréquemment pour en apprendre un peu plus sur leurs valeurs de retour par exemple...

http://fr2.php.net/manual/fr/function.mysql-query.php
0
bryce78 Messages postés 27 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 7 décembre 2011
11 juin 2011 à 22:38
Merci encore Meoran pour tes conseils, mais je suis débutant et je ne comprends pas très bien.

Peux-tu être un peu plus clair?

Que faut-il mettre entre le if (empty($array)) { et le else if...

A quel endroit dans mon code ci-dessus dois-je insérer $array = $requête->fetch();

if (empty($array)) {

Merci
0
Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 206
11 juin 2011 à 22:43
Salut,

récupérer un pseudo dans ta base de données ne créer pas pour autant une variable $pseudo dans ton code php.

Le $array = $requête->fetch(); permet de récupérer ce pseudo dans un tableau.

Fait un print_r($array) juste après le fetch, tu verras ce qu'il contient concrètement ;)

SInon le code :


$requete=mysql_query("select pseudo,passe from membre where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\"") or die(mysql_error());


$array = $requête->fetch();

print_r($array);

if (empty($array)) {
header("Location:$url_erreur");
}
else if ($array['pseudo'] == 'usinage') {
header("Location:inter-atelier.php");
}
etc etc...
0
bryce78 Messages postés 27 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 7 décembre 2011
11 juin 2011 à 22:45
C'est bon je viens de trouver la solution!!!

Voici le code modifié:



<?php
require("conf.php");

/*-----------------------------------------------------------------*/
/* PROGRAMME PRINCIPAL */
/*-----------------------------------------------------------------*/

// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);

if (isset($_POST['pseudo_membre']) and isset($_POST['passe_membre'])) {

$pseudo_membre=$_POST['pseudo_membre'];
$passe_membre=$_POST['passe_membre'];

// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
// MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
$requete=mysql_select_db($sql_bdd,$db_link);
$requete=mysql_query("select pseudo,passe from membre where pseudo=\"$pseudo_membre\" and passe=\"$passe_membre\"") or die(mysql_error());


// SI AUCUN ENREGISTREMENT NE CORRESPOND

if(mysql_num_rows($requete)==0)
{

header("Location:$url_erreur");}


elseif($pseudo_membre=="usinage"){
header("Location:inter-atelier.php");}
elseif($pseudo_membre=="logistique"){
header("Location:inter_logistique.php");}
elseif($pseudo_membre=="moulage"){
header("Location:inter-atelier.php");}
elseif($pseudo_membre=="lambda"){
header("Location:atelier.php");}
elseif($pseudo_membre=="peinture"){
header("Location:inter-atelier.php");}
}


// DECONNEXION MYSQL
mysql_close($db_link);
?>


Merci encore!
0