Afficher le résultat d'une requête SQL
Codedu59
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
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:
Avec cette variable là:
La page s'affiche normalement mais hélas, le login lui ne s'affiche pas.
Pourriez-vous m'aider?
Merci!
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
-
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" -
Bonjour
tu as aussi inverse le WHERE et le FROM dans ta requête.
-
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(); } ?> -
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-
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. -
-
-
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 (); -
-