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.
-
De rien et bon courage pour la suite.
-
Ok merci sa marche avec succes ...
Merci beaucoup a vous deux
Bon week-end -
Dans la liste, sur chaque membre y'a un lien. En cliquant dessus, tu arrivera sur une page profil.php?id=3 (par exemple).
C'est sur cette page que tu pourra voir les données du membre.
<?php mysql_connect(""); mysql_select_db(""); $sql='SELECT * FROM membres_jeu WHERE id="'.$_GET['id'].'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); echo'<p>'.$data['login'].'</p>'; mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o) ?> -
la sa me mets une liste des membres ...mais j'aimerai une page pour chaque membre
-
oui la table les comporte
j'essaie tout sa -
Comme je disais, pour le moment simplifie ton code:
<?php mysql_connect(""); mysql_select_db(""); $sql='SELECT * FROM membres_jeu ORDER BY login'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); while ($data = mysql_fetch_array($req)) { echo '<p><em>Joueur</em> <strong><a href="profil.php?id='.$data['id'].'">' . $data['login'] . '</a><br /></p>';} mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o) ?>
Il va sans dire qu'il faut que tu complète ces lignes avec tes identifiants:mysql_connect(""); mysql_select_db("");
Perso je les met ainsi:$mysql_id = mysql_connect('serveur', 'login', 'mot_de_passe'); mysql_select_db('base_de_donnee', $mysql_id) or die(mysql_error());
Ce code suppose aussi que ta table membres_jeu comporte au moins les colonnes id et login.
-
Normalement si, il devrait y avoir un lien.
-
Sa n'a absolument rien changé..
-
while ($data = mysql_fetch_array($req)) { echo '<p><em>Joueur</em> <strong>' . $data['login'] . '<br /></p>'; }
Il suffit de faire ça si ta table contient un champ "id" :while ($data = mysql_fetch_array($req)) { echo '<p><em>Joueur</em> <strong><a href="profil.php?id='.$data['id'].'">' . $data['login'] . '</a><br /></p>'; } -
<?php mysql_connect(""); mysql_select_db(""); // --------------- 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; $sql='SELECT * FROM membres_jeu WHERE id="'.$_GET['membre'].'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req); while ($data = mysql_fetch_array($req)) { echo '<p><em>Joueur</em> <strong>' . $data['login'] . '<br /></p>'; } mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o) ?>
je n'ai pas trop compris...enfin si mais sa reste un peu vague
enfin
voila mon code au dessus , peutetre serais ce un peu plus clair... -
Je te l'ai déjà expliqué ...
Fait des liens du style "/profil.php?membre=3" où "3" est l'ID du membre dans la table.
Ensuite, utilise la variable $_GET['membre'] pour faire une requête dans la bdd pour récupérer toutes les infos sur le membre. -
Ok c'est compris
Ce que j'essaie de faire , c'est une page pour chaque membre , une fiche d'un membre pour tout les membres ...
Voila -
Tu veux afficher une liste de membre ou la fiche d'un membre ?
Tu parlais tout a l'heure d'un lien liste_membres.php?membre=1
Si tu places membre=1 dans l'url c'est pour affiche la fiche d'un membre que tu définis dans l'url avec l'id 1 qui renverra à ta base de donnée.
Donc:
- soit tu affiches la liste des membres (dans ce cas pas de variable dans l'url la page sera simplement list_membre.php)
- soit tu affiches la fiche d'un membre précis (dans ce cas tu défini le membre que tu affichera via une variable dans l'url).
En fait le plus simple est de combiner les deux.
Tu fais une page list_membre.php et pour chaque membre tu affiches un lien qui renvoi sur la page fiche.php?id=1 par exemple.
Ce que tu me met:
Page : 1 2 3 4 5 6 7
(si je comprends bien) est un système permettant de répartir ta liste de membre sur plusieurs page gérer dynamiquement.
Essai de faire simple dans l'immédiat. Tu n'y arrive déjà que difficilement pour ce qui est uniquement les bases du PHP donc évite pour le moment d'employer des script trop complexe que tu ne pourra pas gérer toute seul. Tu pourra ensuite les intégrer. -
Page : 1 2 3 4 5 6 7
voila ce que sa maffiche mtn
j'ai réussi a corriger l'erreur ( tout seul ! )
mais sa ne maffiche pas les membres enregistrés... -
J'ai corrigé , et maintenant sa me mets sa :
Page : 1 2 3 4 5 6 7
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data2/www/teamfr/sc/game.php on line 53-
L'idéal n'est pas qu'on te mache le travail mais plutôt que tu essai de comprendre ce que tu fais et que tu soit à même de trouver seul les solutions aux messages d'erreur.
Sans ça tu va venir ici au moindre message d'erreur dans comprendre le pourquoi du comment.
ça ne sert à rien du tout car tu n'apprends rien.
Ce message:Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data2/www/teamfr/sc/game.php on line 53
Il veux dire quoi ?
Regardons de plus près:
mysql_fetch_array()
C'est la fonction PHP que tu as utilisé.
Où ?on line 53
Donc à la ligne 53 de ton script dans le fichier game.php.
C'est donc là qu'il faut regarder.
Vérifie donc ce que tu as mis à cet endroit. Regarde sur les documentations que tu trouves sur internet en prenant comme base les différents exemple que tu y trouvera.
C'est comme ça que tu apprendra.
N'hésite pas a entrer sur Google une partie du message d'erreur pour tomber sur des forums ou d'autre on eu les même erreurs que toi.
-
-
Merci pour ta réponse , j'ai essayé ton code , et voila ce que sa m'a mit :
Page : 1 2 3 4 5 6 7 Erreur SQL !
SELECT * FROM table WHERE id=""
Erreur de syntaxe près de 'table WHERE id=""' à la ligne 1 -
Le requête SQL que tu cherches est l'une des plus simple.
Si tu met cette requête:$sql='SELECT * FROM table WHERE id="'.$_GET['membre'].'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); $data = mysql_fetch_array($req);
Tu n'aura plus qu'a afficher les résultats en mettant cette variable:$data['champ']
Exemple:
Si ton premier champ dans ta table est id puis login, tu pourra afficher le login du membre avec:echo $data['login'];
Dans ce cas, ton lien http://niarniark.pada.com/liste_membres.php?membre=1 fonctionnera.
Mais bon c'est quand même les bases.
ça sert à rien de se lancer dans un script compliqué si tu connais pas les bases. -
???
-
Voila le code qui est mis sur le site du zero :
<?php session_start(); // On démarre la session AVANT toute chose // On s'amuse à créer quelques variables de session : $_SESSION['prenom'] = 'Jean'; $_SESSION['nom'] = 'Dupont'; $_SESSION['age'] = 24; // Maintenant que le session_start est fait, on peut taper du code HTML ?>
( c'est le début )
mais la il y a qu'une seule variable !
comment faire la variable avec tout les membres qui sont enregistrés ??? -
je n'arrive toujours pas...
- 1
- 2
- 3
Suivant