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
    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
  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
    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.
  4. 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"