Récupération du champ nom

ViPHP
ViPHP | 2291 Messages

12 juil. 2006, 13:31

Bonjour,

J'ai un soucis, c'est à dire que je n'arrive pas à récupérer les champs "nom" de ma TABLE, le champs "login", et "url" aucun problème mais pas le champ "nom" rien pourquoi ?
// on teste si une entrée de la base contient ce couple login / pass
        $sql = 'SELECT url,nom FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"'; 
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
        $data = mysql_fetch_array($req);
        
        //mysql_free_result($req);
        mysql_close();
        
        // si on obtient une réponse, alors l'utilisateur est un membre
        //if ($data[0] == 1) {
		if (mysql_num_rows($req) == 1) { 
            session_start();
            $_SESSION['login'] = $_POST['login'];
            //header('Location:'.$url);
			$url = $data['url']; //avec url le nom du champ 
            header('Location:'.$url); 
            exit();
        }
        // si on ne trouve aucune réponse, le visiteru s'est trompé soit dans son login, soit dans son mot de passe
        elseif ($data[0] == 0) {
            $erreur = 'Compte non reconnu.';
        }
        // sinon, alors la, il y a un gros problème :)
        else {
            $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
        }
    }
    else {
        $erreur = 'Au moins un des champs est vide.';
    }
}
?>
J'ai j'imagine oublier quelque chose :oops: comme d'habitude :lol:

D'avance merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 juil. 2006, 14:12

J'ai j'imagine oublier quelque chose :oops: comme d'habitude :lol:
Je ne vois nulle part de variable
$data['nom']
Et c'est plus du PHP donc je déplace

Eléphant du PHP | 398 Messages

12 juil. 2006, 16:59

il me semble que header et session_start doivent êter placé avant tout code. donc le pbl peut-il venir de la?puis même je vois pas l interet du session_start alors que la session n est pas encore faite. met el en commentaire au cas ou :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juil. 2006, 17:12

BaLiSTiK >> header et session doivent être placés avant tout envoi de code html au navigateur. Rien ne t'empêche de faire des traitement php au préalable (et heureusement)

A l'endroit où il les place, il peut ne démarrer la session que si l'utilisateur s'est correctement authentifié, et ne fais la redirection qu'une fois que le login est en session. Si l'authentification est incorrecte, la session ne démarre pas, l'utilisateur n'est pas redirigé :)

Cela dit, comme l'a fait remarquer ouckileou, pour pouvoir récuperer et afficher le champ "nom", il faudrait que ce soit demandé dans le code, sinon c'est plutôt normal que php ne le fasse pas ;)

ViPHP
ViPHP | 2291 Messages

12 juil. 2006, 17:50

Salut,

Vous voyer je vous l'avais dit j'ai oublier :oops:
Mais comme quoi j'ai peur de rien :wink: vous le metriez ou le
$data['nom']
Et si il y en à un qui me répond dans document je pique une crise

D'avance merci :wink:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juil. 2006, 18:01

vous le metriez ou le
$data['nom']
Ben dans docum.. BAFFE!aïe ;)

Je vois pas trop comment on pourrait répondre à ta question... tu le mets là où toi tu en as besoin...
si c'est sur cette page, tu fais un echo là où tu veux qu'il apparaisse, si c'est sur la prochaine tu le passe en paramètre de l'url, si c'est sur toutes les autres tu le mets en session, si tu ne sais pas quoi en faire, tu ne le récupères pas et on en parle plus ;)

ViPHP
ViPHP | 2291 Messages

12 juil. 2006, 18:14

