JeuWeb - Crée ton jeu par navigateur
[reglé] Pbm de statistiques :s - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [reglé] Pbm de statistiques :s (/showthread.php?tid=2218)

Pages : 1 2 3


RE: Pbm de statistiques :s - alfanor - 02-01-2008

Euh je ne suis pas un fou de la clause LIMIT, mais normalement le deuxième argument pour celle-ci ne représente pas le nombre d'entrée à sélectionner à partir de l'id valant la valeur du premier argument ?

En gros au lieu de dire $limit_2 = $limit_1 + 15, dire $limit_2 = 15 (nombre d'entrée à afficher par page).

Du moins, bien que je dorme à moitié j'ai bien l'impression que c'est ce que je fais toujours.

Ensuite pour la requête, test cela :

Code PHP :
<?php 
$reponse
= mysql_query("SELECT pseudo, points, alliance, ptsoff, ptsdef FROM user WHERE administrateur = 0 ORDER BY " . $order . " DESC LIMIT " . $limit1 . ", " . $limit2) or die(mysql_error().'471');

J'ai donc modifier :

- administrateur = '0' en administrateur = 0
- ORDER BY '" . $order . "' en ORDER BY " . $order . " (c'est un nom de champ de la table et non une valeur donc pas entre apostrophe, du moins je fais comme ça je crois)
- '$limit2') en " . $limit2 . ")

Je crois que c'est censé marcher de cette façons.


RE: Pbm de statistiques :s - leni - 02-01-2008

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"$limit1", "$limit2"' at line 1


je savais pas que sa existait se genre de manipulation ^^ merci Smile


RE: Pbm de statistiques :s - leni - 02-01-2008

j'ai cilber l'erreure : limit2 n'as aucune valeur.

je continu sur ma lancée ^^ si vous trouvez dautre pbm, dites le moi Smile

Voila j'ai editer el code, et j'ai mit es echo pour voir se qu'il ne vas pas. voici se que j'ai trouver :

order = points
limit1 = -15
limit2 = 0

comment on fait ? Big GrinDDD


je vous redonne le code, plus pratique que de revenir 10 pages en arrire Wink

Code PHP :
<?php 
$nombre_entree2
= mysql_query('SELECT COUNT(*) AS nombre FROM user WHERE administrateur="0"') or die(mysql_error());
$nombre_entree = mysql_fetch_array($nombre_entree2) or die(mysql_error());

$nb_page = ceil($nombre_entree['nombre'] / 15);


if (!empty(
$_GET['order']))
{
$ordre = mysql_real_escape_string(htmlspecialchars(trim($_GET['order'])));
}
else
{
$order = "points";
}
if (empty(
$_GET['page']))
{
$page = 1;
}
else
{
$page = intval($_GET['page']);
}


$limit2 = $page*15;
$limit1 = $limit2-15;

