Afficher $id (clé primaire) sur une page PHP

Résolu
tagmc Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
tagmc Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un problème depuis 1 semaine que je n'arrive pas à résoudre :

formulaire de login : Admin_piece.php

<HTML>
<HEAD>
<TITLE>Connectez-vous</TITLE>
</HEAD>
<BODY>
<TABLE>
<FORM method="post" action="Connexion_Piece.php">
<TR><TD>Login :<BR><INPUT name="pseudo" type="text"></TD></TR>
<TR><TD>Mot de passe :<BR><INPUT name="pass" type="password"></TD></TR>
<TR><TD><INPUT type="submit" value="ok"></TD>
</TR>
</FORM>
</TABLE>
</BODY>
</HTML>

se connecter : Connexion_Piece.php
<?php
session_start();
$pseudo = $_POST["pseudo"] ;
$pass = $_POST["pass"] ;


$Id = mysql_connect("localhost" , "root" , "mysql");

if ($Id == False)
{
echo("La connexion a échoué") ;
}
else
{
$OkS = mysql_select_db ("piece" ) ;
if ($OkS == FALSE)
{
echo("La base de donnée est inexistante.") ;
}
else
{
// on recupère le password de la table qui correspond au login du visiteur
$sql = "SELECT * FROM `membre` WHERE `pseudo`='" . $pseudo . "'" ;
$ReqSQL = mysql_query($sql) ;
$data = mysql_fetch_array($ReqSQL) ;
$Nom = $data['pass'] ;

if($pseudo =="") // On vérifie que le champs message est rempli ( > si Message = rien )
{
echo("Le champ Membre est vide !"); // On dit que le champs message n'est pas rempli
echo("<BR>");
echo ("<A Href=\"Javascript:history.go(-1)\">retour</A>");
}
else if($pass =="") // On vérifie que le champs message est rempli ( > si Message = rien )
{
echo("Le champ Mot de Passe est vide !");
echo("<BR>");
echo ("<A Href=\"Javascript:history.go(-1)\">retour</A>"); // On dit que le champs message n'est pas rempli
}
else if($pseudo != $pass)
{
include('Recommence_Piece.html');
exit;
}


else if ($data['pass'] == $pass)
//Début de la session utilisateur si le login est bon
{
$_SESSION['pseudo'] = $pseudo;
include('compte.php');

}
else
{
echo '<p>Vous avez oublié de remplir un champ.</p>';
// On inclut le formulaire d'identification
include('Recommence_Piece.html');
exit;
}
}
}
?>

Pour le moment tout est bon, je me loge bien et ça marche, mais c'est la que ça se corse, car je souhaite afficher sur la page PHP l'ID associé au membre (qui me sera utile pour la suite du site, et il me le faut absolument):
compte.php
<HTML>
<HEAD>
</HEAD>
<BODY>
<?php
@session_start();
$Id = mysql_connect("localhost" , "root" , "mysql");
mysql_select_db ("piece" ) ;

$ResSQL = " SELECT * FROM membre WHERE pseudo = '$pseudo'";
$Res = mysql_query ( $ReqSQL ) ;

echo ("Bienvenue sur votre compte $pseudo !"); // le pseudo s'affiche bien !!
echo ("<BR>");
echo ("Votre identidiant est $id_membre"); // et la, c'est le drame : Notice: Undefined variable: id_membre in C:\Documents and Settings\Franck\Bureau\Nouveau dossier\piece\compte.php on line 18
echo ("<A Href=\"Form_Inserer_Piece.php\">Modifier vos pièces</A>");
echo ("<BR>");
echo ("<A Href=\"Deco_Piece.php\">Se déconnecter</A>");
mysql_close () ;
?>

Ensuite, sur la page Form_Inserer_Piece, j'aurais également besoin de récuperer l'ID pour le mettre dans ma requête SQL mais comme je n'arrive pas à l'afficher sur compte.php, je n'arrive pas à l'afficher sur le Form_Inserer-Piece.php


j'espere que j'ai été clair

Amicalement

Franck
A voir également:

10 réponses

PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
Bjr

Hum déjà pourquoi appelles-tu "@session_start();" dans compte.php sachant que la page Connexion_Piece.php
l'a déjà appellé et que compte.php est utilisé en tant qu'include ?

Ensuite si $id_membre n'est pas défini c'est tout simplement parce que tu ne l'as pas initialisé :
comment veux-tu que PHP devine qu'il doit lire cette variable depuis ta base de donnée ?

Ecrit plutôt :

$Res = mysql_query ( $ReqSQL ) ; 
$row = mysql_fetch_array($Res);
$id_membre = $row["id_membre"]; 


Evidemment ici je suppose que le champ dans ta table se nomme "id_membre"

1
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
Remplace
$Res = mysql_query ( $ReqSQL ) ;

par
$Res = mysql_query ( $ReqSQL ) or die (mysql_error());

