Affichage selon utilisateur

Eléphanteau du PHP | 14 Messages

06 avr. 2013, 17:05

Bonjour,

Voila mon petit souci :
j'ai une table utilisateur comprenant (id_utilisateur, nom_utilisateur et mdp) et une autre table manga comprenant (nom_manga, id_utilisateur, nom_auteur, nom_éditeur).

J'ai créé une page de connexion pour chaque utilisateur ainsi qu'un formulaire pour ceux qui souhaite s’inscrire.

Le soucis que j'ai, c'est comment une fois connecté, les mangas qui seront affichés ne seront que ceux que l'utilisateur qui est connecter et non ceux que tous les utilisateurs.

Il faut que j'utilise les sessions non ?

Merci par avance pour vos réponses.

Je peux joindre le code de mes pages pour ceux qui souhaitent !

Merci

Mammouth du PHP | 571 Messages

06 avr. 2013, 18:40

bonjour,
bien sûr qu'il faut passer par les sessions.
Il est tout à fait possible d'afficher les mangas propres à un utilisateur. A l'aide d'une requête SQL, tu sélectionnes les données de la table manga dont l'id utilisateur est égal à celui qui a été précédemment mis en session lors de la connexion.
$id_utilisateur=$_SESSION['id_utilisateur'];
$query="SELECT * FROM manga WHERE id_utilisateur='".$id_utilisateur."' ";

Eléphanteau du PHP | 14 Messages

07 avr. 2013, 05:17

Merci pour ces infos !

Avant de mettre la première ligne je dois faire une sessions_start non ?

Quant à la deuxième, faut que je la mette au niveau de mon tableau ?

Merci encore !

ViPHP
AB
ViPHP | 5818 Messages

07 avr. 2013, 06:44

Tu dois mettre session_start() avant toute utilisation ou définition d'une variable de session, mais une seule fois suffit.
Souvent on met cette ligne une fois pour toute en début de page.

Eléphanteau du PHP | 14 Messages

08 avr. 2013, 16:37

Code : Tout sélectionner

<?php require_once('Connections/MaConnexion.php'); ?> <?php if (!isset($_SESSION)) { session_start(); } $MM_authorizedUsers = ""; $MM_donotCheckaccess = "true"; function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { $isValid = False; if (!empty($UserName)) { $arrUsers = Explode(",", $strUsers); $arrGroups = Explode(",", $strGroups); if (in_array($UserName, $arrUsers)) { $isValid = true; } if (in_array($UserGroup, $arrGroups)) { $isValid = true; } if (($strUsers == "") && true) { $isValid = true; } } return $isValid; } $MM_restrictGoTo = "register.php"; if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) { $MM_qsChar = "?"; $MM_referrer = $_SERVER['PHP_SELF']; if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&"; if (isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0) $MM_referrer .= "?" . $_SERVER['QUERY_STRING']; $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer); header("Location: ". $MM_restrictGoTo); exit; } ?> <?php if (!function_exists("GetSQLValueString")) { function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { if (PHP_VERSION < 6) { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; } $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } } $maxRows_manga = 10; $pageNum_manga = 0; if (isset($_GET['pageNum_manga'])) { $pageNum_manga = $_GET['pageNum_manga']; } $startRow_manga = $pageNum_manga * $maxRows_manga; mysql_select_db($database_MaConnexion, $MaConnexion); $query_manga = "SELECT * FROM manga WHERE id_utilisateur='".$_SESSION['id_utilisateur']."' ORDER BY nom_auteur ASC"; $query_limit_manga = sprintf("%s LIMIT %d, %d", $query_manga, $startRow_manga, $maxRows_manga); $manga = mysql_query($query_limit_manga, $MaConnexion) or die(mysql_error()); $row_manga = mysql_fetch_assoc($manga); if (isset($_GET['totalRows_manga'])) { $totalRows_manga = $_GET['totalRows_manga']; } else { $all_manga = mysql_query($query_manga); $totalRows_manga = mysql_num_rows($all_manga); } $totalPages_manga = ceil($totalRows_manga/$maxRows_manga)-1; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Document sans titre</title> </head> <body> <table border="1"> <tr> <td>nom_manga</td> <td>id_utilisateur</td> <td>nom_auteur</td> <td>nom_editeur</td> </tr> <?php do { ?> <tr> <td><?php echo $row_manga['nom_manga']; ?></td> <td><?php echo $row_manga['id_utilisateur']; ?></td> <td><?php echo $row_manga['nom_auteur']; ?></td> <td><?php echo $row_manga['nom_editeur']; ?></td> </tr> <?php } while ($row_manga = mysql_fetch_assoc($manga)); ?> </table> </body> </html> <?php mysql_free_result($manga); ?>

Voici le code de ma page !
Entre temps, j'ai réussi à restreindre l'accès à la page.
Lorsque je met la requête au niveau du tableau afin qu'il ne m'affiche uniquement les enregistrements selon l'utilsateur dont la session est en cours il me met une erreur.
Et je ne vois pas du tout comment la corriger. Aurais-je oublié une variable ou fait une fausse manip ?

merci encore pour votre aide !

Mammouth du PHP | 571 Messages

08 avr. 2013, 17:13

Quelle est le message d'erreur renvoyé et à quelle ligne se situe t-il?

d'ores et déjà il te faut tout de même vérifier que la variable de session $_SESSION['id_utilisateur'] a bien une valeur.
var_dump( $_SESSION['id_utilisateur']);
En outre, par convention les noms des variable et méthode en php commencent toujours par une minuscule et pas une majuscule comme tu le fais.

Eléphanteau du PHP | 14 Messages

08 avr. 2013, 18:24

L'erreur se trouve ligne 83 ...

Et voici l'erreur que j'ai : Undefined index: id_utilisateur in C:\wamp\www\gescol\liste_manga.php on line 83

ViPHP
AB
ViPHP | 5818 Messages

09 avr. 2013, 02:14

Ben tu as une variable indéfinie (ayant comme index "id_utilisateur") à la ligne 83. Tu utilises donc cette variable qui n'est pas encore définie à cet endroit du script. Reporte toi à la ligne 83 pour savoir laquelle.