Problème de variable et affichage page à page
Posté : 27 nov. 2006, 19:42
Bonjour,
Le code ci-dessous qui me permet d'afficher des images d'une base de données sur n colonnes avec nb d'enregistrements déterminés par page fonctionnent très bien sauf lorsque cet affichage dépend d'une variable passée par URL. Dans ce cas j'ai une première page ok et quand je clique sur page 2, par exemple, j'obtiens le message d'erreur suivant :
Notice: Undefined index: nom_rubrique_galerie in /Applications/MAMP/htdocs/affichage.php on line 2
Notice: Undefined variable: tablo in /Applications/MAMP/htdocs/affichage.php on line 22
J'y suis depuis des semaines et je ne trouve aucune solution.
Merci d'avance si quelqu'un a une lumière.
Le code ci-dessous qui me permet d'afficher des images d'une base de données sur n colonnes avec nb d'enregistrements déterminés par page fonctionnent très bien sauf lorsque cet affichage dépend d'une variable passée par URL. Dans ce cas j'ai une première page ok et quand je clique sur page 2, par exemple, j'obtiens le message d'erreur suivant :
Notice: Undefined index: nom_rubrique_galerie in /Applications/MAMP/htdocs/affichage.php on line 2
Notice: Undefined variable: tablo in /Applications/MAMP/htdocs/affichage.php on line 22
J'y suis depuis des semaines et je ne trouve aucune solution.
Merci d'avance si quelqu'un a une lumière.
Code : Tout sélectionner
<?php
//=========================================
// includes du fichier fonctions
//=========================================
require 'fonctions.php';
//=========================================
//On récupère la variable
//=========================================
if( isset( $_GET['nom_rubrique_galerie'] ) ) echo $_GET['nom_rubrique_galerie'];
$rubrique = $_GET['nom_rubrique_galerie'];
//=========================================
// initialisation des variables
//=========================================
// on va afficher 5 résultats par page.
$nombre = 9;
// si limite n'existe pas on l'initialise à zéro
if (!$limite) $limite = 0;
// on cherche le nom de la page.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts["basename"];
//=========================================
// connection à la DB
//=========================================
$db = "book";
$link = mysql_connect ('localhost:8889', 'root', 'root') or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//=========================================
// requête SQL qui compte le nombre total
// d'enregistrements dans la table.
//=========================================
$select = "SELECT count(id_galerie) FROM galerie WHERE nom_rubrique_galerie='$rubrique'";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];
//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=========================================
// requête SQL qui ne prend que le nombre
// d'enregistrement necessaire à l'affichage.
//=========================================
$select = "SELECT * FROM galerie WHERE nom_rubrique_galerie='$rubrique' limit ".$limite.','.$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$data = mysql_fetch_array($result);
?>
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
// si on a récupéré un resultat on l'affiche.
//=========================================
//--- Résultat
$result = mysql_query($select);
while($data = mysql_fetch_array($result)) {
// on stocke nos données
$tablo[]=$data;
}
$nbcol=3; //--- détermine le nombre de colonnes de l'affichage
echo '<table width="400" height="400">';
for($i=0;$i<count($tablo);$i++){
//--- les valeurs que l'on souhaite afficher
$valeur1=$tablo[$i]['vignette_galerie'];
if($i%$nbcol==0)
echo '<tr height="120">';
echo '<td align="center" width="128"><img
src="photos/galerie/'.$valeur1.'" border="0" ><br></td>';
if($i%$nbcol==($nbcol-1))
echo '</tr>';
}
echo '</table>';
// on libère le résultat
mysql_free_result($result);
//======================================
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;
if($limite != 0) {
echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page
précédente</a>';
}
if($limitesuivante < $total) {
echo '<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a>';
}
//=========================================
// vérifier la validité de notre variable
// $limite;
//=========================================
$verifLimite= verifLimite($limite,$total,$nombre);
// si la limite passée n'est pas valide on la remet à zéro
if(!$verifLimite) {
$limite = 0;
}
//=========================================
// si le nombre d'enregistrement à afficher
// est plus grand que $nombre
//=========================================
if($total > $nombre) {
// affichage des liens vers les pages
affichePages($nombre,$page,$total);
}
?>
</body>
</html>
Fin du fichier affichage.php
------------------------------------------------------------------------------------------
Et code du fichier fonctions.php :
<?php
//récupération de $limite
if(isset($_GET['limite']))
$limite=$_GET['limite']; else $limite=0;
function verifLimite($limite,$total,$nombre) {
// je verifie si limite est un nombre.
if(is_numeric($limite)) {
// si $limite est entre 0 et $total, $limite est ok
// sinon $limite n'est pas valide.
if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==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;
}
function affichePages($nb,$page,$total) {
$nbpages=ceil($total/$nb);
$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 + $nb;
$numeroPages = $numeroPages + 1;
$compteurPages = $compteurPages + 1;
if($compteurPages == 10) {
$compteurPages = 1;
echo '<br>'."\n";
}
}
echo '</tr></table>'."\n";
}
?>