[RESOLU] probleme variable "page" et include

Eléphant du PHP | 299 Messages

27 avr. 2014, 00:08

Salut à tous!

Je vais essayer de vous expliquer au plus simple, un petit soucis qui fait office de barriere, je suis bloqué.

Comme il s'agit d' un site bénévole, je me fiche un peu de le cacher ou pas, et vous donne donc le lien qui pose soucis:
www POINT bernay POINT info/index.php?u=actualite

Le probleme est qu' il ne passe pas la page quand on veut passer de la page 1 à 2 (voir bas de la page) pour afficher les liens suivants.

Voici ce que j' ai fait pour l' include:
elseif(isset($_GET['u'])&&$_GET['u'] == 'actualite')
{
include('includes/actualite.php');
}
Rien d'anormal, mais on ne peut pas passer une variable directement dans l' include.

Voici ma page "liens":
<?php
			$messagesParPage=5;

			$retour_total=mysql_query('SELECT COUNT(*) AS id FROM actu');
			$donnees_total=mysql_fetch_assoc($retour_total);
			$total=$donnees_total['id'];

			$nombreDePages=ceil($total/$messagesParPage);

			if(isset($_GET['page']))
			{
    	    $pageActuelle=intval($_GET['page']);
     
    	    if($pageActuelle>$nombreDePages)
    	    {
            $pageActuelle=$nombreDePages;
  		    }
			}
			else // Sinon
			{
  		    $pageActuelle=1; // La page actuelle est la n&deg;1    
			}

			$premiereEntree=($pageActuelle-1)*$messagesParPage;
			?>
			
			
		

			<?php
            $actu2 = mysql_query('SELECT * FROM actu ORDER BY id DESC');
			while ($actu = mysql_fetch_array($actu2))
		    {
			?> 
            <table width="780" border="0" align="center" cellpadding="0" cellspacing="0">
  			<tr>
   			 <td width="100" height="50">
             <?php
             if($actu['source'] == 'Paris Normandie')
			 {
			 echo '<img src="images/paris.png" alt="" />';
			 }
			 elseif($actu['source'] == 'L\'Eveil Normand')
			 {
			 echo '<img src="images/eveil.png" alt="" />';
			 }
			 ?>
			  </td>
    		 <td width="24">&nbsp;</td>
    		 <td width="682"><a href="<?php echo $actu['lien']; ?>" target="blank"><?php echo $actu['titre']; ?></a></td>
  			</tr>
  			<tr>
  			  <td height="20" colspan="3"><table width="780" border="0" cellspacing="0" cellpadding="0">
  			    <tr>
  			      <td width="390" align="left" valign="top" style="font-size:12px;">Rubrique : <?php echo $actu['cat']; ?></td>
  			      <td width="390" align="right" valign="top" style="font-size:12px;">Source : <?php echo $actu['source']; ?></td>
		        </tr>
		      </table></td>
  			  </tr>
			</table>
            <table width="780" border="0" align="center" cellpadding="0" cellspacing="0">
              <tr>
                <td height="20" style=" background:url(../images/bh.png); background-repeat:repeat-x;">&nbsp;</td>
              </tr>
            </table>
            <?php
			}
			?>
			
			
			
			
<?php
 			
			
			echo '<table width="100% border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="19" align="center" valign="top">Page : '; //Pour l'affichage, on centre la liste des pages
	
	
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pageActuelle) //Si il s'agit de la page actuelle...
     {
         echo ' [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo ' <a href="index.php?u=actualite&page='.$i.'">'.$i.'</a>';
     }
}

echo '</td>
  </tr>
</table><br /><br />';
?>
Bien sur avec des url classique, par exemple "lien.php?page)=2", ca marche.

Qui pourrait me dire comment passer le probleme svp?

Mille mercis a celui qui me mettra sur la bonne piste!

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

27 avr. 2014, 10:24

Salut,

Le problème vient du fait que ta requête sql est toujours la même.
Il te faut limiter le nombre d'enregistrement qu'elle te retourne (sinon cela ne sert a rien ;) ).

Avec mysql tu utilise pour cela la clause limit début , nombre

Par exemple pour la première page : SELECT * FROM actu ORDER BY id DESC limit 0,10 (en considérant 10 lignes par page)

Pour la seconde page SELECT * FROM actu ORDER BY id DESC limit 10,10 (oui parce que le nombre d'élément commence a zéro donc la première page affiche les éléments de zéro à neuf etc).

Ceci est a inclure dans ta requête sql sinon effectivement pas de pagination au niveau données ;)

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

Eléphant du PHP | 299 Messages

27 avr. 2014, 11:56

Salut a toi et merci de te pencher sur mon cas.

J'ai bien compris ce que tu me dis, mais c'est impossible à faire, ou alors ca va être loud de faire une requete a chaque fois.

En fait si tu regardes bien dans le code que je t'ai donné, au dessus de la requete et en bas de la page, du code qui fait deja cela.

Le code marche trés bien jusqu'ici, sur tous mes sites d'ailleurs, mais a partir du moment ou l'url sera du genre index.php?page=1


Or la, mon adresse est simplifiée pour un meilleur référencement et je me retrouve avec une double variable dans l'url => index.php?u=actualite&page=1

Et c'est ca qu'il aime pas, c'est tres bizarre :(

Eléphant du PHP | 299 Messages

27 avr. 2014, 12:09

Bon et bien j'ai eu un coup de chance, effectivement l'erreur est dans la requete.

La solution?
$actu2 = mysql_query('SELECT * actu ORDER BY id DESC limit '.$premiereEntree.', '.$messagesParPage.'');

les deux dernieres variables etaient manquantes :)


Merci mon ami de ton soutien ^^

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

27 avr. 2014, 13:21

Ben c'est bien je t'ai dit indiqué comme requête ^^

De rien

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