[RESOLU] Problème avec pagination dans un array

Eléphanteau du PHP | 26 Messages

23 nov. 2013, 10:58

Bonjour tout le monde

voila je suis nouveau ce sur forum et vous salue tous :D

j'ai crée une site internet qui exporte ma BDD de mes films dvd, sur la page index j'ai fait une pagination qui affiche référence, titre, genre Etc... qui fonctionne correctement.

sur le seconde page j'ai fais apparaitre les affiches (image) du films sous forme de tableau (14 images par ligne) et si je clique sur l'image sa m'affiche bien tout le détail du film avec la bande annonce tiré de allocinema tout en restant sur mon site.

Mon problème est que mes 280 affiches s'affiche toutes sur la meme page ma pagination ne fonctionne pas elle s'affiche bien dans le bas de l'écran (voir photo) alors que dans ma variable je déclare que je ne
veut voir que 112 affiches par page (d'ou le résultat de la pagination de 1 à 3)

mon site : http://mes-films-dvd.olympe.in/ (je continue a travaillé dessus sur certaines choses donc si vous voyez un défaut c'est que je modifie !!!!!!!)

Quelqu'un pourrais t-il SVP lire mon code ci-dessous et me dire ou je me trompe, sa fais 2 jours que je cale dessus et je ne comprend pas ha oui j'ai écris ce code en tant qu'amateur suis pas un pro Php.

Merci d'avance :D

Les photos la vue complete de ma page

le code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
############################################################
Liste affiche 
############################################################
-->
<?php require_once("config.inc.php"); ?>
<?php
$titre_fenetre = "Mes Dvd";
$titre_detail = "Détail d'un film";
$pied_dateMAJ = true;
$infos = false;
$infos_libelle = "";
$auteur = true;
$auteur_nom = "Ecrivez-moi";
$auteur_mail = "[email protected]";
$lien_retour = false;
$afficher_titre_haut = false;
$ImageParPage=112; # nombre de lignes a afficher par page 



# Lecture du fichier date de mise à jour
$dateMAJ = '?';

$filename = 'update.txt';
if (file_exists($filename)) {
	$handle = fopen($filename, "r");
	$dateMAJ = fread($handle, filesize($filename));
	fclose($handle);
}

# ouverture de la base pour l'affichage des affiches
mysql_select_db($database_fmt, $fmt);
$query_Recordset10 = "SELECT * FROM " . $nom_table;
//echo "query_Recordset10 : ".$query_Recordset10;
$Recordset10 = mysql_query($query_Recordset10, $fmt) or die(mysql_error());
$row_Recordset10 = mysql_fetch_assoc($Recordset10);
$Nbr_Enrg = mysql_num_rows($Recordset10);
?>


<head>

<link rel="icon" type="image/png" href="filmotech_img/favicon.png">  
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title><?php echo($titre_fenetre); ?></title>
<link href="filmotech_css.css" rel="stylesheet" type="text/css" />
<script type="text/JavaScript">
<!--
function MM_callJS(jsStr) { //v2.0
  return eval(jsStr)
}
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->
</script>
</head>


<body>
<div id="page2">
<div id="top" onclick="MM_goToURL('parent','index.php');return document.MM_returnValue"></div>
<div id="wrapper2">
<div id="main_affiche">




<?php

    echo '<table><tr>';
    $reponse = mysql_query("SELECT ID, TitreVF FROM " . $nom_table);
    $i=1;
    while ($donnees = mysql_fetch_array($reponse) )
        {
        $filename = sprintf('Affiches/Filmotech_%05d.jpg' , $donnees['ID'] );
        ?>
        <td>
        <a href="filmotech_detail.php?id=<? echo $_GET['ID']; ?><? echo $donnees['ID'];?>">
        <img width="81" title="<? echo $donnees['TitreVF'];?>" alt="<? echo $donnees['TitreVF'];?>"          
        src="<?php echo $filename; ?>" />
        </a>
		</td>
        <?php
        if ($i%14==0 AND $i!=0) {echo "</tr><tr>"; } /* si nombre de films multiple de 9, on commence une nouvelle ligne */
        $i++;
        }
?></tr></table><?


		//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($Nbr_Enrg/$ImageParPage);
//echo "nombr page : ".$nombreDePages;
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
 
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n°1    
}

