Affichage colonne + pagination d'un resultat sql [Résolu]

Signaler
Messages postés
11
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
19 novembre 2009
-
Messages postés
11
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
19 novembre 2009
-
Bonsoir à tous

Voilà je tourne en rond depuis plus d'une semaine à chercher un script valable de "pagination" et je ne trouve rien qui m'aille ....

Voilà en gros ce que je cherche : (c'est pour une galerie photo)
Je cherche à afficher mon resultat sous forme de tableau comprenant 3 x 3 photos .

Soit j'arrive à afficher 9 photos à la suite et un lien vers les pages suivantes quand il y a d'autres photos ...

Soit j'arrive à afficher toutes mes photos sur 3 colonnes mais sans pagination ...

Mais impossible de combiner les 2 !

Merci d'avance de votre aide.

ps: je peux vous filer les 2 "bouts" de code qui permettent d'arriver à ces 2 résultats si vous voulez

14 réponses

Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
39
Bon excuse moi encore, j'ai fait ça à chaud mais la je me suis décidé à faire un test et voici la bonne façon :

$i=1;
$cutlimit=3;

$sql = mysql_query(SELECT .....);

echo "\";

while ($ligne = mysql_fetch_array($sql))
{
echo \"$ligne[$image], \";
if($i==$cutlimit)
{
$cutlimit += $cutlimit;
echo \"----
\";
}
$i++;
}
echo "
";



______________________________________________________________________
Test du chi2
Messages postés
11
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
19 novembre 2009

J'ai avancé un peu mais j'ai une erreur que je n'arrive pas à résoudre...

Au lieu de m'afficher mes 9 premieres images sur la premiere page et les 2 dernieres sur la deuxieme page , il m'affiche 8 fois la premiere image , puis 8 fois la seconde etc etc...

Voici le code :

<html>
<head>
<title>Ma galerie</title>
<script type="text/javascript" src="lightbox.js"></script>

</head>



<?php
include ('fonction.inc.php');
// on se connecte à MySQL 
$connexion = mysql_connect('localhost', 'root', ''); 

// on sélectionne la base 
mysql_select_db('galerie',$connexion); 

// on crée la requête SQL qui permettra de choisir la technologie voulue
$sql = 'SELECT * FROM images ORDER BY numero DESC';


$parpage = 9; // Nombre d'enregistrements par page à afficher
$nbcol = 3;
$champ = 'lienmini';
$table = 'images';
$image = 'lien';


// On définit le suffixe du lien url qui affichera les pages
// $_SERVEUR['PHP_SELF'] donne l'arborescence de la page courante
$url = 'index.php'."?limit=";

$total = mysql_query($sql); // Résultat total de la requête $sql
$nblignes = mysql_num_rows($total); // Nbre total d'enregistrements

// On calcule le nombre de pages à afficher en arrondissant
// le résultat au nombre supérieur grâce à la fonction ceil()
$nbpages = ceil($nblignes/$parpage);


//==============================================================================
// Exemple d'affichage HTML
//==============================================================================


// Si une valeur 'limit' est passée par url, on vérifie la validité de
// cette valeur par mesure de sécurité avec la fonction validlimit()
// cette fonction retourne automatiquement le résultat de la requête
$result = validlimit($nblignes,$parpage,$sql);

// On affiche le résultat de la requête
echo '';
// On crée donc ici son propre tableau pour lequel on souhaite une pagination
while ($ligne = mysql_fetch_array($result)) {

$nb= count($ligne);
for($i=0;$i<$nb;$i++){
if($i%$nbcol==0)
echo '----
';
echo ', ';
if($i%$nbcol==($nbcol-1))
echo '';}
}echo '
';
// Menu de pagination que l'on place après la requête
echo "
";
echo pagination($url,$parpage,$nblignes,$nbpages);
echo "
";

mysql_free_result($result); // Libère le résultat de la mémoire


// on ferme la connexion à mysql 
mysql_close(); 
?>
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
39
je tourne en rond depuis plus d'une semaine à chercher un script valable de "pagination"
T'a sûrement cherché j'en doute pas! Convenablement je pense pas !

et je ne trouve rien qui m'aille ....

Il est rare de trouver un script en parfaite adéquation avec ses besoins par contre on peu toujours s'inpirer d'un script ou d'un tutoriel.




Test du chi2
Messages postés
11
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
19 novembre 2009

hummm sympa la réponse , ça m'avance bien ...
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
39
Messages postés
11
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
19 novembre 2009

Il est très bien ton lien , je l'avais même déjà visité

Mais ça ne résolve pas mon problème car il parle juste de la pagination toute simple (chose que j'arrive à faire sans soucis)

Chose que j'arrive à faire également : afficher toutes mes images sur 3 colonnes.

Mais je n'arrive pas à faire les deux en même temps ! afficher un nombre d'images (en l'occurrence ici 9)sur plusieurs pages.

merci d'avance
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
39
Procède ainsi :

Au départ la récupération dans la base de donnée est linéaire donc pour faire un affichage 3x3 il te faut coupé la récupération :

Exemple :

$i=0;
$cutlimit=3;

$sql = mysql_query(SELECT .....);

echo "\";

while ($ligne = mysql_fetch_array($sql))
{
echo \"$ligne[$image], \";
if($i==$cutlimit)
{
$cutlimit += $cutlimit;
echo \"----
\";
}
$i++;
}
echo "
";
Il s'agit d'une approche



______________________________________________________________________
Test du chi2
Messages postés
11
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
19 novembre 2009

C'est déjà mieux mais pas encore ça ...

Là il m'affiche sur la premiere page : 4 photos , en dessous 3 puis en dessous 2.
et sur la deuxieme page , les deux dernieres photos.
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
39
Non en faite c'est moi il faut mettre $cutlimit=2;


______________________________________________________________________
Test du chi2
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
39
et j'ai oublié : dans le if() $cutlimit = $cutlimit+1;


______________________________________________________________________
Test du chi2
Messages postés
11
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
19 novembre 2009

Ah ben niquel çà fonctionne ...

J'ai encore une fois pas tout compris mais bon je crois que ça fait tellement d'heure que je passe dessus que je vois plus rien .

Merci beaucoup de ta gentillesse et de ton aide.
Messages postés
11
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
19 novembre 2009

D'ailleurs c'est avec ta solution sur la page 1 que ça fonctionne , celle là j'ai pas essayé encore mais je vais tester aussi.

merci encore
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
39
OK, n'oublie pas de valider la bonne réponse


______________________________________________________________________
Test du chi2
Messages postés
11
Date d'inscription
jeudi 28 décembre 2000
Statut
Membre
Dernière intervention
19 novembre 2009

voilà qui est fait
(j'ai validé ta derniere solution qui me parait etre la meilleure vu qu'on retrouve bien le nombre d'image qu'on désire par colonne en face de $cutlimit)