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

Codedu59 -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
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. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    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"
    0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour

    tu as aussi inverse le WHERE et le FROM dans ta requête.
    0
    1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Tu peux ajouter la logique de ces 2 lignes :
      $sql = mysql_query ("SELECT * WHERE membre FROM login = '".$_SESSION["login"]."' ") ;  
      $req = mysql_query($sql)
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      ... c'est bien de cette requête dont je parlais. ..
      0
    3. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Récupérer le résultat d'une requête pour refaire une requête avec ça ne peut pas fonctionner.
      0
  3. Codedu59
     
    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(); 
    }
    ?>
    0
    1. totoyo47 Messages postés 291 Statut Membre 134
       
      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.
      0
  4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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
    0
    1. Codedu59
       
      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.
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Une erreur. ... LAQUELLE ??
      0
    3. Codedu59
       
      Warning: mysql_free_result() expects parameter 1 to be resource, array given in *** on line 31
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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 ();
      
      0
    5. Codedu59
       
      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
      0