$premiereEntree=($pageActuelle-1)*$ImageParPage; // On calcul la première entrée à lire
$LIMIT=" LIMIT ".$premiereEntree.", ".$ImageParPage;
$query_Recordset10=$query_Recordset10.$LIMIT;
//echo $query_Recordset1;
// fin de pagination
		



// Affichage pagination

echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i2=1; $i2<=$nombreDePages; $i2++) //On fait notre boucle
{
     //On va faire notre condition
     if($i2==$pageActuelle) //Si il s'agit de la page actuelle...
     {
         echo ' [ '.$i2.' ] '; 
     }	
     else //Sinon...
     {
          echo ' <a href="?page='.$i2.'">'.$i2.'</a> ';
		  
     }
}
echo '</p>';

// fin d'affichage pagination







 ?>


</div> <!-- End #sidebar -->

</div> <!-- End #wrapper -->

<div id="footer">
<center>
<a title="Retour au début" href="http://mes-films-dvd.olympe.in/"><img src="filmotech_img/retour_affiche.png" alt="Fiche"></a>
</center>


<p>&nbsp;&nbsp;
<?php if ($pied_dateMAJ) echo( 'Derniere mise a jour : ' . $dateMAJ . " | " ); ?>
<?php if ($infos) echo( $infos_libelle . " | " ); ?>
<?php if ($auteur) echo( '<a title="Pour envoyer un mail à Michel Tombal" href="mailto:' . $auteur_mail . '">' . $auteur_nom . "</a> | "); ?>
Realise par : &nbsp; <font color ="#FFFF33">Michel Tombal</font></p>

</body>
</div> <!-- End #footer -->
</div> <!-- End #page -->
</html>
<?php mysql_free_result($Recordset10);?>
Encore Merci d'avance
Modifié en dernier par moogli le 24 nov. 2013, 00:02, modifié 1 fois.
Raison : Bbcode php, images

Eléphanteau du PHP | 26 Messages

23 nov. 2013, 20:29

Petit Up

désolé mais je cale toujours la dessus et je commence a craquer

Merci

Mammouth du PHP | 790 Messages

23 nov. 2013, 20:52

Salut,
tu as un / étrange dans les liens de pagination: http://mes-films-dvd.olympe.in/?page=4
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Eléphanteau du PHP | 26 Messages

23 nov. 2013, 21:22

Salut,
tu as un / étrange dans les liens de pagination: http://mes-films-dvd.olympe.in/?page=4
bonsoir

corrigé page 4

mais mon problème de la pagination sur les affiches tu sais m'aider ? merci

Mammouth du PHP | 790 Messages

23 nov. 2013, 22:38

non, rien n'est corrigé, le / avant le ? ni a pas ça place (normalement !!!)
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 nov. 2013, 00:20

Salut,

Tu ne fait aucune gestion de pagination donc tout s'affiche.
Un tuto sur la chose http://www.phpdebutant.org/article84.php

Juliette la syntaxe est bonne.
Quand ont arrive sur un site sans mettre de nom de fichier on est redirigé directement sur la page déclarée comme index (généralement index.php ou index.html).
Donc site.com/?page=45 correspond a site.com/index.php?page=45 ;)



@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 26 Messages

24 nov. 2013, 08:01

Salut,

Tu ne fait aucune gestion de pagination donc tout s'affiche.
Un tuto sur la chose http://www.phpdebutant.org/article84.php

Juliette la syntaxe est bonne.
Quand ont arrive sur un site sans mettre de nom de fichier on est redirigé directement sur la page déclarée comme index (généralement index.php ou index.html).
Donc site.com/?page=45 correspond a site.com/index.php?page=45 ;)



