Afficher le résultat d'une requête SQL

Bonjour!

Je n'arrive pas à afficher les données de ma base de données... Quand je veux que le résultat de ce code PHP s'affiche:
<?php
session_start();
if (!isset($_SESSION['login'])) {
 header ('Location: ***');
 exit(); 
include ('connexionBDD.php');
$base = mysql_connect ('***', '***', '***');
mysql_select_db ('***', $base);
// on crée la requete SQL 
$sql = mysql_query ("SELECT * WHERE membre FROM login = '".$_SESSION["login"]."' ") ;  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result ($req);
mysql_close ();
}
?>


Avec cette variable là:

Bienvenue <?php echo $data['login']; ?>


La page s'affiche normalement mais hélas, le login lui ne s'affiche pas.

Pourriez-vous m'aider?

Merci!

4 réponses

  1. Modérateur
    Déjà ta condition :
    if (!isset($_SESSION['login'])) {
    

    Arrête ton script PHP au exit(); Donc, tu ne passe pas dans le reste du code.

    Ensuite,
    include ('connexionBDD.php');
    $base = mysql_connect ('***', '***', '***');
    

    Il n'y a pas redondance ?

    Petit rappel, l'extension mysql est obsolète

    J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
    En VB.NET pensez à activer "Option Explicit" et "Option Strict"
    1. Modérateur
      Bonjour

      tu as aussi inverse le WHERE et le FROM dans ta requête.
      1. Modérateur
        Tu peux ajouter la logique de ces 2 lignes :
        $sql = mysql_query ("SELECT * WHERE membre FROM login = '".$_SESSION["login"]."' ") ;  
        $req = mysql_query($sql)
      2. Modérateur
        ... c'est bien de cette requête dont je parlais. ..
      3. Modérateur
        Récupérer le résultat d'une requête pour refaire une requête avec ça ne peut pas fonctionner.
    2. J'ai changé le code en fonction de ce que vous m'avez dit mais je ne trouve pas l'erreur car toujours rien ne s'affiche
      <?php
      session_start();
      if (!isset($_SESSION['login'])) {
       header ('Location: ***');
      $base = mysql_connect ('***', '***', '***');
      mysql_select_db ('***', $base);
      $sql = mysql_query ("SELECT * FROM membre WHERE login = '".$_SESSION["login"]."' ") or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
      $data = mysql_fetch_array($sql);
      mysql_free_result ($data);
      mysql_close ();
       exit(); 
      }
      ?>
      1. Tu remplaces :
        $data = mysql_fetch_array($sql);

        par, me semble-t-il :
        foreach $sql as $array {
        echo $array['<nom_de_la_colonne>'];
        }

        Bien sûr, tu remplaces <nom_de_la_colonne> par le nom du champ de la table membre de ta base sql.
    3. Modérateur
      Bon...
      voici le code corrigé :

      <?php
      //Démarrage "propre" des sessions :
      if(session_id() == '') {
          session_start();
      }
      //---------------------------------
      //Connexion à la BDD 
      //---------------------------------
      require_once 'connexionBDD.php';
      
      //---------------------------------
      //Récupération "propre" des variables
      //---------------------------------
      $Session_login = !empty($_SESSION['login'])?$_SESSION['login']:NULL;
      
      
      if ($Session_login) {
        //---------------------------------
        // récupération des informations du user
        //---------------------------------
      
        //on met la requête dans une variable ($sql)
        $sql = "SELECT * FROM membre WHERE login = '$Session_login' ";
      
        // on execute la requete :
        $resultat = mysql_query ($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      
        // retourne un tableau qui contient la première ligne de $resultat
        $data = mysql_fetch_array($resultat);
      
        mysql_free_result ($data);
        mysql_close ();
      
      }else{
        //---------------------------------
        //redirection si non connecté 
        //---------------------------------
       header ('Location: ***');
       exit();
      }
      
      ?>
      
      
      <!-- Le reste de ton code .. par exemple : -->
      <!doctype html>
      <html>
      <head>
       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
       <title>TEST</title>
      </head>
      <body>
      
       <?php
        if(count($data)>0){
           // si la requête a retourné un résultat 
           echo " Bienvenue ".$data['login']: 
         }
        ?>
      
      </body>
      </html>
      
      


      Par contre.... comme déjà dit auparavent.. tu utilises l'ancienne extension mysql... il serait préférable que tu passes à mysqli_* ou (je préfère...) la PDO.
      Merci de lire ceci :

      https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

      https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli

      .

      EDIT : Ajout de la vérification sur le résultat de la requête avant d'afficher le "bonjour.."

      Cordialement,
      Jordane
      1. Avec ce code:
        <?php
        //Démarrage "propre" des sessions :
        if(session_id() == '') {
            session_start();
        }
        //---------------------------------
        //Connexion à la BDD 
        //---------------------------------
        require_once ('connexionBDD.php');
        
        //---------------------------------
        //Récupération "propre" des variables
        //---------------------------------
        $Session_login = !empty($_SESSION['login'])?$_SESSION['login']:NULL;
        
        
        if ($Session_login) {
          //---------------------------------
          // récupération des informations du user
          //---------------------------------
        
          //on met la requête dans une variable ($sql)
          $sql = "SELECT * FROM membre WHERE login = '$Session_login' ";
        
          // on execute la requete :
          $resultat = mysql_query ($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
        
          // retourne un tableau qui contient la première ligne de $resultat
          $data = mysql_fetch_array($resultat);
        
          mysql_free_result ($data);
          mysql_close ();
        
        }
        
        else{
          //---------------------------------
          //redirection si non connecté 
          //---------------------------------
         header ('Location: ***');
         exit();
        }
        
        ?>


        Il y a toujours un problème vu que le login ne s'affiche pas et une erreur s'affiche:
        Warning: mysql_free_result() expects parameter 1 to be resource, array given in *** on line 31

        EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
        Explications disponibles ici : ICI

        Merci d'y penser dans tes prochains messages.
      2. Modérateur
        Une erreur. ... LAQUELLE ??
      3. Warning: mysql_free_result() expects parameter 1 to be resource, array given in *** on line 31
      4. Modérateur
        Oui en effet.. j'ai bêtement copié ton code....

        Modifie comme ceci :
          // on execute la requete :
          $resultat = mysql_query ($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
        
          // retourne un tableau qui contient la première ligne de $resultat
          $data = mysql_fetch_array($resultat);
        
          mysql_free_result($resultat);
          mysql_close ();
        
      5. Il y a cette fois ci un problème sur Else :

        Parse error: syntax error, unexpected T_ELSE in /home/u816654343/public_html/connect/index.php on line 34