Page 1 sur 1

Affichage selon utilisateur

Posté : 06 avr. 2013, 17:05
par Driamar
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

Re: Affichage selon utilisateur

Posté : 06 avr. 2013, 18:40
par yann18
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."' ";

Re: Affichage selon utilisateur

Posté : 07 avr. 2013, 05:17
par Driamar
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 !

Re: Affichage selon utilisateur

Posté : 07 avr. 2013, 06:44
par AB
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.

Re: Affichage selon utilisateur

Posté : 08 avr. 2013, 16:37
par Driamar

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 !

Re: Affichage selon utilisateur

Posté : 08 avr. 2013, 17:13
par yann18
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.

Re: Affichage selon utilisateur

Posté : 08 avr. 2013, 18:24
par Driamar
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

Re: Affichage selon utilisateur

Posté : 09 avr. 2013, 02:14
par AB
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.