Histoire de voir si tu n'aurais pas une erreur SQL
1
tagmc Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de ton aide Php mais j'ai un autre message d'erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Franck\Bureau\Nouveau dossier\piece\compte.php on line 12
mais il m'affiche bien le pseudo mais pas l'id

<?php
$Id = mysql_connect("localhost" , "root" , "mysql");
mysql_select_db ("piece" ) ;

$ResSQL = " SELECT * FROM membre WHERE pseudo = '$pseudo'";
$Res = mysql_query ( $ReqSQL ) ;
$row = mysql_fetch_array($Res);
$id_membre = $row["id_membre"];

echo ("Bienvenue sur votre compte $pseudo !");
echo ("<BR>");
echo ("Votre identidiant est $id_membre");

echo ("<A Href=\"Form_Inserer_Piece.php\">Modifier vos pièces</A>");

echo ("<A Href=\"Deco_Piece.php\">Se déconnecter</A>");
mysql_close () ;

?>

PS : oui oui, ma clé primaire auto-incrémenté est id_membre
0
tagmc Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
j'obtient le message suivant :

Erreur de syntaxe près de 'Resource id #3' à la ligne 1
0
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
Ok

$ResSQL = " SELECT * FROM membre WHERE pseudo = '$pseudo'";
$Res = mysql_query ( $ReqSQL ) ;

C'est ReqSQL avec un "q" ou ResSQL avec un "s" il faut choisir mais pas les 2 !

Donc écrit
$ReqSQL = " SELECT * FROM membre WHERE pseudo = '$pseudo'";
$Res = mysql_query ( $ReqSQL ) ; // ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tagmc Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Yes !!!

merci ça marche !!!

je vais continuer mon code, je pense que j'aurais besoin d'aide mais je te redirais d'ici 30min !

