Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/03/2007, 09h53   #1
Invité de passage
 
Inscription : mars 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 2
Points : 0
Points : 0
Envoyer un message via MSN à aeropad
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 :
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 :
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 :
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 :
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>';
		}
	}
 
}
aeropad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 10h03   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
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.
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 10h33   #3
Invité de passage
 
Inscription : mars 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 2
Points : 0
Points : 0
Envoyer un message via MSN à aeropad
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?
aeropad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 10h48   #4
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
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)
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h44.


 
 
 
 
Partenaires

Hébergement Web