Problème variable session

Petit nouveau ! | 5 Messages

17 mai 2012, 22:52

Bonjour à tous!
Les utilisateurs se connectent sur le site correctement via un formulaire, quand ils cliquent sur "valider" ils vont sur un fichier php. Soit l'identifiant et mdp correspondent à la base de données (ils iront vers une page de modération) ou alors cela ne correspond pas (page d'erreur).
Sur la page php, je crée 3 variable session : le numero d'adhérent, leur nom et leur prenom. Je vais chercher ces 2 derniers grâce à une requête SQL.
J'affiche ensuite ces variable sur la page de modération, mais ce sont 2 zéros qui apparraissent...Je ne trouve pas d'où vient le problème.

Fichier PHP
<?php
	// Démarrage d'une session
		session_start();
	
	// Récupération des données saisies dans le formulaire d'accueil
		$numerochef=$_POST['NumChef'];
		$motdepassechef=$_POST['mdpChef'];
	
	// Connexion au serveur
		$db=mysql_connect("**","**","**") or die("erreur de connexion".mysql_error());
	
	// Ouverture de la base **
		mysql_select_db("**",$db) or die("erreur de connexion à la base **");
	
	// Creation variable de session
		$_SESSION['NumChef']=$numerochef;	
			
	// Exécution de la requête
		$nomchef=mysql_query("SELECT NomChef FROM CHEF WHERE NumChef='$numerochef'");
		
	// Création de la variable de session
		$_SESSION['NomChefSession']=$nomchef;

	// Exécution de la requête
		$prenomchef=mysql_query("SELECT PrenomChef FROM CHEF WHERE NumChef='$numerochef'");
	
	// Création de la variable de session
		$_SESSION['PrenomChefSession']=$prenomchef;
...
Page de modération
<?php
		session_start();
				
?>
<html>
<head> 
 
 <link rel="stylesheet" type="text/css" href="Style.css">
</head>

    <!-- L'en-tête -->
<div id="en_tete">
                    <a href="index1.html" ><img src="images/entete_standard.png"></a>
</div>
    <!-- Le menu de gauche -->
<div id="menu">

    <div class="element_menu_titres">
        Le Club
    </div>
    
    <div class="element_menu">
        <a href="index1.html" >Présentation</a>
    </div>
    
    <div class="element_menu">
        <a href="formulaireinscription.html" > S'inscrire</a>
    </div>
    
    <div class="element_menu">
        <a href="coursproposes.php" > Nos cours</a>
    </div>
    
    <div class="element_menu_titres">
        Membres
    </div>
    
    <div class="element_menu">
        <a href="ConnexionAdherent.html" >Espace Adhérent</a>
    </div>
    
    <div class="element_menu">
        <a href="ConnexionChef.html" >Espace Chef</a>
    </div>
</div>
    <!-- Le corps -->

<div id="corps">
 <h1> Bienvenus dans votre espace de modération <?php echo $_SESSION['NomChefSession'] . ' ' . $_SESSION['PrenomChefSession']; ?> </h1>
...
Besoin de votre aide SVP :)

Eléphant du PHP | 451 Messages

17 mai 2012, 23:01

Normal car tu fais des mysql_query mais après tu ne fais pas de mysql_fetch_array ou object ou autre du coup tes variables ne retourne rien et c'est pour ça que tu as un zéro.

Voici un exemple de requête:
$sql = "SELECT * FROM matable WHERE monchamp = $mavar";
$req = mysql_query($sql);
$res = mysql_fetch_object($req);

echo $res->monchamp; // monchamp sera égale à se qu'il y a en BDD

Petit nouveau ! | 5 Messages

17 mai 2012, 23:14

Merci,
Je viens de rajouter ca en dessous du mysql query, maintenant il n'y a plus de 0 mais un "Array" à la place
$affichenomchef = mysql_fetch_array($nomchef);

Eléphant du PHP | 451 Messages

17 mai 2012, 23:24

Fait:
$_SESSION['NomChefSession'] = $affichenomchef[0];
Le 0 entre crochet te permet de sélectionner la première valeur du tableau.

Petit nouveau ! | 5 Messages

17 mai 2012, 23:32

J'ai mis ce que tu as dit
	// Exécution de la requête
		$nomchef=mysql_query("SELECT NomChef FROM CHEF WHERE NumChef='$numerochef'");
		$affichenomchef = mysql_fetch_object('$nomchef');
		
	// Création de la variable de session
		$_SESSION['NomChefSession'] = $affichenomchef[0]
Mais toujours array à la palce du nom, ou object quand je remplace le array...

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

18 mai 2012, 00:01

Salut,


Le mieux la c'est d'apprendre la base sur un cour ;)
=> http://www.lephpfacile.com/cours/13-aff ... votre-base

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 60 Messages

18 mai 2012, 09:10

@Milk_Sheiik54

Bonjour,

dans les deux cas tu y étais presque mais tu t'y es mal pris si près du but.

1/ Cas mysql_fetch_array
Ta requête te donne un tableau de résultats du type
Array
(
    [0] => Array
        (
            [NomChef ] => Nom du chef 01
        )

    [1] => Array
        (
            [NomChef] => Nom du chef 02
        )

)
Du coup quand tu fais
$affichenomchef = mysql_fetch_array($nomchef);
$_SESSION['NomChefSession'] = $affichenomchef[0];
$affichenomchef[0] est la première valeur du tableau de résultat, qui est elle-même un tableau associatif
Array
        (
            [NomChef ] => Nom du chef 01
        )
A partir de là tu devrais savoir comment extraire la valeur qu'il te faut.

2/ Cas mysql_fetch_object
Similaire au précédent sauf que dans ton tableau de résultat, tu as non pas des tableaux comme sous éléments mais des objets.
Chacun de ces sous-objets a comme propriété, le champ demandé dans ta requête sql.

Par exemple si
$premierObjet = $affichenomchef[0];
le nom du chef correspondant sera $premierObjet->NomChef

Ceci dit, un rappel des bases comme te l'as suggéré @moogli me semble indispensable.


Bon courage.
"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein.

Petit nouveau ! | 5 Messages

18 mai 2012, 15:31

Bonjour,
J'ai donc rajouté :
// Exécution de la requête
		$nomchef=mysql_query("SELECT NomChef FROM CHEF WHERE NumChef='$numerochef'");
		$affichenomchef = mysql_fetch_array($nomchef);
		mysql_free_result ($nomchef);  
		
	// Création de la variable de session
		$_SESSION['NomChefSession'] = $affichenomchef[0];

	// Exécution de la requête
		$prenomchef=mysql_query("SELECT PrenomChef FROM CHEF WHERE NumChef='$numerochef'");
		$afficheprenomchef = mysql_fetch_array($prenomchef);
		mysql_free_result ($prenomchef);  
		
	// Création de la variable de session
		$_SESSION['PrenomChefSession']=$prenomchef;
Désormais, la page "reponsable.php" m'affiche le nom, mais toujours un 0 pour le prénom, alors que j'ai repris le même modèle...

Petit nouveau ! | 5 Messages

18 mai 2012, 17:07

c'est bon, problème résolu, j'avais oublié de modifier la ligne de création de la variable du prenom!
J'ai donc mis :
	// Création de la variable de session
		$_SESSION['PrenomChefSession'] = $afficheprenomchef[0];
Merci à tous :)