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.