Problème PHP

Bonjour,
on a un balise select dans un formulaire d'inscription :
Situation: </td><td><select name="situation" value="<?php if (isset($_POST['situation'])) echo htmlentities(trim($_POST['situation'])); ?>">
<option value="enseignant">Enseignants</option>
<option value="personnel">Personnels Administratifs</option>
<option value="etudiant">Etudiants</option>
</select></td></tr>
on veut afficher les pages(membre.php,membre1.php..) selon le choix de la balise select:
par ex si un membre a choisi enseignant alors il va acceder a la page membre1.php,
si un membre a choisi personne administratif il va acceder a la page membre.php;
voici mon code mais sa ne marche pas,
if ($data[0] == 1) {
$_SESSION['login'] = $_POST['login'];
session_start();
if ($_POST['situation'] == "enseignant")
{ header('Location: membre1.php'); }
elseif ($_POST['situation'] == "personnel")
{ header('Location: membre.php'); }
else ($_POST['situation'] == "etudiant")
{
header('Location: membre2.php');
}
}
exit();

}
s'il vous plais veuillez proposer une solution. Merci d'avance.
Configuration: Windows Vista / Safari 532.5

5 réponses

  1. J'avais pas vu que tu avais SELECT COUNT donc essayes comme ça:
    <?php
    // on teste si le visiteur a soumis le formulaire de connexion
    if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
    	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
    
    		mysql_connect ('localhost', 'root', '');
    		mysql_select_db ('base');
    
    		// on teste si une entrée de la base contient ce couple login / pass
    		$sql = 'SELECT COUNT(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass="'.mysql_escape_string(md5($_POST['pass'])).'"';
    		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		//$nombre_rep=mysql_num_rows($req); //compte le nombre de reponses
    		$data = mysql_fetch_array($req);
    
    		mysql_free_result($req);
    
    		// si on obtient une réponse, alors l'utilisateur est un membre
    		if ($data[0] == 1) {
    			session_start(); //il faut mettre session start avant de charger la variable de session
    			$_SESSION['login'] = $_POST['login'];			
    
    			if(isset($_POST['situation'])){ //le choix a ete fait
    				//recup du choix
    				$situation=$_POST['situation'];
    				//on va switcher en fct du choix
    				switch($situation){
    					case 'enseignant':
    					header('Location: membre1.php');
    					break;
    					case 'personnel': //erreur la, je n'avait pas mis le bon
    					header('Location: membre.php');
    					break;
    					case 'etudiant': //erreur la, je n'avait pas mis le bon
    					header('Location: membre2.php');
    					break;
    				}
    			}
    		}
    	}
    } //il manquait 3 accolades 
    ?>
    <html>
    <head>
    <title>Accueil</title>
    </head>
    
    <body>
    <?php include "menu1.php"; ?>
    <div class="art-Block">
    <div class="art-Block-tl"></div>
    <div class="art-Block-tr"></div>
    <div class="art-Block-bl"></div>
    <div class="art-Block-br"></div>
    <div class="art-Block-tc"></div>
    <div class="art-Block-bc"></div>
    <div class="art-Block-cl"></div>
    <div class="art-Block-cr"></div>
    <div class="art-Block-cc"></div> 
    <div class="art-Block-body">
    <div class="art-BlockHeader">
    <div class="l"></div>
    <div class="r"></div>
    <div class="art-header-tag-icon">
    <div class="t">Espace Intranet</div>
    </div>
    </div><div class="art-BlockContent">
    <div class="art-BlockContent-body">
    <div>
    
    <table><form action="intranett.php" method="post">
    <p><tr><td>Login :</td></tr>
    <tr><td><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"></td></tr>
    
    <tr><td>Mot de passe : </td></tr>
    <tr><td> <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"></td></tr>
    
    <tr><td><input type="submit" name="connexion" value="Connexion"></td></tr>
    </p>
    <p><tr><td><a href="inscription.php" >Vous inscrire</a></td></tr>
    <tr><td><?php
    if (isset($erreur)) echo '<br /><br />',$erreur;
    ?></td></tr>
    </p>
    </form></table>
    </div>
    </div>
    </div>
    </div>
    </div>
    <br><br><br>
    </body>
    </html>
    1. on n'a pas un erreur et la page s'affiche mais on cliquons sur le bouton connexion on ne trouve rien c à d il n'a y pas Access aux pages:membre.php,.....
      1. il te manquait 3 accolades fermantes !
        quand il y a une erruer en fin de code c'est ça en généarl: manque accolades fermantes
        tu as rajouté des if sans la fin

        <?php
        // on teste si le visiteur a soumis le formulaire de connexion
        if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
        	if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
        
        		mysql_connect ('localhost', 'root', '');
        		mysql_select_db ('base');
        
        		// on teste si une entrée de la base contient ce couple login / pass
        		$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass="'.mysql_escape_string(md5($_POST['pass'])).'"';
        		$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
        		$nombre_rep=mysql_num_rows($req); //compte le nombre de reponses
        		$data = mysql_fetch_array($req);
        
        		mysql_free_result($req);
        
        		// si on obtient une réponse, alors l'utilisateur est un membre
        		if ($nombre_rep == 1) {
        			session_start(); //il faut mettre session start avant de charger la variable de session
        			$_SESSION['login'] = $_POST['login'];			
        
        			if(isset($_POST['situation'])){ //le choix a ete fait
        				//recup du choix
        				$situation=$_POST['situation'];
        				//on va switcher en fct du choix
        				switch($situation){
        					case 'enseignant':
        					header('Location: membre1.php');
        					break;
        					case 'personnel': //erreur la, je n'avait pas mis le bon
        					header('Location: membre.php');
        					break;
        					case 'etudiant': //erreur la, je n'avait pas mis le bon
        					header('Location: membre2.php');
        					break;
        				}
        			}
        		}
        	}
        } //il manquait 3 accolades 
        ?>
        <html>
        <head>
        <title>Accueil</title>
        </head>
        
        <body>
        <?php include "menu1.php"; ?>
        <div class="art-Block">
        <div class="art-Block-tl"></div>
        <div class="art-Block-tr"></div>
        <div class="art-Block-bl"></div>
        <div class="art-Block-br"></div>
        <div class="art-Block-tc"></div>
        <div class="art-Block-bc"></div>
        <div class="art-Block-cl"></div>
        <div class="art-Block-cr"></div>
        <div class="art-Block-cc"></div> 
        <div class="art-Block-body">
        <div class="art-BlockHeader">
        <div class="l"></div>
        <div class="r"></div>
        <div class="art-header-tag-icon">
        <div class="t">Espace Intranet</div>
        </div>
        </div><div class="art-BlockContent">
        <div class="art-BlockContent-body">
        <div>
        
        <table><form action="intranett.php" method="post">
        <p><tr><td>Login :</td></tr>
        <tr><td><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"></td></tr>
        
        <tr><td>Mot de passe : </td></tr>
        <tr><td> <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"></td></tr>
        
        <tr><td><input type="submit" name="connexion" value="Connexion"></td></tr>
        </p>
        <p><tr><td><a href="inscription.php" >Vous inscrire</a></td></tr>
        <tr><td><?php
        if (isset($erreur)) echo '<br /><br />',$erreur;
        ?></td></tr>
        </p>
        </form></table>
        </div>
        </div>
        </div>
        </div>
        </div>
        <br><br><br>
        </body>
        </html>
        
        1. Bonsoir,
          le session_start(); doit être placer avant tout ligne de code !!!!!!!!!
          exemple :
          <?php
          session_start();
          .....

          Sinon cela ne fonctionnera pas !
          1. bonjour,
            ce code ne contient pas d'erreur mais ne fonctionne pas, on ne peut pas accéder a ces pages .
        2. <?php
          //////ATTENTION cette partie de code php doit être au tout début de ta page avant toute balise HTML, ni ligne vide !!!!
          //sinon  le header('Location.....   ne marchera pas, tu auras un message d'erreur
          if(isset($_POST['situation'])){ //le choix a ete fait
          	//recup du choix
          	$situation=$_POST['situation'];
          	//on va switcher en fct du choix
          	switch($situation){
          		case 'enseignant':
          			header('Location: membre1.php');
          		break;
          		case 'enseignant':
          			header('Location: membre.php');
          		break;
          		case 'enseignant':
          			header('Location: membre2.php');
          		break;
          	}
          }
          
          ?>
          Situation: </td><td>
          <select  name="situation" >
          <!-- il ne faut pas mettre d'argument value dans la balise select -->
          <option value="enseignant">Enseignants</option>
          <option value="personnel">Personnels Administratifs</option>
          <option value="etudiant">Etudiants</option>
          </select></td></tr>
          1. voici mon code

            <?php

            // on teste si le visiteur a soumis le formulaire de connexion
            if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
            if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

            mysql_connect ('localhost', 'root', '');
            mysql_select_db ('base');

            // on teste si une entrée de la base contient ce couple login / pass
            $sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass="'.mysql_escape_string(md5($_POST['pass'])).'"';
            $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
            $data = mysql_fetch_array($req);

            mysql_free_result($req);

            // si on obtient une réponse, alors l'utilisateur est un membre
            if ($data[0] == 1) {
            $_SESSION['login'] = $_POST['login'];
            session_start();

            if(isset($_POST['situation'])){ //le choix a ete fait
            //recup du choix
            $situation=$_POST['situation'];
            //on va switcher en fct du choix
            switch($situation){
            case 'enseignant':
            header('Location: membre1.php');
            break;
            case 'enseignant':
            header('Location: membre.php');
            break;
            case 'enseignant':
            header('Location: membre2.php');
            break;
            }
            }
            ?>
            <html>
            <head>
            <title>Accueil</title>
            </head>

            <body>
            <?php include "menu1.php"; ?>
            <div class="art-Block">
            <div class="art-Block-tl"></div>
            <div class="art-Block-tr"></div>
            <div class="art-Block-bl"></div>
            <div class="art-Block-br"></div>
            <div class="art-Block-tc"></div>
            <div class="art-Block-bc"></div>
            <div class="art-Block-cl"></div>
            <div class="art-Block-cr"></div>
            <div class="art-Block-cc"></div>
            <div class="art-Block-body">
            <div class="art-BlockHeader">
            <div class="l"></div>
            <div class="r"></div>
            <div class="art-header-tag-icon">
            <div class="t">Espace Intranet</div>
            </div>
            </div><div class="art-BlockContent">
            <div class="art-BlockContent-body">
            <div>

            <table><form action="intranett.php" method="post">
            <p><tr><td>Login :</td></tr>
            <tr><td><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"></td></tr>

            <tr><td>Mot de passe : </td></tr>
            <tr><td> <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"></td></tr>

            <tr><td><input type="submit" name="connexion" value="Connexion"></td></tr>
            </p>
            <p><tr><td><a href="inscription.php" >Vous inscrire</a></td></tr>
            <tr><td><?php
            if (isset($erreur)) echo '<br /><br />',$erreur;
            ?></td></tr>
            </p>
            </form></table>
            </div>
            </div>
            </div>
            </div>
            </div>
            <br><br><br>
            </body>
            </html> j ai trouvé une erreur a ce niveau !!!!!!!
          2. @nadou<?php
            //////ATTENTION cette partie de code php doit être au tout début de ta page avant toute balise HTML, ni ligne vide !!!!
            //sinon le header('Location..... ne marchera pas, tu auras un message d'erreur
            if(isset($_POST['situation'])){ //le choix a ete fait
            //recup du choix
            $situation=$_POST['situation'];
            //on va switcher en fct du choix
            switch($situation){
            case 'enseignant':
            header('Location: membre1.php');
            break;
            case 'enseignant':
            header('Location: membre.php');
            break;
            case 'enseignant':
            header('Location: membre2.php');
            break;
            }
            }

            ?>
            Situation: </td><td>
            <select name="situation" >
            <!-- il ne faut pas mettre d'argument value dans la balise select -->
            <option value="enseignant">Enseignants</option>
            <option value="personnel">Personnels Administratifs</option>
            <option value="etudiant">Etudiants</option>
            </select></td></tr>

            mm ton code possede une erreur dans la fin