Nombre de requêtes par page mal calculées
Résolu
Balafatch
-
kibel Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
kibel Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour,
J'utilise un script de FAQ.
Par exemple sur la page http://www.10moi.fr/FAQ/afficher.php?id_faq=11 Il y a la totalité des questions de cette catégorie soit 14 questions alors que je n'en ai demandé que 10 ; n'en demandant que 10 le nombre de pages est bien calculé mais pas le nombre de questions par page ; a chaque page j'ai la totalité des questions.
Quelqu'un peut il me dire s'il voit un problème sur le script ? (je ne transmet que la partie script en php) :
<?php include("inc/header.php"); ?>
<?php include("inc/conf.php"); ?>
<?php include("inc/fonctions.php"); ?>
<?php
if($_GET['id_faq']) $id_faq=$_GET['id_faq'];
else $id_faq='';
$requete = mysql_query("select * from faq_categories where id=\"$id_faq\"");
if (mysql_num_rows($requete)==0){
mysql_close($connect_db);
header("location: index.php");
exit();
}
?>
<?php
$requete = mysql_query("select * from faq_categories where id=\"$id_faq\"");
while($ligne = mysql_fetch_array($requete)){
$id_cat = $ligne["id"];
$nom2 = utf8_encode($ligne["nom"]);
}
?>
<table border="0" align="center" cellpadding="3" cellspacing="1" width="<?php echo $width_table; ?>">
<tr>
<td><?php echo $image_categorie_open; ?> <font color="#000080"><b><?php echo $nom2; ?></b></font></td>
<td align="right">Catégorie :
<select onchange="javascript:if(this.value != <?php echo $id_faq; ?>) document.location.href=this.value;">
<option value="<?php echo $page_index; ?>">Accueil</option>
<option value="<?php echo $page_ajouter_q; ?>">Ajouter une Faq</option>
<option value="<?php echo $page_recherche; ?>">Rechercher</option>
<option>----------</option>
<?php
$requete = mysql_query("select * from faq_categories order by nom");
while($ligne = mysql_fetch_array($requete)){
$id_cat = $ligne["id"];
$nom = utf8_encode($ligne["nom"]);
echo("<option value=\"$page_afficher?id_faq=$id_cat\"");
if ($id_cat == $id_faq){echo(" selected");}
if ($id_cat == 0){echo("<option value=\"$page_index\"");}
echo(">".$nom."</option>");
}
?>
</select>
</td>
</tr>
</table>
<br>
<table border="0" align="center" width="<?php echo $width_table; ?>" cellpadding="3" cellspacing="1">
<tr>
<td class="titre" height="8"></td>
</tr>
<tr>
<td valign="top">
<?php
if(!$start)
{$start=0;}
$requete = mysql_query("select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre");
while($ligne = mysql_fetch_array($requete)){
$id_q = $ligne["id"];
$od_cat = $ligne["id_cat"];
$titre = $ligne["titre"];
$titre = utf8_encode($titre);
$message = $ligne["message"];
$message = nl2br($message);
$message = utf8_encode($message);
$date = $ligne["date"];
$date = explode("-",$date);
$annee = $date[0];
$mois = $date[1];
$jour = $date[2];
$date = $jour."/".$mois."/".$annee;
echo("$image_question <a href='$page_afficher_details?id_cat=$id_faq&id=$id_q'><b>$titre</b></a><br><br>");
}
?>
</td>
<td valign="top"><?php echo("$image") ?></td>
</tr>
</table>
<br>
<center>
[ <?php
$result=mysql_query("select count(*) from faq where id_cat=\"$id_faq\" and etat=\"1\"");
$row=mysql_fetch_row($result);
if ($start == "0")
{
echo"<b>1</b> ";
}
else
{
echo"<a href=\"$page_afficher?id_faq=$id_faq&start=0\" target='_top'>1</a> ";
///// Commentaire perso : $page_afficher est sur la page conf.php et désigne la page sur laquelle est ce script : afficher.php
}
for($index=1;($index*$nombre_message_page)<$row[0];$index++)
{
$pg = $index+1;
if(($index*$nombre_message_page)!=$start)
///// Commentaire perso :En début de cette page il y a bien l'appel <?php include("inc/conf.php"); ?> et sur la page <?php include("inc/conf.php"); ?> il y a bien $nombre_message_page = "10"; // nombre de message par page
{
print(" - <a href=\"$page_afficher?id_faq=$id_faq&start=".($index*$nombre_message_page)."\" target='_top'>");
echo"$pg";
print("</a>");
}
else
{
echo" - <b>$pg</b>";
}
}
?> ]</center>
<br>
<?php include("inc/footer.php"); ?>
Merci vraiment si quelqu'un a un commentaire !!!
Bonjour,
J'utilise un script de FAQ.
Par exemple sur la page http://www.10moi.fr/FAQ/afficher.php?id_faq=11 Il y a la totalité des questions de cette catégorie soit 14 questions alors que je n'en ai demandé que 10 ; n'en demandant que 10 le nombre de pages est bien calculé mais pas le nombre de questions par page ; a chaque page j'ai la totalité des questions.
Quelqu'un peut il me dire s'il voit un problème sur le script ? (je ne transmet que la partie script en php) :
<?php include("inc/header.php"); ?>
<?php include("inc/conf.php"); ?>
<?php include("inc/fonctions.php"); ?>
<?php
if($_GET['id_faq']) $id_faq=$_GET['id_faq'];
else $id_faq='';
$requete = mysql_query("select * from faq_categories where id=\"$id_faq\"");
if (mysql_num_rows($requete)==0){
mysql_close($connect_db);
header("location: index.php");
exit();
}
?>
<?php
$requete = mysql_query("select * from faq_categories where id=\"$id_faq\"");
while($ligne = mysql_fetch_array($requete)){
$id_cat = $ligne["id"];
$nom2 = utf8_encode($ligne["nom"]);
}
?>
<table border="0" align="center" cellpadding="3" cellspacing="1" width="<?php echo $width_table; ?>">
<tr>
<td><?php echo $image_categorie_open; ?> <font color="#000080"><b><?php echo $nom2; ?></b></font></td>
<td align="right">Catégorie :
<select onchange="javascript:if(this.value != <?php echo $id_faq; ?>) document.location.href=this.value;">
<option value="<?php echo $page_index; ?>">Accueil</option>
<option value="<?php echo $page_ajouter_q; ?>">Ajouter une Faq</option>
<option value="<?php echo $page_recherche; ?>">Rechercher</option>
<option>----------</option>
<?php
$requete = mysql_query("select * from faq_categories order by nom");
while($ligne = mysql_fetch_array($requete)){
$id_cat = $ligne["id"];
$nom = utf8_encode($ligne["nom"]);
echo("<option value=\"$page_afficher?id_faq=$id_cat\"");
if ($id_cat == $id_faq){echo(" selected");}
if ($id_cat == 0){echo("<option value=\"$page_index\"");}
echo(">".$nom."</option>");
}
?>
</select>
</td>
</tr>
</table>
<br>
<table border="0" align="center" width="<?php echo $width_table; ?>" cellpadding="3" cellspacing="1">
<tr>
<td class="titre" height="8"></td>
</tr>
<tr>
<td valign="top">
<?php
if(!$start)
{$start=0;}
$requete = mysql_query("select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre");
while($ligne = mysql_fetch_array($requete)){
$id_q = $ligne["id"];
$od_cat = $ligne["id_cat"];
$titre = $ligne["titre"];
$titre = utf8_encode($titre);
$message = $ligne["message"];
$message = nl2br($message);
$message = utf8_encode($message);
$date = $ligne["date"];
$date = explode("-",$date);
$annee = $date[0];
$mois = $date[1];
$jour = $date[2];
$date = $jour."/".$mois."/".$annee;
echo("$image_question <a href='$page_afficher_details?id_cat=$id_faq&id=$id_q'><b>$titre</b></a><br><br>");
}
?>
</td>
<td valign="top"><?php echo("$image") ?></td>
</tr>
</table>
<br>
<center>
[ <?php
$result=mysql_query("select count(*) from faq where id_cat=\"$id_faq\" and etat=\"1\"");
$row=mysql_fetch_row($result);
if ($start == "0")
{
echo"<b>1</b> ";
}
else
{
echo"<a href=\"$page_afficher?id_faq=$id_faq&start=0\" target='_top'>1</a> ";
///// Commentaire perso : $page_afficher est sur la page conf.php et désigne la page sur laquelle est ce script : afficher.php
}
for($index=1;($index*$nombre_message_page)<$row[0];$index++)
{
$pg = $index+1;
if(($index*$nombre_message_page)!=$start)
///// Commentaire perso :En début de cette page il y a bien l'appel <?php include("inc/conf.php"); ?> et sur la page <?php include("inc/conf.php"); ?> il y a bien $nombre_message_page = "10"; // nombre de message par page
{
print(" - <a href=\"$page_afficher?id_faq=$id_faq&start=".($index*$nombre_message_page)."\" target='_top'>");
echo"$pg";
print("</a>");
}
else
{
echo" - <b>$pg</b>";
}
}
?> ]</center>
<br>
<?php include("inc/footer.php"); ?>
Merci vraiment si quelqu'un a un commentaire !!!
A voir également:
- Nombre de requêtes par page mal calculées
- Impossible de supprimer une page word - Guide
- Nombre de jours entre deux dates excel - Guide
- Nombre de page - Guide
- Imprimer tableau excel sur une page - Guide
- Page d'accueil - Guide
7 réponses
Pourrais tu encadrer la zone qui pose problème car sans indetation dur dur à lire.
Sinon, il s'agit trés probablement d'une erreur d'algorithme.
Sinon, une solution si tu veux avoir seulement 10 questions, tu peux le demander dans ta requete avec le LIMITED vu que tu connais le début et la fin.
Sinon, il s'agit trés probablement d'une erreur d'algorithme.
Sinon, une solution si tu veux avoir seulement 10 questions, tu peux le demander dans ta requete avec le LIMITED vu que tu connais le début et la fin.
Merci pour ta réponse.
Il me semble que la zone qui pose problème est celle d'affichage des requêtes et donc de leur nombre par page mais je ne vois rien qui le demande précisément (mais je suis dans la situation de quelqu'un qui arrive à deviner la signification d'une langue étrangère sans savoir la parler !!!) :
<?php
if(!$start)
{$start=0;}
$requete = mysql_query("select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre");
while($ligne = mysql_fetch_array($requete)){
$id_q = $ligne["id"];
$od_cat = $ligne["id_cat"];
$titre = $ligne["titre"];
$titre = utf8_encode($titre);
$message = $ligne["message"];
$message = nl2br($message);
$message = utf8_encode($message);
$date = $ligne["date"];
$date = explode("-",$date);
$annee = $date[0];
$mois = $date[1];
$jour = $date[2];
$date = $jour."/".$mois."/".$annee;
echo("$image_question <a href='$page_afficher_details?id_cat=$id_faq&id=$id_q'><b>$titre</b></a><br><br>");
}
?>
Tu as une idée ?
Il me semble que la zone qui pose problème est celle d'affichage des requêtes et donc de leur nombre par page mais je ne vois rien qui le demande précisément (mais je suis dans la situation de quelqu'un qui arrive à deviner la signification d'une langue étrangère sans savoir la parler !!!) :
<?php
if(!$start)
{$start=0;}
$requete = mysql_query("select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre");
while($ligne = mysql_fetch_array($requete)){
$id_q = $ligne["id"];
$od_cat = $ligne["id_cat"];
$titre = $ligne["titre"];
$titre = utf8_encode($titre);
$message = $ligne["message"];
$message = nl2br($message);
$message = utf8_encode($message);
$date = $ligne["date"];
$date = explode("-",$date);
$annee = $date[0];
$mois = $date[1];
$jour = $date[2];
$date = $jour."/".$mois."/".$annee;
echo("$image_question <a href='$page_afficher_details?id_cat=$id_faq&id=$id_q'><b>$titre</b></a><br><br>");
}
?>
Tu as une idée ?
Oui même je pense que celà est du que en faîte tu sélectionnes dans ta requête toutes les données se trouvant dans faq correspondant de la catégorie et à l'état 1. Puis après tu les affiches toutes. Donc que tu en es 5, 10, 15 en résultat, il se moque totalement du 10 car tu ne fais jamais de vérification.
while($ligne = mysql_fetch_array($requete)){
Tu extrait une données, et tu l'affiches.
En faîte, il faudrait soit modfier la requête avec un LIMIT en nombre de réponse.
Voicile format:
SELECT * FROM `your_table` LIMIT X, Y
LIMIT X, Y veut dire que tu choisis les resultats a partir de la ligne X+1 et que tu affiches Y resultats
Sinon refaire l'algo d'affichage.
while($ligne = mysql_fetch_array($requete)){
Tu extrait une données, et tu l'affiches.
En faîte, il faudrait soit modfier la requête avec un LIMIT en nombre de réponse.
Voicile format:
SELECT * FROM `your_table` LIMIT X, Y
LIMIT X, Y veut dire que tu choisis les resultats a partir de la ligne X+1 et que tu affiches Y resultats
Sinon refaire l'algo d'affichage.
$requete_sql ="select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre ";
$requete_sql.=" LIMIT ".$start.",".$nombre_message_page ." ";
$requete = mysql_query($requete_sql);
Si j'ai compris ton code ça doit être ça. Il y aura peut être une erreur dans le formatage de $requete_sql, mais j'ai pas de logiciel me permettant de tester.
$requete_sql.=" LIMIT ".$start.",".$nombre_message_page ." ";
$requete = mysql_query($requete_sql);
Si j'ai compris ton code ça doit être ça. Il y aura peut être une erreur dans le formatage de $requete_sql, mais j'ai pas de logiciel me permettant de tester.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai donc corrigé de la façon suivante... mais je n'ai plus de résultats sur aucune des deux pages... je n'ai que l'affichage de la catégorie
Tu lis bien, la table est bien faq (faq_categories est la table des catégories).
$nombre_message_page est sur la page conf.php en include au début de cette page
Par contre j'observe que l'adresse de la premiére page est bien :
http://www.10moi.fr/FAQ/afficher.php?id_faq=11&start=0
et de la seconde :
http://www.10moi.fr/FAQ/afficher.php?id_faq=11&start=10
<?php
if(!$start)
{$start=0;}
$requete = mysql_query("select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre");
$requete_sql ="select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre ";
$requete_sql.=" LIMIT ".$start.",".$nombre_message_page ." ";
$requete = mysql_query($requete_sql);
{
$id_q = $ligne["id"];
$od_cat = $ligne["id_cat"];
$titre = $ligne["titre"];
$titre = utf8_encode($titre);
$message = $ligne["message"];
$message = nl2br($message);
$message = utf8_encode($message);
$date = $ligne["date"];
$date = explode("-",$date);
$annee = $date[0];
$mois = $date[1];
$jour = $date[2];
$date = $jour."/".$mois."/".$annee;
echo("$image_question <a href='$page_afficher_details?id_cat=$id_faq&id=$id_q' target='_top'><b>$titre</b></a><br><br>");
}
?>
Tu lis bien, la table est bien faq (faq_categories est la table des catégories).
$nombre_message_page est sur la page conf.php en include au début de cette page
Par contre j'observe que l'adresse de la premiére page est bien :
http://www.10moi.fr/FAQ/afficher.php?id_faq=11&start=0
et de la seconde :
http://www.10moi.fr/FAQ/afficher.php?id_faq=11&start=10
<?php
if(!$start)
{$start=0;}
$requete = mysql_query("select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre");
$requete_sql ="select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre ";
$requete_sql.=" LIMIT ".$start.",".$nombre_message_page ." ";
$requete = mysql_query($requete_sql);
{
$id_q = $ligne["id"];
$od_cat = $ligne["id_cat"];
$titre = $ligne["titre"];
$titre = utf8_encode($titre);
$message = $ligne["message"];
$message = nl2br($message);
$message = utf8_encode($message);
$date = $ligne["date"];
$date = explode("-",$date);
$annee = $date[0];
$mois = $date[1];
$jour = $date[2];
$date = $jour."/".$mois."/".$annee;
echo("$image_question <a href='$page_afficher_details?id_cat=$id_faq&id=$id_q' target='_top'><b>$titre</b></a><br><br>");
}
?>
Tu n'as pas remis le while
while($ligne = mysql_fetch_array($requete)){
c'est lui qui permet de lire les résultats.
Pour information:
mysql_query -> Execution de la requete sql
mysql_fetch_array -> recuperation ligne par ligne du resultat donnée par mysql_query
ça donne donc
<?php
if(!$start)
{$start=0;}
$requete_sql ="select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre ";
$requete_sql.=" LIMIT ".$start.",".$nombre_message_page ." ";
$requete = mysql_query($requete_sql);
while($ligne = mysql_fetch_array($requete)){
$id_q = $ligne["id"];
$od_cat = $ligne["id_cat"];
$titre = $ligne["titre"];
$titre = utf8_encode($titre);
$message = $ligne["message"];
$message = nl2br($message);
$message = utf8_encode($message);
$date = $ligne["date"];
$date = explode("-",$date);
$annee = $date[0];
$mois = $date[1];
$jour = $date[2];
$date = $jour."/".$mois."/".$annee;
echo("$image_question <a href='$page_afficher_details?id_cat=$id_faq&id=$id_q' target='_top'><b>$titre</b></a><br><br>");
}
?>
while($ligne = mysql_fetch_array($requete)){
c'est lui qui permet de lire les résultats.
Pour information:
mysql_query -> Execution de la requete sql
mysql_fetch_array -> recuperation ligne par ligne du resultat donnée par mysql_query
ça donne donc
<?php
if(!$start)
{$start=0;}
$requete_sql ="select * from faq where id_cat=\"$id_faq\" and etat=\"1\" order by titre ";
$requete_sql.=" LIMIT ".$start.",".$nombre_message_page ." ";
$requete = mysql_query($requete_sql);
while($ligne = mysql_fetch_array($requete)){
$id_q = $ligne["id"];
$od_cat = $ligne["id_cat"];
$titre = $ligne["titre"];
$titre = utf8_encode($titre);
$message = $ligne["message"];
$message = nl2br($message);
$message = utf8_encode($message);
$date = $ligne["date"];
$date = explode("-",$date);
$annee = $date[0];
$mois = $date[1];
$jour = $date[2];
$date = $jour."/".$mois."/".$annee;
echo("$image_question <a href='$page_afficher_details?id_cat=$id_faq&id=$id_q' target='_top'><b>$titre</b></a><br><br>");
}
?>