merci !!
0
tagmc Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
c'est encore moi,
je crois que j'aurais besoin de toi pour encore deux petites choses je pense :
pour le moment, les pages fonctionnent correctement, maintenant quand la personne est identifié sur son compte, on voit son pseudo et son ID, ce que je voulais, ensuite il peut enregistrer sa liste de pièces (et sur cette page, je souhaite également qu'on puisse voir son pseudo et son ID) mais ça ne marche pas :

Form_Inserer_Piece.php

<HTML>
<HEAD>
</HEAD>

<BODY>
<?php
@session_start(); utile ou pas ?

$Id = mysql_connect("localhost" , "root" , "");
mysql_select_db ("piece" ) ;


echo ( "<FORM METHOD=\"POST\" action=\"Inserer_Piece.php\">" ) ;

echo ( "<TABLE>" ) ;
echo ("l'id est : $id_membre"); Notice: Undefined variable: id_membre in C:\Documents and Settings\Franck\Bureau\Nouveau dossier\piece\Form_Inserer_Piece.php on line 16
echo ("le pseudo est : $pseudo");Notice: Undefined variable: pseudo in C:\Documents and Settings\Franck\Bureau\Nouveau dossier\piece\Form_Inserer_Piece.php on line 18

echo ( "<TR>" ) ;
echo ( "<TD>Liste des Pièces allemandes :</TD>" ) ;

echo ( "<TR>" ) ;
echo ( "<TD class=\"Libelle\">1c 2002 A</TD>" ) ;
echo ( "<TD><select name=\"Allemagne1c2002A\">
<option value=\"OUI\">OUI</option>
<option value=\"NON\">NON</option>
<option value=\"DOUBLE\">DOUBLE</option>
</select></TD>" ) ;
echo ( "</TR>" ) ;

echo ( "<TR>" ) ;
echo ( "<TD class=\"Libelle\">1c 2002 D</TD>" ) ;
echo ( "<TD><select name=\"Allemagne1c2002D\">
<option value=\"OUI\">OUI</option>
<option value=\"NON\">NON</option>
<option value=\"DOUBLE\">DOUBLE</option>
</select></TD>" ) ;
echo ( "</TR>" ) ;

echo ( "</TABLE>" ) ;

echo ( "<BR><INPUT type=\"submit\" value=\"Enregistrer\">" ) ;

echo ( "</FORM>" ) ;

mysql_close () ;
?>

je te demanderai une dernière petite chose lorsque la page la sera bien, sans erreur

et encore une fois merci !
0
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
@session_start(); utile ou pas ?

Bon alors là je crois qu'il va falloir que tu comprennes bien comment fonctionne les variables et les sessions avec PHP

Si tu veux développer tu dois t'affranchir de ces questions : tu dois savoir si ça sert ou non d'écrire session_start() ici et surtout pourquoi.

Pour travailler avec les sessions session_start(); doit être appelé en premier avant toute instruction qui retourne quelque chose au navigateur comme la fonction echo par ex.

Il est préférable (obligatoire ?) de n'appeler session_start() qu'une seule fois par script !

Un script est constitué par le page php qui est appelée en premier ainsi que de ses différents includes : c'est pourquoi il est préférable de na pas appeler la fonction session_start() dans les includes.

Bref ici pour répondre à la question est-ce utile ou pas ? Oui si la fonction session_start() n'a pas encore été appelée. (et seulement si tu veux utiliser les sessions bien évidemment lol)

Dans certains cas je te l'accorde savoir si session_start() a été appelée ou non n'est pas évident

Dans ce cas une solution consiste à remplacer dans TOUTES TES PAGES PHP

session_start()

par

// Si la variable $session_started n'est pas définie c'est qu'on a jamais démarré la session
// $session_started c'est juste un ex on pourrait tout aussi bien utiliser la variable $toto mais c'est moins parlant
if (!isset($session_started))
{
  $session_started =  true;  // ici on créé une variable et on lui affecte la valeur true
  session_start();
}
 


Pour $id_membre non initialisée : d'après toi comment PHP peut-il la trouver ta variable ?



0
tagmc Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
ni id_membre ni pseudo n'est trouvable

pourtant dans ma requête, c'est censé retourner déjà le pseudo car la session est toujours ouverte
$ResSQL = " SELECT * FROM membre WHERE pseudo = '$pseudo'";
mais justement il ne me retourne pas le pseudo donc forcément, il ne me retourne pas l'id_membre

j'aurais bien utiliser des $POST mais bon...
0
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
Oui ta session est ouverte et donc après session_start() la tableau $_SESSION[] existe et contient très certainement $_SESSION["pseudo"]

Mais la variable $pseudo elle n'a rien à voir avec les sessions ! Elle n'existe pas encore

Si tu veux l'utiliser à la place de $_SESSION["pseudo"] parce que c'est plus simple tu dois d'abord faire

$pseudo = $_SESSION["pseudo"];


ou mieux encore

$pseudo = isset($_SESSION["pseudo"]) ? $_SESSION["pseudo"]  : "";


ou
if (isset($_SESSION["pseudo"])) {
  $pseudo = $_SESSION["pseudo"];
}
else
{
   ... ici le code en cas d'erreur car ce n'est pas normal !
}



Pour $id_membre c'est la même chose : il faut que tu t'assures en plus de bien l'avoir enregistrer dans la session avant donc d'avoir fait à un moment :

$_SESSION["id_membre"]  = $id_membre; 


Conseil : Si tu veux afficher le contenu de toutes les variables contenues dans $_SESSION
Ecrit ceci dans le corps de ta page html (après <body> par ex)

<pre>
<?php var_dump($_SESSION); ?>
</pre>


Note ca fonctionne aussi avec $_GET, $_POST et plus généralement n'importe quel tableau PHP ;-)
0
tagmc Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
toujours un problème :(

avec le code suivant :
$Id = mysql_connect("localhost" , "root" , "l");
mysql_select_db ("piece" ) ;

$pseudo = isset($_SESSION["pseudo"]) ? $_SESSION["pseudo"] : "";$pseudo = $_SESSION["pseudo"];
$_SESSION["id_membre"] = $id_membre;
var_dump($_SESSION);

j'ai ça :
Notice: Undefined variable: id_membre in C:\Documents and Settings\Franck\Bureau\Nouveau dossier\piece\Form_Inserer_Piece.php on line 22
array(2) { ["pseudo"]=> string(4) "num1" ["id_membre"]=> NULL }


le pseudo est bon mais je n'ai pas d'id
0
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
heu faut pas mettre tout en même temps !

Soit tu mets

$pseudo = isset($_SESSION["pseudo"]) ? $_SESSION["pseudo"] : "";


qui est équivalent à

if (isset($_SESSION["pseudo"])) {
  $pseudo = $_SESSION["pseudo"]; 
}
else
{
  $pseudo = "";
}


soit
$pseudo = $_SESSION["pseudo"]; 


mais pas les 2 !

A l'issue de chaque instruction tu peux voir que $pseudo contient bien une valeur
Dans le premier cas on aura pas d'erreur même si $_SESSION["pseudo"] n'est pas défini : dans ce cas $pseudo contiendra une chaîne vide

Dans le second cas on aura une erreur si $_SESSION["pseudo"] n'est pas défini : Undefined index: pseudo



Ensuite tu écris
$_SESSION["id_membre"] = $id_membre;

Mais pourquoi ici ?

$id_membre n'est pas défini ici : tu créés bien une variable de session nommée id_membre mais dont le contenu est NULL : ce que t'indique d'ailleurs le var_dump()




j'ai l'impression que tu confonds exécution d'un script PHP, session et durée de vie des variables :
entre l'accès à 2 pages PHP perd toutes ses variables. C'est pas pour rien que les sessions existent. ;-)

Bref même si l'enchaînement de la page compte.php vers la page Form_Inserer_Piece.php s'effectue rapidement te donnant une impression de continuité en fait il s'agit de 2 scripts indépendants !


0
tagmc Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Tout fonctionne correctement !!
quand j'aurais fini mon site (le reste du site/code) et graphisme (y a encore le temps), je te donnerai le lien pour que tu puisse voir ^^


merci encore !!!!
0