@+
Merci à toi pour ta réponse :)

Edit
j'ai vu ton message concernant Modération :
Le multipostage est interdit sur le forum.

désolé m'en suis rendu compte apres j'ai cru que mon premier post ne c'étais pas enregistré car je ne le retrouvait plus

Mammouth du PHP | 790 Messages

24 nov. 2013, 14:11

Donc site.com/?page=45 correspond a site.com/index.php?page=45 ;)
Hé bien encore un truc que je ne savais pas, merci :mrgreen:
Les fautes de grammaire et d'orthographe contenu dans mes postes sont sous copyright, vous pouvez les utiliser pour un usage personnelle mais vous ne devrez en aucun cas les utiliser a des fins commercial sans une autorisation écrite de ma part.

Eléphanteau du PHP | 26 Messages

25 nov. 2013, 10:26

Bonjour

j'ai bien suivi le tuto et sa fonctionne pour ma pagination

Mais car il y a toujours un mais.. la pagination affiche de 1 à 7, lorsque je clique sur 2 ou 3 ou 4 Etc... je reste sur la meme page le debogeur

m'indique une erreur avec ceci :
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];
je ne vois pas comment lui indiquer le nom de la page a afficher

voici le code complet
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
############################################################
Liste affiche 
############################################################
-->
<?php require_once("config.inc.php"); ?>
<?php
$titre_fenetre = "Mes Dvd";
$titre_detail = "Détail d'un film";
$pied_dateMAJ = true;
$infos = false;
$infos_libelle = "";
$auteur = true;
$auteur_nom = "Ecrivez-moi";
$auteur_mail = "[email protected]";
$lien_retour = false;
$afficher_titre_haut = false;
$ImageParPage=54; # nombre de lignes a afficher par page 
$limite = 0; # premiere page

if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois 
               // on met limite à 0.
   
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];

# Lecture du fichier date de mise à jour
$dateMAJ = '?';

$filename = 'update.txt';
if (file_exists($filename)) {
	$handle = fopen($filename, "r");
	$dateMAJ = fread($handle, filesize($filename));
	fclose($handle);
}

# ouverture de la base pour l'affichage des affiches
mysql_select_db($database_fmt, $fmt);
$query_Recordset10 = "SELECT * FROM " . $nom_table;
//echo "query_Recordset10 : ".$query_Recordset10;
$Recordset10 = mysql_query($query_Recordset10, $fmt) or die(mysql_error());
$row_Recordset10 = mysql_fetch_assoc($Recordset10);
$Nbr_Enrg = mysql_num_rows($Recordset10);

?>

<head>

<link rel="icon" type="image/png" href="filmotech_img/favicon.png">  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><?php echo($titre_fenetre); ?></title>
<link href="filmotech_css.css" rel="stylesheet" type="text/css" />
<script type="text/JavaScript">
<!--
function MM_callJS(jsStr) { //v2.0
  return eval(jsStr)
}
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->
</script>
</head>


<body>
<div id="page2">
<div id="top" onclick="MM_goToURL('parent','index.php');return document.MM_returnValue"></div>
<div id="wrapper2">
<div id="main_affiche">


<?php

    echo '<table><tr>';
    $reponse = mysql_query("SELECT ID, TitreVF FROM films ORDER BY TitreVF ASC LIMIT " .$limite.','.$ImageParPage);
    $i=1;
    while ($donnees = mysql_fetch_array($reponse) )
        {
		
        $filename = sprintf('Affiches/Filmotech_%05d.jpg' , $donnees['ID'] ) ;
        ?>
        <td>
        <a href="filmotech_detail.php?id=<? echo $_GET['ID']; ?><? echo $donnees['ID'];?>">
        <img width="128" title="<? echo $donnees['TitreVF'];?>" alt="<? echo $donnees['TitreVF'];?>"          
        src="<?php echo $filename; ?>" />
        </a>
		</td>
        <?php
        if ($i%9==0 AND $i!=0) {echo "</tr><tr>"; } /* si nombre de films multiple de 9, on commence une nouvelle ligne */
        $i++;
        }
