Bonsoir,

J'ai ces deux pages qui me permettent de filtrer ma table à l'aide d'un menu déroulant et m'affiche un tableau.

Le filtrage fonctionne parfaitement bien mais lorsque je clique par exemple sur la page 2 ou 3 (de ma pagination), mon tableau s'efface et m'affiche :

"Undefined index: cat in C:\wamp\www\test\recherche_public.php on line 21"

Je comprends que j'ai un problème avec ma variable $vcat qui est normalement alimenté par mon select nommé cat mais j'ai beau cherché la coquille, je ne trouve pas.... Si quelqu'un avait une idée.

Merci par avance.

Fichier : recherche

<form method="GET" enctype="multipart/form-data" action="recherche_public.php">
<select name="cat">
<option>
<option value="1">1
<option value="2">2
</select>
<?php


//$vcat=$_GET['cat'];

?>
<input type="submit" name="envoyer">

</form>

<?php

if(!empty($_GET)) {
$vcat=$_GET['cat'];
}
else
{
$vcat=0;
}

//=========================================
// includes du fichier fonctions
//=========================================




require 'fonction_public.php';




//=========================================
// information pour la connection à le DB
//=========================================



//=========================================
// initialisation des variables
//=========================================
// on va afficher 5 résultats par page.
$nombre = 4;
// 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
//=========================================
include("connexion.php");
//=========================================
// requête SQL qui compte le nombre total
// d'enregistrements dans la table.
//=========================================



$select = 'SELECT count(idannonce) FROM tannonce';
$result = mysql_query($select);
$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
tannonce where categorie='$vcat' ORDER BY titre ASC limit ".$limite.",".$nombre;
$result = mysql_query($select);

//=========================================
// si on a récupéré un resultat on l'affiche.
//=========================================


// début du tableau

if($total) {
echo '<table class="tabcentre" align="center"'."\n";
// première ligne on affiche les titres de colonnes
echo '<tr>';
echo '<td align="center" bgcolor="#D6E1FA"><b>Nom</b></td>';
echo '<td align="center" bgcolor="#D6E1FA"><b>Catégorie</b></td>';
echo '<td align="center" bgcolor="#D6E1FA"><b>Contenu</b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes
while($row = mysql_fetch_array($result)) {

echo '<tr>';
echo '<td class="vert" bgcolor="#e1ebf4">'.$row['titre'].'</td>';
echo '<td class="vert" bgcolor="#e1ebf4">'.$row['categorie'].'</td>';
echo '<td class="vert" bgcolor="#e1ebf4">'.$row['contenu'].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
}
else echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result);
echo '</form>';
//=========================================
// si le nombre d'enregistrement à afficher
// est plus grand que $nombre
//=========================================
if($total > $nombre) {
// affichage des liens vers les pages
affichePages($nombre,$page,$total);

}

?>

<?php
// Fonction qui vérifie la validité de $limite
//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;
}


// Fonction qui affiche les liens vers les pages
function affichePages($nb,$page,$total)
{
$nbpages=ceil($total/$nb);
$numeroPages = 1;
$compteurPages = 1;
$limite = 0;

echo '<table align="center" 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";
}

?>