if (
$page >= $nb_page)
{
$diff = $nombre_entree['nombre']%15;
$limit1 = ($page*15)-$diff;
$limit2 = $limit1+$nombre_entree['nombre'];
}
if (
$nombre_entree['nombre'] <=15)
{
$limit1 = 0;
$limit2 = $nombre_entree['nombre'];
}
echo
$order;
$reponse = mysql_query('SELECT pseudo, points, alliance, ptsoff, ptsdef FROM user WHERE administrateur="0" ORDER BY '.$order.' DESC LIMIT '.$limit1.','.$limit2.'') or die(mysql_error().'471');
?><br />
<table align="center" width="90%" border="1">
<tr>
<td width="15%"><p align="center"><a href="statistique.php?id=stat&amp;order=pseudo" >pseudo</a></p></td>
<td width="10%"><p align="center"><a href="statistique.php?id=stat&amp;order=alliance" >alliance</a></p></td>
<td width="25%"><p align="center"><a href="statistique.php?id=stat&amp;order=points" >points</a></p></td>
<td width="25%"><p align="center"><a href="statistique.php?id=stat&amp;order=ptsoff" >points offenssifs</a></p></td>
<td width="25%"><p align="center"><a href="statistique.php?id=stat&amp;order=ptsdef" >points deffenssifs</a></p></td>
</tr>
<?php
while ($donnees3 = mysql_fetch_array($reponse))
{
?>
<tr>
<td width="15%"><p align="center"><?
if ($donnees3['pseudo'] == $_SESSION['pseudo'])
{
?>
<strong><? echo $donnees3['pseudo']; ?> </strong>
<?php
}
else {
echo
'<a href="statistique.php?id=profil&amp;player='.$donnees3['pseudo'].'">';
echo
$donnees3['pseudo'];
echo
'</a>';
}
?></p></td>
<td width="10%"><p align="center"><?
if (empty($donnees3['alliance']))
{
echo
'';
}
elseif (
$donnees3['alliance'] == $donnees['alliance'])
{
echo
'<a href="alliance.php"><strong>';
echo
$donnees['alliance'];
echo
'<\strong></a>';
}
else
{
echo
'<a href="statistique.php?id=profil&amp;alliance='.$donnees3['alliance'].'">';
echo
$donnees3['alliance'];
echo
'</a>';
}
?></p></td>
<td width="25%"><p align="center"><? echo $donnees3['points']; ?></p></td>
<td width="25%"><p align="center"><? echo $donnees3['ptsoff']; ?></p></td>
<td width="25%"><p align="center"><? echo $donnees3['ptsdef']; ?></p></td>
</tr>
<?php
}
?> </table>
<?php
$page_actuelle
= 1;

while(
$page_actuelle < $nb_page)
{
echo
'<a href="statistique.php?id=statamp;order='.$order.'&page='.$page_actuelle.'"> Page N°'.$page_actuelle.'</a>';

$page_actuelle++;
}



RE: Pbm de statistiques :s - alfanor - 02-01-2008

Pas logique ton code à cette endroit :

Code PHP :
<?php 
if (!empty($_GET['page']))
{
$page = 1;
}
else
{
$page = intval($_GET['page']);
}

Ce ne serait pas plutôt cela dans la logique des instructions effectuées :

Code PHP :
<?php 
if (empty($_GET['page']))
{
$page = 1;
}
else
{
$page = intval($_GET['page']);
}



RE: Pbm de statistiques :s - leni - 02-01-2008

Oui en effet, nettement mieu Smile

voila le rapport esql : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"$limit1", "$limit2"' at line 1

et les valeurs : limit1 = 0 limit2 = 15
tout est si parfait ^^

Pourquoi est-ce que sa ne marche pas ? il n'y as aucune raison qu'il n'y ai d'erreur non ? Confused


RE: Pbm de statistiques :s - leni - 02-01-2008

bha a part al majuscule, non ... tu dis toujours autant de connerie, c'est ça qui est magique chez toi ^^

Mais non, ne le prend pas comme ça, si je te dis ç, c'est pour te rendre service, si tu me demandais à manger, je ne te donneriai rien, mais je t'expliquerai comment t'en procurer -_-'


RE: Pbm de statistiques :s - leni - 02-01-2008

EDIT : heuuu j'ai rien dit Big Grin


RE: Pbm de statistiques :s - alfanor - 02-01-2008

