Récupérer données SQL de l'utilisateur logué

Hello,

Bon, je suis une véritable quiche en programmation, et essaie de découvrir le PHP.
Mon truc : je suis arrivé à créer un formulaire permettant d’insérer un nouvel utilisateur dans une bdd SQL.
En suivant le tuto ci contre : www.asp-php.net… j’ai créé une “session”, où l’utilisateur créé est bien logué (j’obtiens le bouton “déconnexion” et toussa toussa).

Le truc, c’est que je ne comprends pas comment faire,pour qu’une fois loggué, je sois redirigé vers une page différente selon l’utilisateur.

Par ailleurs, j’essaie d’insérer les données présentes dans une table d’un utilisateur spécifique.

Encore une fois, j’ai suivi le tuto sur le site du zero et utilisé ce code :

[spoiler]<?php
try
{
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO(‘mysql:host=localhost;dbname=test’, ‘root’, ‘’, $pdo_options);

// On récupère tout le contenu de la table jeux_video
$reponse = $bdd->query('SELECT * FROM jeux_video');

// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
    <p>
    <strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />
    Le possesseur de ce jeu est : <?php echo $donnees['possesseur']; ?>, et il le vend à  <?php echo $donnees['prix']; ?>   euros !<br />
    Ce jeu fonctionne sur <?php echo $donnees['console']; ?> et on peut y jouer à  <?php echo $donnees['nbre_joueurs_max']; ?> au maximum<br />
    <?php echo $donnees['possesseur']; ?> a laissé ses commentaires sur <?php echo $donnees['nom']; ?> : <em><?php echo    $donnees['commentaires']; ?></em>
    </p>
<?php
}

$reponse->closeCursor(); // Termine le traitement de la requête

}
catch(Exception $e)
{
// En cas d’erreur précédemment, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}

?>
[/spoiler]

Bon, en l’adaptant un peu à ma sauce. Sauf que dans ce cas, ça marche, mais ça me balance les infos de toute la table. Quel est donc le moyen pour n’afficher que les infos de l’utilisateur logué ?

En vous remerciant pour votre aide :ane:
Edité le 10/06/2011 à 13:50

'lut !

Pour n’afficher que les données d’un utilisateur, il faut le sélectionner dans la base de données

Dans ton cas, le


SELECT * FROM ta_table

va sélectionner tous les enregistrements sans distinction

Tu auras donc compris qu’il faut “guider” la sélection, afin que la requête ne renvoie que les enregistrements qui t’intéressent

il faut modifier ta requête an rajoutant la clause WHERE :


SELECT * FROM ta_table WHERE nom_colonne=valeur

De cette manière, tu récupéreras que les enregistrements qui correspondent à la (ou les) condition

Tu trouveras plus de détail ici

Bonne journée

Merci pour ta réponse :slight_smile:

Mais… Je crois qu’il y a un p’tit truc qui ne colle pas :stuck_out_tongue:

Ce que je cherche, c’est afficher la ligne de l’utilisateur précédemment logué.

Si par exemple je me connecte avec “Toto”, je veux qu’il m’affiche les données de cette ligne 3.
Si je me connecte avec “Titi” (L’imagination est une de mes forces !), je veux qu’il m’affiche les données de la ligne 4.

Or, avec la clause “WHERE nom_colonne=valeur”, que dois-je indiquer en valeur ?

A moins que j’aie mal pigé ?

Merci :stuck_out_tongue:

La clause WHERE te permet de chercher un ou des enregistrements particulier.

Donc, pour sortir les données liées à Toto, il faut que tu dises à ta requête de chercher l’enregistrement qui correspond à Toto avec la clause WHERE

Donc tu regardes dans ta base de données le nom de la colonne qui identifie un utilisateur (Pseudo, par example), et mets dans ta requête


... WHERE Pseudo = Toto

Rien de plus simple :stuck_out_tongue:

Bien évidemment, si tu as plusieurs Toto, il va renvoyer tous les enregistrement où Pseudo = toto
Edité le 10/06/2011 à 09:56

Oui, ça j’ai bien compris :stuck_out_tongue:

Mais je souhaite faire un affichage différent selon la personne loguée, après le remplissage du formulaire précédent par la personne en question. Je ne peux donc pas indiquer “pseudo = Toto” ou “pseudo = Titi”, puisque je ne sais pas qui sera logué !

Je ne sais pas si je me suis fait comprendre et / ou si c’est la bonne procédure… En fait, ma page d’accueil est unique, mais son contenu doit changer selon l’user connecté…

Ce que je cherche à faire sinon, c’est d’avoir une page différente selon l’utilisateur connecté, maos je ne sais pas comment faire… :etonne2:

Tu utilises une session (tu l’as dit plus tôt), donc tu stockes certaines information de ton utilisateur logué dans ta session (sinon tu fais quoi avec ta session ?).
Il faut que tu récupères les données de ta session pour compléter ta requête sql.

Ce que je t’ai donné n’est qu’un exemple

Tu peux très bien remplacer “Toto” par une variable qui contient l’identifiant de la personne qui s’est connecté (Id, Pseudo, Nom, … du moment qu’il soit unique)

Ex :


$select = " SELECT * FROM ta_table WHERE Id_personne = $id_connexion ";

Après, tu modifies à ta convenance !

Okay, j’avais pas vu ça comme ça, je vais essayer d’aller dans ce sens donc.
Merci à vous :super:

Si ca fonctionne comme tu le souhaitais, édites ton premier message et mets [Résolu] dans le titre
Edité le 10/06/2011 à 10:46

Coucou c’est moi, bien évidemment que ça ne fonctionne pas :ane:

Bon, pour faire bref, mes cookies créés lors d’une session :

setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
setcookie("EMAIL", $row["Adresse_Email"], $expiration, "/");

J’ai ensuite créé comme variables :

$ID_user = $_COOKIE["ID_UTILISATEUR"];
$username = $_COOKIE["NOM_UTILISATEUR"];
$mail = $_COOKIE["EMAIL"];

… Mais je n’arrive toujours pas à afficher les valeurs d’un utilisateur donné.
J’ai essayé :

SELECT * FROM comptes_utilisateurs WHERE id_utilisateur = $ID_user

(Où id_utilisateur est une colonne de ma table)

Sans succès. J’ai aussi remplacé la variable par $_COOKIE[“ID_UTILISATEUR”], pas mieux.

je m’y prend mal à nouveau ? :o(

Au passage, c’est possible de mettre une variable php dans une requête sql ?

Merci encore :stuck_out_tongue:

Donne le code complet de création de ta requête avec les guillemets point-virgule et tout s’il te plaît.

Oui, on peut mettre une variable php dans un requête SQL car la requête SQL n’est qu’une chaîne de caractère, donc il sera concaténé. Mais attention, cela ne fonctionne pas avec de simple cote mais avec des doubles

Le voici :

$reponse = $bdd->query('SELECT * FROM comptes_utilisateurs WHERE id_utilisateur = $ID_user');

Le début semble être correct, puisque tout s’affiche correctement si je ne mets pas la clause WHERE.

Merci pour la petite précision au passage :bounce:

Comme je te disais, pour que la variable php soir analyser, il te faut des doubles cotes en lieu et place des simples

$reponse = $bdd->query("SELECT * FROM comptes_utilisateurs WHERE id_utilisateur = $ID_user");

Ahhh d’accord, je n’avais pas compris que tu parlais de ces cotes là.
C’est magique maintenant ça marche du boudin :smiley:

Je te remercie :stuck_out_tongue:

Bon, je mets en résolu, mais je n’exclue pas de revenir dans le coin d’ici peu hein :ane: