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

Fermé
Codedu59 - Modifié par Codedu59 le 22/08/2015 à 11:43
jordane45 Messages postés 36391 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 octobre 2022 - 24 août 2015 à 15:20
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

NHenry Messages postés 15001 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 6 octobre 2022 327
Modifié par jordane45 le 23/08/2015 à 03:10
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
jordane45 Messages postés 36391 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 octobre 2022 4 367
22 août 2015 à 14:15
Bonjour

tu as aussi inverse le WHERE et le FROM dans ta requête.
0
NHenry Messages postés 15001 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 6 octobre 2022 327
22 août 2015 à 14:27
Tu peux ajouter la logique de ces 2 lignes :
$sql = mysql_query ("SELECT * WHERE membre FROM login = '".$_SESSION["login"]."' ") ;  
$req = mysql_query($sql)
0
jordane45 Messages postés 36391 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 octobre 2022 4 367
22 août 2015 à 16:01
... c'est bien de cette requête dont je parlais. ..
0
NHenry Messages postés 15001 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 6 octobre 2022 327
22 août 2015 à 16:21
Récupérer le résultat d'une requête pour refaire une requête avec ça ne peut pas fonctionner.
0
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
totoyo47 Messages postés 260 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 30 mars 2020 128
Modifié par totoyo47 le 22/08/2015 à 22:46
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
jordane45 Messages postés 36391 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 octobre 2022 4 367
Modifié par jordane45 le 23/08/2015 à 03:13
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
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
jordane45 Messages postés 36391 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 octobre 2022 4 367
23 août 2015 à 13:27
Une erreur. ... LAQUELLE ??
0
Warning: mysql_free_result() expects parameter 1 to be resource, array given in *** on line 31
0
jordane45 Messages postés 36391 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 octobre 2022 4 367
Modifié par jordane45 le 23/08/2015 à 17:12
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
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