problème affichage page par page

Mammouth du PHP | 686 Messages

23 févr. 2009, 15:48

As tu modifié les deux limit ?

Mammouth du PHP | 620 Messages

23 févr. 2009, 19:46

dsl je m'étais abscenté.

oui j'ai bien modifié les limit mais j'ai tjs le meme probleme en passant sur la page 2.
par contre au niveau de l'adresse j'ai bien /galerie-evasion2.php?type=Pavés?page=1 qui s'affiche.
le probleme viendrait-il de là ?

voilà mon code tel qu'il est apres les modifs.
<?PHP
include("../admin/connexion-sql.php");


$nombre = mysql_query("SELECT count(id) FROM galerie");
$donnees = mysql_fetch_array($nombre);
$nbr = $donnees[0];
echo  'Info: <span class="Style4">'.$donnees['0'].'</span> références enregistrées dans la galerie <br/> ';



// Mise  en place du systeme Page par Page
	$page = isset($_GET['page']) ? $_GET['page'] : '';  

// Prepare le requete MySql 
$type = $_GET['type']; 
$requete = "SELECT * from galerie WHERE type='$type'"; 
 
	$ret = mysql_query($requete); 
// Variable nombre d'enreg par page     
    $limit=9;     
    if($debut==""){$debut=0;}     
    $debut=$page*$limit;     
// Compte le nombre de champ     
    $nb_total=mysql_num_rows($ret);     
// Requete     
    $fin = $debut+$limit; 
    $limite=mysql_query("$requete limit $debut,$fin");     

    //Affichage le contenu de la table    
//avec une limite &agrave; 12     
$limit_str = "LIMIT $debut , $fin"; 

$req = mysql_query("SELECT * FROM galerie ORDER BY id DESC $limit_str"); 


while($data = mysql_fetch_array($req)) 
	{ 
	?>
	<?PHP
	$nb = 3;  // Nombre d'affichages souhait&eacute;s sur une ligne

	$sql = "SELECT DISTINCT type FROM galerie"; // requ&ecirc;te SQL 
	$reqtype = mysql_query($sql) or die('<u>Probleme SQL</u> : '.$sql.'<br>'.mysql_error());  // envoie de la requ&ecirc;te
		while($restype = mysql_fetch_array($reqtype)) 
			{
			echo "<a href=\"galerie-evasion2.php?type=".$restype['type']."\">"; 
            echo "Type ".$restype['type'];  
            echo "</a>";
			}

		$type = $_GET['type']; 
			
		$sql = "SELECT * FROM galerie WHERE type='$type' ORDER BY type $limit_str"; // requ&ecirc;te SQL 
		
		$req = mysql_query($sql) or die('<u>Probleme SQL</u> : '.$sql.'<br>'.mysql_error());  // envoie de la requ&ecirc;te
		 
		// affichage des résultats avec $nb résultats par ligne
		echo'<table>';
		$i = 1;

		while($resultat = mysql_fetch_array($req)) 
			{
			if($i == 1) { echo'<tr>'; }
		
       // Suite du traitement
		echo'
			<td align="center">
			<div class="galerie"> 
			<div class="ref">'.$resultat['type'].' </div><div class="type">Réf : ', $resultat['ref'] ,'</div>
			<a href="../images/galerie/', $resultat['photoref'] ,'" target="_blank">
			<img src="mini-galerie.php?f=' , $resultat['photoref'] , '" alt="'.$resultat['type'].' réf ', $resultat['ref'] ,'" width="170" height="115"/>
			</a>
			
			<a href="../images/galerie/', $resultat['photoex'] ,'" target="_blank">
			<img src="../images/exemple.png" alt="Voir l\'exemple pour le référence ', $resultat['ref'] ,'" width="68" height="32""/>
			<img src="mini-galerie.php?f=' , $resultat['photoex'] , '" alt="', $resultat['alt'] ,'" width="48" height="32""/>
			</a>
			</div><div class="clear"></div></div>
			</td>';

			$i++;
			if($i > $nb) { echo'</tr>'; $i = 1; }
			}
	echo'</table>';

?>
		<?PHP
        } 
        ?>
        
        
		<?PHP  
		if ($nb_total>$limit) {
        echo "<div class='page'>Page </div>"; }
        // Affiche le page par page avec ses liens   
        if ($page>0) {
		    
        $precedent=$page-1;   
        echo "<div class='page'><a href=\"$PHP_SELF?type=".$type."?page=$precedent\">PRECEDENT</a></div>";   
        }   
          
        $i=0;   
        $j=1;   
          
        if($nb_total>$limit) {   
        while($i<($nb_total/$limit)) {   
        if($i!=$page){echo "<div class='page'><a href=\"$PHP_SELF?type=".$type."?page=$i\"> $j</a></div>";}   
        else { echo "<div class='page'><b>$j</b></div>";}   
        $i++;$j++;   
        }   
        }   
          
        if($debut+$limit<$nb_total) {   
        $suivant=$page+1;   
        echo "<div class='page'><a href=\"$PHP_SELF?type=".$type."?page=$suivant\">SUIVANT</a></div>";   
        }   
        ?> 

