CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Affichage page par page

HipHopee
HipHopee
Niveau 54
24 janvier 2008 à 22:47:55

Bonsoir à tous,

Je suis entrain de réaliser un site web utilisant les Bases de données.

J'aimerais, pour quelques une de mes rubriques, faire un affichage page par page (1, 2, 3 etc...) de manière automatique sans à avoir à crée une nouvelle page manuellement.

Je vous met le code php que j'ai actuellement dans une des rubriques en questions :

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de mabase

mysql_query("SET NAMES UTF8"); // Caractere accent

$reponse = mysql_query("SELECT * FROM videos ORDER BY id DESC"); // Requête SQL

// On fait une boucle pour lister tout ce que contient la table :

while ($donnees = mysql_fetch_array($reponse) )
{
?>
<div class="module-videos">
<?php echo $donnees['vignette']; ?>
<strong><?php echo $donnees['artiste']; ?></strong><br />
<?php echo $donnees['titre']; ?><br /><br />
<?php echo $donnees['bouton']; ?>
</div>

<?php
}

mysql_close(); // Déconnexion de MySQL
?>

Je voudrais avoir 10 vidéos par pages..

J'éspère que vous pourrez m'aider,

Merci.

A+

deepblue
deepblue
Niveau 16
24 janvier 2008 à 23:06:17

http://www.siteduzero.com/tuto-3-188-1-tp-un-livre-d-or.html#ss_part_1

Tu as un principe (par tant d'autre) de la pagination

HipHopee
HipHopee
Niveau 54
24 janvier 2008 à 23:36:16

Merci pour le lien deepblue, j'ai essayer mais sa ne fonctionne pas et je débute en php.. si tu pouvais un peu m'éclairer sa serait super sympa :) Voici le code que j'ai mis :

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de mabase

mysql_query("SET NAMES UTF8"); // Caractere accent

$reponse = mysql_query("SELECT * FROM videos ORDER BY id DESC"); // Requête SQL

// On met dans une variable le nombre de messages qu'on veut par page

$nombreDeVideosParPage = 10; // Essayez de changer ce nombre pour voir :o)

// On récupère le nombre total de messages

$retour = mysql_query('SELECT COUNT(*) AS nb_videos FROM video');

$donnees = mysql_fetch_array($retour);$totalDesVideos = $donnees['nb_video'];

// On calcule le nombre de pages à créer

$nombreDeVideos = ceil($totalDesVideos / $nombreDeVideosParPage);

// Puis on fait une boucle pour écrire les liens vers chacune des pages

echo 'Page : ';

for ($i = 1 ; $i <= $nombreDePages ; $i++)

{

echo '<a href="videos.php?page=' . $i . '">' . $i . '</a> ';

}
<?php
}

mysql_close(); // Déconnexion de MySQL
?>

deepblue
deepblue
Niveau 16
25 janvier 2008 à 07:06:06

1- 1ere erreur ici :
$nombreDeVideos = ceil($totalDesVideos / $nombreDeVideosParPage);
Ce n'est pas $nombreDeVideos, mais $nombreDePages
Tu as un nombre totale de video $totalDesVideos, une nombre qui determine le nombre de video à afficher par page : $nombreDeVideosParPage, si tu fais le quotient, tu aurait le nombre de pages nécessaires et si il faut 5.5 pages (11 video au totale/2 a afficher par page, par exemple), alors ceil arrondira à 6;

2- Tu dois traiter ta requete SQL :
$reponse = mysql_query("SELECT * FROM videos ORDER BY id DESC");

Dans les liens que tu génères, tu as un ?page=UN_NOMBRE, ce qui correspondera à la page voulue par l'utilisateur.
Regarde l'étape 3 du codage du livre d'or (dans la partie 4 du tutorial).

HipHopee
HipHopee
Niveau 54
25 janvier 2008 à 15:29:43

Salut,

Qu'est-ce que tu appel traiter ta requete SQL exactement ?

Pour infos j'ai actuellement 40 vidéos et 10 par pages, donc 4 pages pour le moment.

Sinon j'ai changé quelques trucs mais sa ne fonctionne toujours pas :

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de mabase

mysql_query("SET NAMES UTF8"); // Caractere accent

$reponse = mysql_query("SELECT * FROM videos ORDER BY id DESC"); // Requête SQL

// On met dans une variable le nombre de messages qu'on veut par page

$nombreDeVideosParPage = 10; // Essayez de changer ce nombre pour voir :o)

// On récupère le nombre total de videos

$retour = mysql_query("SELECT COUNT(*) AS nb_videos FROM videos");

$donnees = mysql_fetch_array($retour);$totalDesVideos = $donnees['nb_videos'];

// On calcule le nombre de pages à créer

$nombreDePages = ceil($totalDesVideos / $nombreDeVideosParPage);

// Puis on fait une boucle pour écrire les liens vers chacune des pages

echo 'Page : ';

for ($i = 1 ; $i <= $nombreDePages ; $i++)

{

echo '<a href="videos.php?page=' . $i . '">' . $i . '</a> ';

}
?>
<?php
}

mysql_close(); // Déconnexion de MySQL
?>

deepblue
deepblue
Niveau 16
25 janvier 2008 à 18:26:40

Compare :
$reponse = mysql_query("SELECT * FROM videos ORDER BY id DESC"); // Requête SQL
à :
$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

Maintenant, essaye de comprendre, sans faire du pur copié/collé

HipHopee
HipHopee
Niveau 54
25 janvier 2008 à 23:07:35

Non y'a pas moyen, j'y arrive pas :snif:

deepblue
deepblue
Niveau 16
25 janvier 2008 à 23:16:11

En version non testée :

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("mabase"); // Sélection de mabase

mysql_query("SET NAMES UTF8"); // Caractere accent

$nombreDeVideosParPage = 10;

$retour = mysql_query("SELECT COUNT(*) AS nb_videos FROM videos");
$donnees = mysql_fetch_array($retour);

$totalDesVideos = $donnees['nb_videos'];
$nombreDePages = ceil($totalDesVideos / $nombreDeVideosParPage);

if (isset($_GET['page'])) {
if(is_numeric($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}
}
else {
$page = 1;
}

$premierMessageAafficher = ($page - 1) * $nombreDeVideosParPage;
$reponse = mysql_query('SELECT * FROM videos ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

while ($donnees = mysql_fetch_array($reponse) ) {
?>
<div class="module-videos">
<?php echo $donnees['vignette']; ?>
<strong><?php echo $donnees['artiste']; ?></strong><br />
<?php echo $donnees['titre']; ?><br /><br />
<?php echo $donnees['bouton']; ?>
</div>
<?php
}

echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++) {
echo '<a href="videos.php?page=' . $i . '">' . $i . '</a> ';
}

mysql_close();
?>

HipHopee
HipHopee
Niveau 54
26 janvier 2008 à 00:15:59

Merci ! La pagination s'affiche bien avec les liens comme il faut, mais le contenu des tables non :/, voici les erreurs :

Notice: Undefined variable: nombreDeMessagesParPage in d:\mywebsite\site_1\videos.php on line 80

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\mywebsite\site_1\videos.php on line 83

HipHopee
HipHopee
Niveau 54
26 janvier 2008 à 00:19:41

C'est bon c'est réglé juste a remplacé $nombreDeMessagesParPage); par $nombreDeVideosParPage);

Grand merci à toi Deepblue en plus j'ai bien compris le principe^^

peace.

deepblue
deepblue
Niveau 16
26 janvier 2008 à 00:27:22

Tant mieux ^^

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment