Pagination requète aléatoire
Bonjour a tous ,
Je travail sur un projet en ce moment (pour m'entrainer , je débute).
J'ai donc réussi a créer une pagination automatique du résultat d'une requète sql en suivant un tuto sur internet dont voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| <?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=dechetterie_npdc' , 'root' , '' ) ;
}
catch (Exception $e)
{
die('Erreur :' .$e->getMessage());
}
// --------------- Étape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 4; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = $bdd->query('SELECT COUNT(*) AS nb_messages FROM npdc');
$donnees = $retour->fetch();
$totalDesMessages = $donnees['nb_messages'];
// 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="test3.php?page=' . $i . '">' . $i . '</a> ';
}
?>
</p>
<?php
// --------------- Étape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
if (isset($_GET['page']))
{
$page = $_GET['page']; // 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 = $bdd->query('SELECT * FROM npdc ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($donnees = $reponse->fetch())
{
echo '<p><strong>' . $donnees['adresse'] . '</strong> a écrit :<br />' . $donnees['ville'] . '</p>';
}
?> |
Je voudrais maintenant obtenir la meme chose mais avec une requete à tri aléatoir du type :
Code:
$reponse = $bdd->query('select * from (select * from npdc ) s order by rand()');
Je ne sais pas trop comment mis prendre , sur le code actuel , on fait une boucle et a chaque changement de page , on relance la requete en changeant les LIMIT ( enfin si j'ai bien compris);
Si vous avez une solution( un tuto , une idée de départ??) , j'ai pas mal chercher sur le web mais j'ai pas trouvé se que je voulais.
En vous remerciant.
pagination de plusieurs requètes sql
Bonjour a tous ,
Aujourdui je vaudrais corser un peu mon code d'hier ( pour ce qui ont suivi ).
Je voudrais faire une pagination des résultats de 3 requètes sql aléatoire ( en faite j'ai dans ma table sql une colonne positions avec comme valeurs soit 1 , 2 ou 3) .
En gros :
REQUETE A (position = 1) : résultat sur x nombre de pages
REQUETE B (position = 2) : résultat sur x nombre de pages a la suite de requète A
REQUETE C (position = 3) : résultat sur x nombre de pages a la suite de requète B
Il faudra que je puisse inserer les titres de mes requetes(requete A, requete B, requette C) avant les résultats
je met mon code d'hier ou la pagination fonctionne parfaitement sur une seul requete aléatoire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
<?php
session_start();
if (!isset($_SESSION['key'])) {
$_SESSION['key'] = rand(1, 1000);
}
if ((isset($_GET['action'])) && ($_GET['action'] == 'logout'))
{
$_SESSION = array();
session_destroy();
session_start();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Livre d'or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
form, .pages
{
text-align:center;
}
</style>
</head>
<p class="pages">
<p><a href="test4.php?action=logout" title="Déconnexion">Se déconnecter</a></p>
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=dechetterie_npdc' , 'root' , '' ) ;
}
catch (Exception $e)
{
die('Erreur :' .$e->getMessage());
}
// --------------- Étape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 4; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = $bdd->query('SELECT COUNT(*) AS nb_messages FROM npdc');
$donnees = $retour->fetch();
$totalDesMessages = $donnees['nb_messages'];
// 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="test4.php?page=' . $i . '">' . $i . '</a> ';
}
?>
</p>
<?php
// --------------- Étape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
if (isset($_GET['page']))
{
$page = $_GET['page']; // 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 = $bdd->query('SELECT * FROM npdc WHERE POSITION=1 ORDER BY RAND(' . $_SESSION['key'] . ') LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($donnees = $reponse->fetch())
{
echo '<p><strong>' . $donnees['adresse'] . '</strong> a écrit :<br />' . $donnees['ville'] . '</p>';
}
?>
</body>
</html> |
Voila j'ai beaucoup chercher sur le net hier après-midi et soir , j'ai pas trouvé ce que je voulais , il y a pas mal d'info pour 1 seul requete mais pas plusieurs , apparament c'est assez complexe .
Moi je débute , je me lance quelque defis pour apprendre .
En vous remerciant.