Je vois pas trop comment on pourrait répondre à ta question...
Oooooh mais c'est trés simple regarde bien le code ici
// on teste si une entrée de la base contient ce couple login / pass 
        $sql = 'SELECT url,nom FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"'; 
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
        $data = mysql_fetch_array($req); 
         
        //mysql_free_result($req); 
        mysql_close(); 
         
        // si on obtient une réponse, alors l'utilisateur est un membre 
        //if ($data[0] == 1) { 
        if (mysql_num_rows($req) == 1) { 
            session_start(); 
            $_SESSION['login'] = $_POST['login']; 
            //header('Location:'.$url); 
            $url = $data['url']; //avec url le nom du champ 
            header('Location:'.$url); 
            exit(); 
        } 
        // si on ne trouve aucune réponse, le visiteru s'est trompé soit dans son login, soit dans son mot de passe 
        elseif ($data[0] == 0) { 
            $erreur = 'Compte non reconnu.'; 
        } 
        // sinon, alors la, il y a un gros problème  
        else { 
            $erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.'; 
        } 
    } 
    else { 
        $erreur = 'Au moins un des champs est vide.'; 
    } 
} 
Et tu me dit ou toi tu placerais en ayant en tête qu'il devrais pouvoir être récupérer sur les autres pages...
Voilà et merci d'avance :P

ViPHP
ViPHP | 2291 Messages

12 juil. 2006, 20:41

Allô ??? :cry:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

12 juil. 2006, 21:04

Tu ajoutes le login en session fait en autant pour le "nom" de la base. Tu as déjà eu la forme pour l'appeler ne reste plus qu'à l'affecter.

En attendant tu peux toujours passer par un tuto pour apprendre les bases tu n'en sera que plus efficace par la suite :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 2291 Messages

13 juil. 2006, 14:49

Salut

Alors j'ai suivi tes conseils, mais devine je te montre mon nouveau code, tu va peut-être me dire ou j'ai encore fait l'endouille :wink:
// on teste si une entrée de la base contient ce couple login / pass
        $sql = 'SELECT url,nom FROM membre WHERE login="'.addslashes($_POST['login']).'" AND pass_md5="'.md5(addslashes($_POST['pass'])).'"'; 
        $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
        $data = mysql_fetch_array($req);
        $nom = $data ['nom'];
        
        mysql_close();
        
        // si on obtient une réponse, alors l'utilisateur est un membre        
		if (mysql_num_rows($req) == 1) { 
            session_start();
            $_SESSION['login'] = $_POST['login'];
			$_SESSION['nom'] = $nom;
            //'url' = adresse du champ "nom" correspondant au login de session de la TABLE membre 
			$url = $data['url']; 
            header('Location:'.$url); 
            exit();
        }
Et la page ou je voudrais appeller le "nom"
<?php
session_start();
if (!isset($_SESSION['login']) && !isset($_SESSION['nom'])) {
    header ('Location: index.php');
    exit();
}
?>

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="fr-be">
<title>Prestations du jour !</title>
<style>
<!--
.smallfont
{
	font: 9px verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
}
-->
</style>
</head>

<body background="img/grd-4px.gif" style="background-attachment: fixed">

<table border="0" id="table1" width="1240">
	<tr>
		<td>
		<p align="center"><font color="#0000FF" size="7"></font></p>
		</td>
	</tr>
	<tr>
		<td><font size="2"></font></td>
	</tr>
	<tr>
		<td><font size="2"></font></td>
	</tr>
	<tr>
		<td><font size="2">Tél : 0000000000</font></td>
	</tr>
</table>
<table border="0" id="table2" width="1240">
	<tr>
		<td>
		<p align="center"><font size="4">Encodage des prestations <font color="#FF0000">tvc</font>@ble<font color="#FF0000">net</font> 
        du jour.</font></p> <?
		 echo "bonjour,".$_SESSION['nom']."" ; 
		  ?>
			
D'avance merci :roll:
Modifié en dernier par dunbar le 13 juil. 2006, 15:17, modifié 1 fois.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

13 juil. 2006, 15:10

Ne mets pas d'espace
$nom = $data ['nom'];
devient
$nom = $data['nom'];
echo "bonjour, ".$_SESSION['nom'];

ViPHP
ViPHP | 2291 Messages

13 juil. 2006, 15:20

Que dire sinon merci :lol:
Ca fonctionne enfin !!
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.