IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Probleme variable checkbox et page par page


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Probleme variable checkbox et page par page
    Bonjour,

    je rencontre un problème actuellement que je n'arrive pas à résoudre :

    j'ai une page lsnews.php qui affiche la liste des news, sur cette page dans un formulaire l'on peut cocher différentes chexkbox (préalablement selectionner dans un table "cat") pour choisir les catégories des news que l'on affichera en cliquant sur un bouton ok

    mais voila, la page lsnews affiche 10 résultats par page. Donc dès que l'on a effectuer son choix des catégories des news à afficher et que l'on clique sur Ok , les 10 premieres s'affichent correctement, cependant en cliquant sur le lien de la page 2 pour voir les 10 prochaines news, les valeurs des checkbox cochés ne sont plus transmises aux pages suivantes et donc on se retrouve avec une page blanche...

    ce qui est bizarre c'est que le du chiffrage des pages est juste.

    Comment peut-on se rendre sur la page avec les 10 prochains résultats tout en ayant que certaines catégories à afficher (choisi au tout début avec le formulaire) ????

    Comment transmettres les catégories cochés au tout début sur les pages suivantes qui affichent le reste des résultats???

    Merci d'avance pour votre aide

    qq morceau de code :

    La boucle qui récupère les différentes catégories pour les afficher avec un checkbox et le bouton ok qui permet d'afficher les news des catégories sélectionnées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <form method="post" action="?page=lsnews&affichage">
    while($donnees_cat = mysql_fetch_array($requete_cat))
    {
     
    ?><td width="8%">
    <table cellpadding="0" cellspacing="0" border="0" width="100%"><tr>
    <td><input type="checkbox" class="checkbox" id="list" name="news[]" value="<? echo $donnees_cat['cat']; ?>" /></td>
    </tr><tr><td height="2px"></td></tr></table></td>
    <td width="92%" class="txt_cat" align="left"><img src="./img/cat/<? echo $donnees_cat['icone']; ?>" border="0" alt="cat" /> <? echo $donnees_cat['cat']; ?></td><?
    }
     
    <input type="submit" value="Afficher"></form>

    on affiche les news des catégories selectionnées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    if (isset($_GET['affichage'])) //si on choisi des catégories spécifiques sinon on fait un affichage normal des news (toutes les catégories)
    {
     
    $sql = 'SELECT n.id, n.titre, n.cat, n.icone, n.pseudo, n.contenu, n.timestamp, c.cat, c.icone FROM news n LEFT JOIN cat c ON n.cat=c.cat';
     
    if(!empty($_POST['news']))
    {
     
     /* On complète la requête avec une clause de tri */
        $sql .= ' WHERE n.cat="'.$_POST['news'].'"';
     
    	for ($i = 0, $c = count($_POST['news']); $i < $c; $i++) {
         $sql .= ' OR n.cat="' . $_POST['news'][$i] . '"';
        }
     
    	$sql .= ' ORDER BY timestamp DESC LIMIT ' . $from . ', ' . $limit_par_page .'';
     
        $requete_liste_news = mysql_query($sql); ?>
     
    while ($donnees = mysql_fetch_array($requete_liste_news)){
    //affichage des news
    }



    Système de pagination :

    -en haut de la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $limit_par_page = 5;
     
    	if (isset($_GET['p']) AND !empty($_GET['p']))
    	{
            $p = intval($_GET['p']);
    	}
    	else
    	{
            $p = 1;
    	}
     
    	$from = ($p - 1) * $limit_par_page;



    -en bas de la page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     $sql2 = 'SELECT count(id) AS nbnews FROM news';
     $sql2 .= ' WHERE cat="'.$_POST['news'].'"';
     
    	for ($i = 0, $c = count($_POST['news']); $i < $c; $i++) {
         $sql2 .= ' OR cat="' . $_POST['news'][$i] . '"';
        }
     
    	$reqsql2 = mysql_query($sql2);
    	$donnees2 = mysql_fetch_assoc($reqsql2);
     
    	$nb_pages = ceil($donnees2['nbnews'] / $limit_par_page);
     
    if ($donnees2['nbnews'] <= $limit_par_page)
    {
    	echo '';
    }
    else
    {
    	for ($i=1 ; $i<=$nb_pages ; $i++)
    	{
     
            if ($i == $p)
            {
            	echo $i;
            }
            else
            {
            	echo '<a href="?page=lsnews&affichage&p='.$i.'">'.$i.'</a>';
    		}
    	}
     
    }

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Tes catégories sont envoyées dans un tableau après le post de ton formulaire.

    Or d'après ce que j'ai vu tu effectues ta pagination via des liens, donc tu perds les informations postées.

    Une méthode serait de passer la liste des catégories dans ton url et de les récupérer en GET à la page suivante.

    Une autre méthode, plus lourde mais qui est à mon sens plus robuste, est de créer un formulaire caché dans lequel seront stockées tes catégories choisies et de le poster lors du clic sur le lien.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ratapapa
    Une autre méthode, plus lourde mais qui est à mon sens plus robuste, est de créer un formulaire caché dans lequel seront stockées tes catégories choisies et de le poster lors du clic sur le lien.
    j'avais pensé à cette méthode, mais je ne vois pas comment la mettre en place exactement... tu pourrais me donner quelques indications en plus?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Tu seras obligé de passer par du javascript pour cela.

    Tu crées en php un formulaire ne contenant que des champs hidden que tu renseignes, puis lorsque l'utilisateur clique sur le lien tu valides ton formulaire (le formulaire peut par exemple récupérer le numéro de page, ou bien tu modifies au dernier moment l'url de postage pour le contenir)

Discussions similaires

  1. Variable décompte d'enregistrement par page
    Par nal dans le forum Langage
    Réponses: 4
    Dernier message: 09/05/2012, 22h21
  2. probleme d'affichage page par page
    Par trmalek dans le forum Servlets/JSP
    Réponses: 22
    Dernier message: 15/04/2011, 13h11
  3. Réponses: 4
    Dernier message: 29/07/2009, 16h36
  4. [MySQL] afficher plusieurs enregistrements par page par page à la volée
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/03/2006, 12h22
  5. [struts] afficher page par page une liste d'élément
    Par BurningPat dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/09/2005, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo