PHP : petit probleme avec liste des membres
Résolu
Bonjour,
J'ai quelques problemes en PHP :
• J'aimerai afficher une page , avec des liens genre ça : http://niarniark.pada.com/liste_membres.php?membre=1
Mais mon code , n'affiche pas ce que je voulais ...
Sur toutes les pages ( membre=1 , membre=302 ) , il me mets le nom du dernier membre enregistré , au lieu de mettre un nom different sur chaque page ...
voila le code php :
<?php
mysql_connect("localhost ici sa marche :-P
mysql_select_db("dbase17780");
// --------------- Etape 1 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
// On met dans une variable le nombre de joueurs qu'on veut par page
$nombreDeMessagesParPage = 1; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS id FROM membres_jeu');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['id'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="game.php?joueur=' . $i . '">' . $i . '</a> ';
}
?>
<?php
// --------------- Etape 2 ---------------
// Maintenant, on va afficher les joueurs
// ---------------------------------------
if (isset($_GET['login']))
{
$page = $_GET['login']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM membres_jeu ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['login'] . '</strong> a cette adresse e-mail :<br />' . $donnees['mail'] . '</p>'; }
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>
Quelqu'un peu m'aider ?
je sais que j'ai fait une erreur quelque parts mais je sais pas comment l'arranger ...
Désolé de vous déranger pour si peux ...
A bientot ,
Leo
J'ai quelques problemes en PHP :
• J'aimerai afficher une page , avec des liens genre ça : http://niarniark.pada.com/liste_membres.php?membre=1
Mais mon code , n'affiche pas ce que je voulais ...
Sur toutes les pages ( membre=1 , membre=302 ) , il me mets le nom du dernier membre enregistré , au lieu de mettre un nom different sur chaque page ...
voila le code php :
<?php
mysql_connect("localhost ici sa marche :-P
mysql_select_db("dbase17780");
// --------------- Etape 1 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
// On met dans une variable le nombre de joueurs qu'on veut par page
$nombreDeMessagesParPage = 1; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS id FROM membres_jeu');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['id'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="game.php?joueur=' . $i . '">' . $i . '</a> ';
}
?>
<?php
// --------------- Etape 2 ---------------
// Maintenant, on va afficher les joueurs
// ---------------------------------------
if (isset($_GET['login']))
{
$page = $_GET['login']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
$reponse = mysql_query('SELECT * FROM membres_jeu ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['login'] . '</strong> a cette adresse e-mail :<br />' . $donnees['mail'] . '</p>'; }
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>
Quelqu'un peu m'aider ?
je sais que j'ai fait une erreur quelque parts mais je sais pas comment l'arranger ...
Désolé de vous déranger pour si peux ...
A bientot ,
Leo
Configuration: Windows Vista Firefox 3.5.5
46 réponses
Résumé de la discussion
Problème central: la pagination en PHP affiche le nom du dernier membre enregistré sur toutes les pages, au lieu d'afficher un nom différent selon la page demandée. Des propositions visent à clarifier l'usage des paramètres GET et à mettre en place une pagination correcte avec LIMIT et offset, ou à dissocier liste et fiche profil via des pages distinctes. En pratique, il faut choisir entre une liste paginée avec ?page et un calcul de l'offset, ou une fiche membre via ?membre=id, et vérifier systématiquement le résultat des requêtes pour éviter les erreurs.
-
Je suis désolé si un sujet pareil avait déjà été créé , cependant je ne l'ai pas trouvé ...
-
Et voici ce que me mets la page avec ce code la :
http://img130.imageshack.us/img130/8946/screenshot021r.jpg -
Up !
-
Quelqu'un pourrais m'aider ??? SVP je suis super bloqué
-
:'-(
-
Il n'y a personne ???
meme pas une petite réponse ???
:'-(.... -
“J'aimerai afficher une page , avec des liens genre ça http://example.com/liste_membres.php?membre=1”
Je penses que "?page=1" donnerait mieux.
Par contre, je ne comprends pas ça :for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="game.php?joueur=' . $i . '">' . $i . '</a> '; }Pourquoi fais-tu un lien vers une autre page ? Essaye plutôt avec ça :for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="liste_membre.php?page=' . $i . '">' . $i . '</a> '; }
Après tu m'expliquera ça :if (isset($_GET['login'])) { $page = $_GET['login']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
Sur la liste des membres, ne vois pas pourquoi nous aurions besoin du login d'un membre ! Remplace par $_GET['page'].
Bases-toi sur ce tuto -
oui merci ^^
mais c'est la que j'ai pris le trois quart de ce code ( livre d'or site du zero ) , et les commentaires ne sont pas bon ...
Mais enfait le premier lien est bidon , enfait le vrai lien c'est sa : http://sc.teamfr.com/game.php , c'est pour sa que ce lien réapparait
en faite ce que j'essaye de faire , c'est un jeu en ligne , et ici , c'est une page pour chaque membre .
Donc imaginon un membre qui s'appelle o0leo0o , un autre qui sappelle toto , qu'il y ait la page game.php?membre=1 ( qui afficherait o0leo0o ) , et qu'il y ait game.php?membre=2 , qui afficherait Toto
Voila
et j'ai un probleme , comme le montre le screen , qui mets le même pseudo sur toutes les pages . -
Je peux encore t'aider a trouver le probleme ???
tu as d'autres questions ? -
Il suffit d'écrire le lien comme ça : <a href="game.php?membre=1">o0leo0o</a>
Ensuite, tu auras une variable $_GET['membre'] dans game.php avec 1 comme valeur -
euh donc si j'ai 500 membres je dois faire 500 variables ???
Je modifi quoi pour le rentrer dans le code ??? -
et j'ai pas bien compris ton dernier post :-)
-
Non, il faut que tu utilises l'id du membre pour faire une requête SQL (avec la clause WHERE).
-
Euh... ?
si l'ID du membre est 1 , que dois je faire ?
je ne connais pas la "clause" WHERE ... ? -
Dans ta requête SQL :
SELECT * FROM table WHERE id = $_GET['id']
Tu ferais mieux de retourner apprendre le PHP et le SQL sur le Site du Zéro.
Tu t'imagines si le webmaster de CCM devait mettre à jour et ajouter chaque profil à la main !? -
Donc , au lieu de mettre sa :
// --------------- Etape 2 --------------- // Maintenant, on va afficher les joueurs // --------------------------------------- if (isset($_GET['login'])) { $page = $_GET['login']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4) } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $reponse = mysql_query('SELECT * FROM membres_jeu ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); while ($donnees = mysql_fetch_array($reponse)) { echo '<p><strong>' . $donnees['login'] . '</strong> a cette adresse e-mail :<br />' . $donnees['mail'] . '</p>'; } mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o) ?>
, tu veux que je mette sa :// --------------- Etape 2 --------------- // Maintenant, on va afficher les joueurs // --------------------------------------- if (isset($_GET['login'])) { $page = $_GET['login']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4) } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $reponse = mysql_query(SELECT * FROM membres_jeu WHERE id = $_GET['id']); while ($donnees = mysql_fetch_array($reponse)) { echo '<p><em>Joueur</em> <strong>' . $donnees['login'] . '</<br /></p>'; } mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o) ?>
si oui n sa fait bugger le script , et sa me mets sa sur le site :Parse error: syntax error, unexpected T_STRING in /data2/www/teamfr/sc/game.php on line 48
-
Peux tu me rajouter ton code au bon endroit ?
car je n'y arrive pas désolé... -
Il y a quelqu'un ?
-
Cherche par toi même, et fini d'apprendre le PHP avant de trop vouloir bidouiller (mais c'est bien de vouloir modifier les exemples)
-
Je l'ai fini , le tuto sur le PHP ...
mais bon .. je vais essayer , mais , tu peux pas me le donner ? :-D
- 1
- 2
- 3
Suivant