?></tr></table><?



//récupération de $limite

    if(isset($_GET['limite'])) 

        $limite=$_GET['limite'];
    else   $limite=0;


function verifLimite($limite,$Nbr_Enrg,$ImageParPage) {

    // je verifie si limite est un nombre.

    if(is_numeric($limite)) {

        
// si $limite est entre 0 et $Nbr_Enrg, $limite est ok

        // sinon $limite n'est pas valide.

        if(($limite >=0) && ($limite <= $Nbr_Enrg) && (($limite%$ImageParPage)==0)) {

            // j'assigne 1 à $valide si $limite est entre 0 et $max

            $valide = 1;

        }    

        else {

            // sinon j'assigne 0 à $valide

            $valide = 0;

        }

    }

    else {

            // si $limite n'est pas numérique j'assigne 0 à $valide

            $valide = 0;

    }

// je renvois $valide

return $valide;

}




<?php
function displayNextPreviousButtons($limite,$Nbr_Enrg,$ImageParPage,$page) {
$limiteSuivante = $limite + $ImageParPage;
$limitePrecedente = $limite - $ImageParPage;
echo  '<table><tr>'."\n";
// affichage bouton suivant préccédent
if($limitesuivante < $Nbr_Enrg) {
    echo '<form action="'.$page.'" method="post">';
    echo '<input type="submit" value="Suivant">';
    echo '<input type="hidden" value="'.$limitesuivante.'" name="limite">';
    echo '</form>';                
}
if($limite != 0) {
    echo '<form action="'.$page.'" method="post">';
    echo '<input type="submit" value="Précédent">';
    echo '<input type="hidden" value="'.$limiteprecedente.'" name="limite">';
    echo '</form>';
}


function affichePages($ImageParPage,$page,$Nbr_Enrg) {
$limiteSuivante = $limite + $ImageParPage;
$limitePrecedente = $limite - $ImageParPage;
        $nbpages=ceil($Nbr_Enrg/$ImageParPage);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo '<table border = "0" ><tr>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<td ><a href = "'.$page.'?limite='.$limite.'">'.$numeroPages.'</a></td>'."\n";
        $limite = $limite + $ImageParPage;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            echo '<br>'."\n";
            }
        }
        echo '</tr></table>'."\n";
}

//=========================================    

// si le nombre d'enregistrement à afficher 

// est plus grand que $ImageParPage 

//=========================================

if($Nbr_Enrg > $ImageParPage) {

    // affichage des liens vers les pages

    affichePages($ImageParPage,$page,$Nbr_Enrg);

    // affichage des boutons

    displayNextPreviousButtons($limite,$Nbr_Enrg,$ImageParPage,$page);

}

?>


 
</div> <!-- End #sidebar -->
</div> <!-- End #wrapper -->

<div id="footer">
<center>
<a title="Retour au début" href="http://mes-films-dvd.olympe.in/"><img src="filmotech_img/retour_affiche.png" alt="Fiche"></a>
</center>


<p>&nbsp;&nbsp;
<?php if ($pied_dateMAJ) echo( 'Derniere mise a jour : ' . $dateMAJ . " | " ); ?>
<?php if ($infos) echo( $infos_libelle . " | " ); ?>
<?php if ($auteur) echo( '<a title="Pour envoyer un mail à Michel Tombal" href="mailto:' . $auteur_mail . '">' . $auteur_nom . "</a> | "); ?>
Realise par : &nbsp; <font color ="#FFFF33">Michel Tombal</font></p>

</body>
</div> <!-- End #footer -->
</div> <!-- End #page -->
</html>
<?php mysql_free_result($Recordset10);?>
merci :)