Mammouth du PHP | 686 Messages

23 févr. 2009, 20:28

et si tu mets à la place de
// Mise  en place du systeme Page par Page 
    $page = isset($_GET['page']) ? $_GET['page'] : '';
juste
$page = $_GET['page'];
------

edit :
Je pense que ya ca aussi qui bloque, c'est verifié si ta page est pas definie mais apres ca ne marche pas car $debut n'est definit qu'après ta condition
// Variable nombre d'enreg par page      
    $limit=9;      
    if($debut==""){$debut=0;}      
    $debut=$page*$limit;
// Variable nombre d'enreg par page      
    $limit=9; 
    if(isset($page))
{$debut=$page*$limit;
}
else {     
    $debut=0;
}      

Mammouth du PHP | 620 Messages

23 févr. 2009, 20:58

pas de changement tjs le meme problème.

oui possible que se soit ça. le page par page fonctionne normalement quand il n'y a pas de tri par type avec affichage des lien.

mais comment adapté un page par page qui irrait avec le code.

Mammouth du PHP | 686 Messages

23 févr. 2009, 21:08

Normalement si dans chaque requete on lui dit de faire le tri ca devrai le faire car il selectionnera uniquement celle qui corresponde à ce type, je fais tout le temps ca et ca fonctionne, il doit y avoir qq chose qui ne va pas au niveau de limit ou quelque chose comme ca.
Et si directement dans mySQL tu tapes une requete du genre

Code : Tout sélectionner

SELECT * FROM galerie WHERE type='Pavés' ORDER BY id DESC LIMIT 9, 18";
---
<?PHP 
include("../admin/connexion-sql.php"); 


$nombre = mysql_query("SELECT count(id) FROM galerie"); 
$donnees = mysql_fetch_array($nombre); 
$nbr = $donnees[0]; 
echo  'Info: <span class="Style4">'.$donnees['0'].'</span> références enregistrées dans la galerie <br/> '; 



