PHP-MySQL: Pb Incrémentation Affichage Pg/Pg

jakkihm Messages postés 141 Statut Membre -  
jakkihm Messages postés 141 Statut Membre -
Bonjour,

Ce script qui m'a été fourni pour un affichage page par page des informations issues
d'une bdd ne fonctionne pas sur un point :
la variable "$limit" qui est censée s'incrémenter s'il y a plusieurs pages à afficher
demeure figée à "0". Ainsi, ma 1ère page s'affiche avec le lien "Page suivante", mais
lorsque je clique dessus rien ne se passe.

Voici mon code:
// connecting to database
//=======================
$server = "localhost";
$user = "root";
$pwd = "";
$connect = mysql_connect($server, $user, $pwd) or die ("Erreur : ".mysql_error());
$db = "gallery";
$table = "objects";
$select_db = mysql_select_db($db, $connect) or die ("Erreur : ".mysql_error());

// initializing variables
//=======================
$msg = "";
$results_pg = 4;
if(!isset($limit)) $limit=0; // $limit = start point

// getting page's name
//====================
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$pgName = $path_parts['basename'];

// counting total records in table
//================================
$count = "SELECT COUNT(id) FROM objects"; 
$result = mysql_query($count, $connect);
$row = mysql_fetch_row($result);
$totalRows = $row[0];

// running 'Tables' query 
//=======================
$select = 'SELECT * FROM objects ORDER BY name ASC LIMIT '.$limit.','.$results_pg;
$result = mysql_query($select, $connect) or die ("Erreur : ".mysql_error());

// recalculating $limit to know if other results to display
//=========================================================
$nextLimit = $limit + $results_pg;
$prevLimit = $limit - $results_pg;

// display link to previous page if necessary
//===========================================
if($limit != 0) {
	echo '<a href="'.$pgName.'?limit='.$prevLimit.'">Page précédente</a>';	
}

// display link to next page if necessary
//=======================================
if($nextLimit < $totalRows) {
	echo '<a href="'.$pgName.'?limit='.$nextLimit.'">Page suivante</a>';
}
echo '<br>'.$limit.'<br>'.$nextLimit;	
?>


Merci de votre aide !
Configuration: Windows XP
Firefox 2.0.0.1

6 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Ce script a manifestement été créé pour une vieille version de Php.

    Il faudrait remplacer
    if(!isset($limit)) $limit=0; // $limit = start point
    par
    if(isset($_GET["limit"]))
        $limit=$_GET["limit"]; // $limit = start point
    else
        $limit=0;

    L'explication : dans les anciennes versions de Php, on accédait aux variables fournies dans l'URL directement, mais pour des raisons de sécuité, ce n'est plus possible : il faut maintenant passer par le tableau $_GET[].

    Xavier
    0
  2. jakkihm Messages postés 141 Statut Membre 6
     
    Merci Reivax962,

    J'ai effectué les modifications, mais à présent je reçois le message suivant :
    Notice: Undefined variable: limit ...

    N'est-ce pas étrange puisque la variable $limit est bien initiée à 0 ?

    Merci.
    0
  3. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Mmmh, désolé, je ne suis pas encore très habité à php 5 :)
    Essaie ceci, alors :
    $limit = 0;
    if(isset($_GET["limit"]))
        $limit=$_GET["limit"]; // $limit = start point
    0
  4. jakkihm Messages postés 141 Statut Membre 6
     
    Reivax962,
    Je viens tout juste d'obtenir une réponse qui fonctionne.
    Il m'a été indiqué de coder ainsi:

    if(!isset($_GET['limit'])) {
         $limit=0;
    }else{
         $limit=$_GET['limit'];
    }
    


    Merci pour ton aide.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Euh, c'est une blague ?
    Tu veux me dire qu'en inversant la clause du if et le else, tu as quelque chose qui fonctionne différemment ? T'es sûr que tu n'avais pas fait une erreur en recopiant "ma" solution ? Parce que c'est super louche, là, quand même !
    0
  7. jakkihm Messages postés 141 Statut Membre 6
     
    Je suis absolument certain de n'avoir fait aucune erreur en recopiant ta solution. Je m'y suis même repris à quelques reprises.

    Toutefois, je suis aussi étonné que toi que ce code ait produit un résultat.
    J'avais essayé plusieurs choses pour faire fonctionner le script, mais je n'aurais jamais pensé à cela.
    0