Bon faudrait vous calmer un peu ... Oxman c'est bien beau de lui dire "Gros glandeur cherches au lieu de le faire faire par les autres", mais en général lorsque l'on débute (si c'est son cas) ou lorsque l'on a pas beaucoup d'expérience on ne sait pas où chercher, donc le mieux c'est encore de lui apprendre à chercher en lui expliquant le pourquoi des erreurs et comment il aurait pu trouver par lui même. (Et Leni pas besoin de te comporter de même envers Oxman, il est légèrement spécial, faut faire avec, tu le laisse piquer sa crise mais tu restes clame, c'est toujours mieux Smile )

Pour ton problème de requête, as tu regardé mon message de la page précédente ? (pas celui qui parle de mettre empty eu lieu de !empty, celui qui parle justement de la requête et des $limit_1, $limit_2), car là tu ne concatène pas la chaîne donc ce sont les noms de variables qui sont envoyés à la requête et non les valeurs de celles-ci. (Du moins je crois bien, enfin si tu n'as pas regardé mon message de la page précédente, regardes le et vois si c'est en rapport avec ton problème.)


RE: Pbm de statistiques :s - leni - 02-01-2008

oxman a écrit :Alors maintenant je me marre le voir galérer sur un truc à 2 balles. Et après ça se dit programateur (j'ai lancé ma ligne) et ça arbore le logo "php", je me marre je vous le dit les jeunes.

Jamais sa se remet en question se genre de bebetes ?

c'est bon jai finit, on passe à autre chose. Oxoman, repond pas stp, sa servirai a rien, i a pas de debat, et je n'attand pas d'aide de ta part (peut-être je me trompe)

Pour le code, j'ai coriger ma requete, elel marche impec Smile
mais il y a toujorus le pbm pour els pages.... elle ne defilent pas, et si on touche a l'url, sa bug ... Voila le script, j'edit ausis ems autre post :p

Code PHP :
<?php 
$nombre_entree2
= mysql_query('SELECT COUNT(*) AS nombre FROM user WHERE administrateur="0"') or die(mysql_error());
$nombre_entree = mysql_fetch_array($nombre_entree2) or die(mysql_error());

$nb_page = ceil($nombre_entree['nombre'] / 15);


if (!empty(
$_GET['order']))
{
$ordre = mysql_real_escape_string(htmlspecialchars(trim($_GET['order'])));
}
else
{
$order = "points";
}
if (empty(
$_GET['page']))
{
$page = 1;
}
else
{
$page = intval($_GET['page']);
}


$limit2 = $page*15;
$limit1 = $limit2-15;

if (
$page >= $nb_page)
{
$diff = $nombre_entree['nombre']%15;
$limit1 = ($page*15)-$diff;
$limit2 = $limit1+$nombre_entree['nombre'];
}
if (
$nombre_entree['nombre'] <=15)
{
$limit1 = 0;
$limit2 = $nombre_entree['nombre'];
}
echo
$order;
$reponse = mysql_query('SELECT pseudo, points, alliance, ptsoff, ptsdef FROM user WHERE administrateur="0" ORDER BY '.$order.' DESC LIMIT '.$limit1.','.$limit2.'') or die(mysql_error().'471');
?><br />
<table align="center" width="90%" border="1">
<tr>
<td width="15%"><p align="center"><a href="statistique.php?id=stat&order=pseudo" >pseudo</a></p></td>
<td width="10%"><p align="center"><a href="statistique.php?id=stat&order=alliance" >alliance</a></p></td>
<td width="25%"><p align="center"><a href="statistique.php?id=stat&order=points" >points</a></p></td>
<td width="25%"><p align="center"><a href="statistique.php?id=stat&order=ptsoff" >points offenssifs</a></p></td>
<td width="25%"><p align="center"><a href="statistique.php?id=stat&order=ptsdef" >points deffenssifs</a></p></td>
</tr>
<?php
while ($donnees3 = mysql_fetch_array($reponse))
{
?>
<tr>
<td width="15%"><p align="center"><?
if ($donnees3['pseudo'] == $_SESSION['pseudo'])
{
?>
<strong><? echo $donnees3['pseudo']; ?> </strong>
<?php
}
else {
echo
'<a href="statistique.php?id=profil&player='.$donnees3['pseudo'].'">';
echo
$donnees3['pseudo'];
echo
'</a>';
}
?></p></td>
<td width="10%"><p align="center"><?
if (empty($donnees3['alliance']))
{
echo
'';
}
elseif (
$donnees3['alliance'] == $donnees['alliance'])
{
echo
'<a href="alliance.php"><strong>';
echo
$donnees['alliance'];
echo
'<\strong></a>';
}
else
{
echo
'<a href="statistique.php?id=profil&alliance='.$donnees3['alliance'].'">';
echo
$donnees3['alliance'];
echo
'</a>';
}
?></p></td>
<td width="25%"><p align="center"><? echo $donnees3['points']; ?></p></td>
<td width="25%"><p align="center"><? echo $donnees3['ptsoff']; ?></p></td>
<td width="25%"><p align="center"><? echo $donnees3['ptsdef']; ?></p></td>
</tr>
<?php
}
?> </table>
<?php
$page_actuelle
= 1;

while(
$page_actuelle < $nb_page)
{
echo
'<a href="statistique.php?id=statamp;order='.$order.'&page='.$page_actuelle.'"> Page N°'.$page_actuelle.'</a>';

$page_actuelle++;
}



RE: Pbm de statistiques :s - alfanor - 02-01-2008

Euh ton lien pour les pages, il ne te parais pas bizarre ?

Code PHP :
<?php 
echo '<a href="statistique.php?id=statamp;order='.$order.'&page='.$page_actuelle.'"> Page N°'.$page_actuelle.'</a>';

Personnellement quelque chose comme cela m'irais mieux je pense :

Code PHP :
<?php 
echo '<a href="statistique.php?id=stat&order='.$order.'&page='.$page_actuelle.'"> Page N°'.$page_actuelle.'</a>';

Sinon ça veut dire quoi 'id=stat' ? C'est pas une forme d'id un peu bizarre ça ?

Sinon suis l'évolution de tes variables qui entrent en relations dans l'affichage des pages durant tout le script afin de voir d'où peut venir l'erreur. (un petit echo $ta_variable par-ci par-là afin de voir si elle fait ce que tu penses qu'elle fait ça ne peut pas te faire de mal ^^)

Après personnellement je trouve que ton code est assez "foutoir", on ne s'y retrouve pas dedans, un bon script (à mon goût) pour ce qui est de la pagination ressemble à cela :

Code PHP :
<?php 
$entree_par_page
= 10; // Nombre d'entrée listée sur chaque page

/* On compte le nombre de pages nécessaires */
$sql = 'SELECT COUNT(*) AS nombre FROM la_table';
$nombre_entree = mysql_query($sql)or die('Erreur SQL ligne ' . __LINE__ . ' dans la requête : <br/>' . $sql . ' <br/> L\'erreur est : <br/> ' . mysql_error());

$nombre_page = ceil($nombre_entree['nombre'] / $entree_par_page); // Nombre de page nécessaires

/* Si l'utilisateur à demandé à visualisé une certaine page, alors on affecte le numéro de cette page à la variable $numero_page */
if(!empty($_GET['numero_page']))
{
$numero_page = mysql_real_escape_string(intval($_GET['numero_page']));

/* On vérifie que l'utilisateur ne modifie pas à la main le numéro de la page de nouvelle à visualiser, si c'est le cas on met à 1 la valeur de la variable */
if($numero_page > $nombre_page)
{
$numero_page = 1;
}
}

/* Si l'utilisateur n'a pas demandé à visualiser une certaine page alors on met à 1 la valeur de la variable pour que le script s'execute normalement */
else
{
$numero_page = 1;
}

for(
$i = 1; $i <= $nombre_page; $i++)
{
if(
$i == $numero_page)
echo
$i;

else
echo
'<a href="?numero_page=' . $i . '">' . $i . '</a>';

echo
' &nbsp ';
}
?>

Bon enfin je met ça, mais ça ne va pas t'aider pour ton problème, juste peut être pour mieux organiser ton code (j'ai même pas vérifier que mon exemple marche donc bon).

D'ailleurs i lserait bien que tu indentes ton codes quand tu le postes, ce serait BEAUCOUP plus facile à le lire Smile