// Mise  en place du systeme Page par Page 
    $page = $_GET['page';   

// Prepare le requete MySql  
$type = $_GET['type'];  
$requete = "SELECT * from galerie WHERE type='$type'";  
  
    $ret = mysql_query($requete);  
// Variable nombre d'enreg par page      
    $limit=9;  
    if(isset($page)) 
{$debut=$page*$limit; 
} 
else {      
    $debut=0; 
} 
// Compte le nombre de champ      
    $nb_total=mysql_num_rows($ret);      
// Requete       
    $limite=mysql_query("$requete limit $debut,$fin");      

    //Affichage le contenu de la table     
//avec une limite &agrave; 12      
$limit_str = "LIMIT $debut , $limit";  

$req = mysql_query("SELECT * FROM galerie ORDER BY id DESC $limit_str");  


while($data = mysql_fetch_array($req))  
    {  
    ?> 
    <?PHP 
    $nb = 3;  // Nombre d'affichages souhait&eacute;s sur une ligne 

    $sql = "SELECT DISTINCT type FROM galerie"; // requ&ecirc;te SQL  
    $reqtype = mysql_query($sql) or die('<u>Probleme SQL</u> : '.$sql.'<br>'.mysql_error());  // envoie de la requ&ecirc;te 
        while($restype = mysql_fetch_array($reqtype))  
            { 
            echo "<a href=\"galerie-evasion2.php?type=".$restype['type']."\">";  
            echo "Type ".$restype['type'];   
            echo "</a>"; 
            } 

        $type = $_GET['type'];  
             
        $sql = "SELECT * FROM galerie WHERE type='$type' ORDER BY type $limit_str"; // requ&ecirc;te SQL  
         
        $req = mysql_query($sql) or die('<u>Probleme SQL</u> : '.$sql.'<br>'.mysql_error());  // envoie de la requ&ecirc;te 
          
        // affichage des résultats avec $nb résultats par ligne 
        echo'<table>'; 
        $i = 1; 

        while($resultat = mysql_fetch_array($req))  
            { 
            if($i == 1) { echo'<tr>'; } 
         
       // Suite du traitement 
        echo' 
            <td align="center"> 
            <div class="galerie">  
            <div class="ref">'.$resultat['type'].' </div><div class="type">Réf : ', $resultat['ref'] ,'</div> 
            <a href="../images/galerie/', $resultat['photoref'] ,'" target="_blank"> 
            <img src="mini-galerie.php?f=' , $resultat['photoref'] , '" alt="'.$resultat['type'].' réf ', $resultat['ref'] ,'" width="170" height="115"/> 
            </a> 
             
            <a href="../images/galerie/', $resultat['photoex'] ,'" target="_blank"> 
            <img src="../images/exemple.png" alt="Voir l\'exemple pour le référence ', $resultat['ref'] ,'" width="68" height="32""/> 
            <img src="mini-galerie.php?f=' , $resultat['photoex'] , '" alt="', $resultat['alt'] ,'" width="48" height="32""/> 
            </a> 
            </div><div class="clear"></div></div> 
            </td>'; 

            $i++; 
            if($i > $nb) { echo'</tr>'; $i = 1; } 
            } 
    echo'</table>'; 

?> 
        <?PHP 
        }  
        ?> 
         
         
        <?PHP   
        if ($nb_total>$limit) { 
        echo "<div class='page'>Page </div>"; } 
        // Affiche le page par page avec ses liens    
        if ($page>0) { 
             
        $precedent=$page-1;    
        echo "<div class='page'><a href=\"$PHP_SELF?type=".$type."?page=$precedent\">PRECEDENT</a></div>";    
        }    
           
        $i=0;    
        $j=1;    
           
        if($nb_total>$limit) {    
        while($i<($nb_total/$limit)) {    
        if($i!=$page){echo "<div class='page'><a href=\"$PHP_SELF?type=".$type."?page=$i\"> $j</a></div>";}    
        else { echo "<div class='page'><b>$j</b></div>";}    
        $i++;$j++;    
        }    
        }    
           
        if($debut+$limit<$nb_total) {    
        $suivant=$page+1;    
        echo "<div class='page'><a href=\"$PHP_SELF?type=".$type."?page=$suivant\">SUIVANT</a></div>";    
        }    
        ?>

Mammouth du PHP | 620 Messages

23 févr. 2009, 21:30

en fesant la requet dans PHPmyadmin j'ai bien tout mes type de pavés qui s'affichent de 9 à 18.

au niveau du code php j'ai toujours le pb entre les pages.

ma table sql est la suivante :

Code : Tout sélectionner

CREATE TABLE IF NOT EXISTS `galerie` ( `id` bigint(20) unsigned NOT NULL auto_increment, `type` varchar(20) character set latin1 collate latin1_german2_ci default NULL, `ref` varchar(20) character set latin1 collate latin1_german2_ci default NULL, `exemple` varchar(20) character set latin1 collate latin1_german2_ci default NULL, `alt` text character set latin1 collate latin1_german2_ci, `photoref` varchar(255) character set latin1 collate latin1_german2_ci default NULL, `photoex` varchar(255) character set latin1 collate latin1_german2_ci default NULL, PRIMARY KEY (`id`) );

Mammouth du PHP | 686 Messages

23 févr. 2009, 21:34

//Affichage le contenu de la table      
//avec une limite &agrave; 12       
$limit_str = "LIMIT $debut , $limit";   

$req = mysql_query("SELECT * FROM galerie ORDER BY id DESC $limit_str");   
Modifie par
//Affichage le contenu de la table      
//avec une limite &agrave; 12       
$limit_str = "LIMIT $debut , $limit";   

$req = mysql_query("SELECT * FROM galerie WHERE type='$type' ORDER BY id DESC $limit_str");   
et rajoute apres
echo "SELECT * FROM galerie WHERE type='$type' ORDER BY id DESC $limit_str";
ce qu'il t'aura ecrit avec le echo recopie le dans PHPmyAdmin pour voir si c'est là ou ca bug

Mammouth du PHP | 620 Messages

23 févr. 2009, 21:39

y'a un hic. en ayant remplacé leslignes de code je n'ai plus mes stype avec leur lien pour afficher les photos.

en resultat de l'echo j'ai :

Code : Tout sélectionner

SELECT * FROM galerie WHERE type='' ORDER BY id DESC LIMIT 0 , 9

Mammouth du PHP | 686 Messages

23 févr. 2009, 21:41

Oups ba remet comme c'été alors :wink:
Pour le echo c'est dans la page 2 que ca t'ecrit ca ?

Mammouth du PHP | 620 Messages

23 févr. 2009, 21:42

non non je peu plus allé dans la page 2 car je ne peu plus allé sur mes photos du fait que je n'ai plus mes types qui s'affichent avec les liens.

en ayant remis puis ajouté l'echo j'ai ce resultat en allant sur la page 2.

Code : Tout sélectionner

SELECT * FROM galerie WHERE type='Pavés?page=1' ORDER BY id DESC LIMIT 0 , 9
--> du coup dans phpmyadmin :
MySQL n'a retourné aucun enregistrement. (Traitement en 0.0015 sec.)
Modifié en dernier par fabrice88250 le 23 févr. 2009, 21:48, modifié 1 fois.

Mammouth du PHP | 686 Messages

23 févr. 2009, 21:46

Remet tout ton code comme lorsque tout fonctionnait en page 1, et rajoute le echo puis va en page 2 pour voir ce qu'il t'ecrit

Mammouth du PHP | 620 Messages

23 févr. 2009, 21:48

arf j'avai édité le message. suis pas assez rapide. :)

en ayant remis puis ajouté l'echo j'ai ce resultat en allant sur la page 2.

Code : Tout sélectionner

SELECT * FROM galerie WHERE type='Pavés?page=1' ORDER BY id DESC LIMIT 0 , 9
--> du coup dans phpmyadmin :
MySQL n'a retourné aucun enregistrement. (Traitement en 0.0015 sec.)

Mammouth du PHP | 686 Messages

23 févr. 2009, 21:51

d'accord don voila le problème
maintenant garde le echo mais juste avant ta requete sql ecrit $type = $_GET['type'] et reessaye

Mammouth du PHP | 620 Messages

23 févr. 2009, 21:54

j'ai toujours :

Code : Tout sélectionner

SELECT * FROM galerie WHERE type='Pavés?page=1' ORDER BY id DESC LIMIT 0 , 9

Mammouth du PHP | 686 Messages

23 févr. 2009, 21:56

J'ai trouvé l'erreur
mauvaise synthaxe pour les liens de page à partir de la page 1
jai oublié le & entre les varible de lien
ca devrai mieux marcher comme ca
<?PHP    
        if ($nb_total>$limit) {  
        echo "<div class='page'>Page </div>"; }  
        // Affiche le page par page avec ses liens     
        if ($page>0) {  
              
        $precedent=$page-1;     
        echo "<div class='page'><a href=\"$PHP_SELF?type=".$type."?&page=$precedent\">PRECEDENT</a></div>";     
        }     
            
        $i=0;     
        $j=1;     
            
        if($nb_total>$limit) {     
        while($i<($nb_total/$limit)) {     
        if($i!=$page){echo "<div class='page'><a href=\"$PHP_SELF?type=".$type."?&page=$i\"> $j</a></div>";}     
        else { echo "<div class='page'><b>$j</b></div>";}     
        $i++;$j++;     
        }     
        }     
            
        if($debut+$limit<$nb_total) {     
        $suivant=$page+1;     
        echo "<div class='page'><a href=\"$PHP_SELF?type=".$type."?&page=$suivant\">SUIVANT</a></div>";     
        }     
        ?>