Petit probléme sur appel d'un cookie.

Signaler
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005
-
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005
-
Bonjour,
J'ai une liste déroulante qui appelle un cookie et qui permet à l'utilisateur de choisir l'affichage du tableau sur 7 , 20, 30, 70 lignes...

<?php
$nb_results_p_page = isset( $_COOKIE[ 'rowsPerPage' ] ) ? $_COOKIE[ 'rowsPerPage' ] : 7; //Par defaut affichage de 7 ventes
?>

voici la liste déroulante :
<form action="cookie.php" method="POST">
<select name="rowsPerPage">
<option value="7" selected <?php if( $_COOKIE[ 'rowsPerPage' ] == 7 ) echo "selected="selected""; ?> >Afficher par 7 ventes</option>
<option value="20" <?php if( !$_COOKIE[ 'rowsPerPage' ] || $_COOKIE[ 'rowsPerPage' ] == 20 ) echo "selected="selected""; ?> >Afficher par 20 ventes</option>
<option value="30">Afficher par 30 ventes</option>
<option value="70">Afficher par 70 ventes</option>
</select>

</form>

Plutôt que d'afficher cette liste déroulante, j'aimerais que le choix de l'affichage se fasse par un clic sur 7,20,30,70 ventes de type :
Afficher par 7| 20| 30| 70 ventes
J'ai essayé plusieurs choses mais je n'arrive pas à trouver la syntaxe...
Une piste ? merci.

11 réponses

Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

Personne ne sait ? snif !!
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Bah, avec un $_GET et les transmissions de variables via URL !

[cookie.php?view=7 7]|20
etc...

Et pour le code PHP

<?php
if ( isset($_GET['view']) && is_int($_GET['view']) ) {
$nb_results_p_page = $_GET['view'];
}
?>

C'est tout simple !
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

Grand merci et bonne journée...
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

Au fait pourquoi "view" ??
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

Bon, je viens de m'y remettre et j'ai l'erreur suivante :
Warning: Cannot modify header information - headers already sent by (output started at....
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
"Au fait pourquoi "view" ??" Parce qu'il fallait que je trouve un nom de variable c'est tout. T'as qu'à changer si tu préfères :)

"Bon, je viens de m'y remettre et j'ai l'erreur suivante :
Warning: Cannot modify header information - headers already sent by (output started at...." Voir tutos sur :
Comment bien gérer les en-têtes !!!!
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

Et pourquoi cette erreur ne se produit pas avec la liste déroulante ?
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Pardon ?

un problème d'header() signifie que tu utilises header(), ou setcookie() ou quelque chose d'autres qui utilise les en-têtes html APRES avoir sorti du code HTMl (via echo par exemple).

Hors, il n'y a rien de tout ca sur le bout de code que tu as marqué.

Si tu as cette erreur avec le code que je t'ai fourni, c'est que y'a un problème ailleurs. Relis ton code et si tu trouves pas, envoi un autre morceau.
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

Voici le code :

le début de ma page...

?php
include("connexion.php");
//$choix défini si les ventes doivent être affichées par origine, commercial, ... ou tous.
$choix=(isset($_GET['choix'])) ? $_GET['choix'] : "";
//ces 6 variables permettent de savoir quelles ventes afficher en fonction de l'origine, le commercial,la catégorie, la commune choisi
$formulaire_r=(isset($_POST['formulaire_r'])) ? $_POST['formulaire_r'] : "";
$recherche=(isset($_GET['recherche'])) ? $_GET['recherche'] : "";
$ori_choisi=(isset($_GET['ori_choisi'])) ? $_GET['ori_choisi'] : "";
$com_choisi=(isset($_GET['com_choisi'])) ? $_GET['com_choisi'] : "";
$cat_choisi=(isset($_GET['cat_choisi'])) ? $_GET['cat_choisi'] : "";
$ville_choisi=(isset($_GET['ville_choisi'])) ? $_GET['ville_choisi'] : "";
$cli=(isset($_GET['cli'])) ? $_GET['cli'] : "";
//affichage du choix de l'affichage du nombre de ventes (7,30,70)
$query = mysql_query( "SELECT * FROM vente" ); //query the table
$numrows = mysql_num_rows( $query ); //how many rows will be fetched?
$nb_results_p_page = isset( $_COOKIE[ 'rowsPerPage' ] ) ? $_COOKIE[ 'rowsPerPage' ] : 7; //Par defaut affichage de 7 ventes

if( $numrows > $nb_results_p_page ) //do we need to break output into pages?
{
$page = isset( $_GET[ 'page' ] ) ? $_GET[ 'page' ] : 0; //load specified page number (set to 1 if not specified)
if( $numrows % $nb_results_p_page )
$maxpage = floor( $numrows / $nb_results_p_page ) +1;
else
$maxpage = $numrows / $nb_results_p_page; //get maximum page number
if( $page > $maxpage ) $page = 1; //if out of range, set to deafult (page 1)
$limit = " LIMIT " . ( ( $page - 1 ) * $nb_results_p_page ) . "," . $nb_results_p_page; //make LIMIT offset,rowcount string
$query = mysql_query( "SELECT * FROM vente ORDER BY client $limit" ); //and set query to include the LIMIT string
}


//$nb_results_p_page = 7; // nombre de résultats par defaut que j'ai mis en silence
$nb_avant = 6; // nombre de page avant la page courante
$nb_apres = 6; // nombre de page après la page courante
$premiere = 1; // aficher le lien "première page" (1 ou 0)
$derniere = 1; // afficher le lien "dernière page" (1 ou 0)
$courant = empty($_GET['page']) ? 1 : $_GET['page']; // page
$start = ($courant - 1) * $nb_results_p_page; // start (requete mysql)


// comptage du nombre de lignes de la base
$resultat = mysql_query("SELECT count(*) FROM vente");
if(!$resultat)
{
// redirection si erreur
header("location: erreur.php");
exit;
}
$ret = mysql_fetch_array($resultat);
// nombre de lignes
$nb_results = $ret[0];

switch($choix)
blabla
blabla

//affichage du formulaire qui envoie le cookie

<form action="cookie.php" method="POST">
<select name="rowsPerPage">
<option value="7" selected <?php if( $_COOKIE[ 'rowsPerPage' ] == 7 ) echo "selected="selected""; ?> >Afficher par 7 ventes</option>
<option value="20" <?php if( !$_COOKIE[ 'rowsPerPage' ] || $_COOKIE[ 'rowsPerPage' ] == 20 ) echo "selected="selected""; ?> >Afficher par 20 ventes</option>
<option value="30">Afficher par 30 ventes</option>
<option value="70">Afficher par 70 ventes</option>
</select>

</form>

je n'ai aucune erreur avec la boite déroulante.

Et voici mon cookie :
<?php
setcookie( 'rowsPerPage', $_POST[ 'rowsPerPage' ], time()+999999 );
?>
<html>
<head>
<title></title>
<meta http-equiv="REFRESH" content="0;url=index.php?liste=ventes">
</head>

</html>
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

FhX, je n'arrive pas à trouver le probléme...Toujours le même message d'erreur
Warning: Cannot modify header information - headers already sent by (output started at....Ce que je ne comprend pas c'est que mon cookie est dans un fichier séparé et il n'y aucune ligne avant setcookie
Messages postés
34
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
15 décembre 2005

ha oui, j'ai fait ceci:

<form action="cookie.php" method="POST">
Afficher
7
20
50
100

</form>
et là non plus pas de probléme ! a n'y rien comprendre !