Posez votre question Signaler

Array ok avec pagination [Résolu]

sebfitzmaurice 11Messages postés 5 mars 2008Date d'inscription - Dernière réponse le 14 mars 2008 à 17:37
Bonjour,j'aimerais savoir comment déclarer un array ok avec une variable ex:
index.php
$pageOK = array ('$suiv' => 'page=2 ou 3 ou 4 ainsi de suite ....')
if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
include($pageOK[$_GET['page']]);
} else {
include('choix_sports.html'); }
pagination.php
if ($courante < $compteur - 1)
$pagination.= "<a href=\"index.php?page=$suiv\">suiv »</a>\n";
else
$pagination.= "<span class=\"desactive\">suiv »</span>\n";
$pagination.= "</div>\n"
Merci d'avance ca fait une semaine que je patauge !!!!!
Lire la suite 

Array ok avec pagination »

Suggestions
5 réponses
Réponse
+0
moins plus
Bonsoir,

pourquoi ne fais tu pas simplement:

$pageOK = array ('0' => 'page1.html','1'=>'page2.html' etc..) 

if ( (isset($_GET['page'])) && (array_key_exists($_GET['page'], $pageOK) {
include($pageOK[$_GET['page']]);
} else {
include('choix_sports.html'); } 
sebfitzmaurice- 13 mars 2008 à 04:57
merci de ta suggestion j'ai esseiller mais je ne réussit pas !!!!!

Je vous donnes mon code parce que je suis un peut décourager , j'espère trouver une solution et encore merci !!!

index.php

<div id="choix_sport">

<?php
// On définit le tableau contenant les pages autorisées

$pageOK = array( 'voir-annonce' => 'voir-annonce.php',
'choix_sports ' => 'choix_sports.html',
'login' =>'login.html',
'login1' =>'login1.php',
'formulaire-annonce' =>'formulaire-annonce.php',
'admin03' =>'admin03.php',
'votre_annonce03' =>'votre_annonce03.php',
'affiche_annonce' =>'affiche_annonce.php',
'edition_de_tableau' =>'edition_de_tableau.php',
'traite_efface_annonce' =>'traite_efface_annonce.php',
'affiche_choix' =>'affiche_choix.php',
'affiche_sous_choix' =>'affiche_sous_choix.php',
'traite_change_text' =>'traite_change_text.php');


// On teste que le paramètre d'url existe et qu'il est bien autorisé

if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) && (array_key_exists($_GET['page'],
$pageOK))) {

include($pageOK[$_GET['page']]); // Nous appelons le contenu central de la page
} else {
include('choix_sports.html'); // Page par défaut quant elle n'existe pas dans le tableau
}
?>




pagination.php



<?php

function pagination($total,$courante)
{
$prec = $courante - 1; // numéro de la page précédente
$suiv = $courante + 1; // numéro de la page suivante
$avder = $total - 1; // avant dernière page
$adjacentes = 3; // nombre de pages à afficher de chaque côté de la page courante

$pagination = ""; // s'il n'ya pas au moins deux pages, on n'affiche rien

if($total > 1) // il y a au moins deux pages
{

$pagination .= "<div class=\"pagination\">\n";

// on affiche d'abord le bouton précédent
if ($courante == 2) // si on est sur la page 2, le bouton précédent renvoit sur la page initiale, il est inutile de mettre ?page=1 sinon on se retrouve avec un duplicate content
$pagination.= "<a href=\"voir-annonce.php\">« préc</a>";
elseif ($courante > 2) // si la page actuelle est supérieure à 2 le bouton précédent renvoit sur la page dont le numéro est immédiatement inférieur
$pagination.= "<a href=\"voir-annonce.php?page=$prec\">« préc</a>";
else // sinon on est sur la page 1 : on désactive le bouton précédent. on est nécessairement sur la page 1 car on a fait le traitement des pages dans index.php, pas besoin de mettre elseif ($courante==1)
$pagination.= "<span class=\"desactive\">« préc</span>";


// CAS 1 : il n'y a pas assez de pages pour tronquer, on les affiche toutes (voir figure 1)
if ($total < 7 + ($adjacentes * 2))
{

$pagination.= ($courante == 1) ? "<span class=\"courante\">1</span>" : "<a href=\"voir-annonce.php\">1</a>";

// pour les pages restantes on utilise une simple boucle for
for ($compteur = 2; $compteur <= $total; $compteur++)
{
if ($compteur == $courante) // on affiche la page courante différemment pour la mettre en évidence
$pagination.= "<span class=\"courante\">$compteur</span>";
else
$pagination.= "<a href=\"voir-annonce.php?page=$compteur\">$compteur</a>";
}
}

// CAS 2 : on a assez de pages pour tronquer en fonction de la page actuelle
elseif($total > 5 + ($adjacentes * 2))
{
/*
on est placé dans la partie proche des premières pages, on tronque donc la fin de la pagination.
l'affichage sera 9 pages à gauche ... 2 pages à droite (voir figure 2)
*/
if($courante < 1 + ($adjacentes * 2))
{
// on affiche la page 1 comme vu précédemment
$pagination.= ($courante == 1) ? "<span class=\"courante\">1</span>" : "<a href=\"voir-annonce.php\">1</a>";

// puis les huit pages suivantes
for ($compteur = 2; $compteur < 4 + ($adjacentes * 2); $compteur++)
{
if ($compteur == $courante)
$pagination.= "<span class=\"courante\">$compteur</span>";
else
$pagination.= "<a href=\"voir-annonce.php?page=$compteur\">$compteur</a>";
}

// les ... pour marquer la troncature
$pagination.= " ... ";

// et enfin les deux dernières pages
$pagination.= "<a href=\"voir-annonce.php?page=$avder\">$avder</a>";
$pagination.= "<a href=\"voir-annonce.php?page=$total\">$total</a>";
}

/*
on est placé dans la partie centrale de notre pagination, on tronque donc le début et la fin de la pagination.
l'affichage sera 2 pages à gauche ... 7 pages au centre ... 2 pages à droite (voir figure 3)
*/
elseif($total - ($adjacentes * 2) > $courante && $courante > ($adjacentes * 2))
{
// on affiche les deux premières pages
$pagination.= "<a href=\"voir-annonce.php\">1</a>";
$pagination.= "<a href=\"voir-annonce.php?page=2\">2</a>";

// les ... pour marquer la troncature
$pagination.= " ... ";

// puis sept pages : les trois précédent la page courante, la page courante, puis les trois lui succédant
for ($compteur = $courante - $adjacentes; $compteur <= $courante + $adjacentes; $compteur++)
{
if ($compteur == $courante)
$pagination.= "<span class=\"courante\">$compteur</span>";
else
$pagination.= "<a href=\"voir-annonce.php?page=$compteur\">$compteur</a>";
}

// les ... pour marquer la troncature
$pagination.= " ... ";

// et enfin les deux dernière spages
$pagination.= "<a href=\"voir-annonce.php?page=$avder\">$avder</a>";
$pagination.= "<a href=\"voir-annonce.php?page=$total\">$total</a>";
}

/*
sinon on est placé dans la partie de droite, on tronque donc le début de la pagination.
l'affichage sera 2 pages à gauche ... 9 pages à droite (voir figure 4)
*/
else
{
// on affiche les deux premières pages
$pagination.= "<a href=\"voir-annonce.php\">1</a>";
$pagination.= "<a href=\"voir-annonce.php?page=2\">2</a>";

// les ... pour marquer la troncature
$pagination.= " ... ";

// et enfin les neuf dernières pages
for ($compteur = $total - (2 + ($adjacentes * 2)); $compteur <= $total; $compteur++)
{
if ($compteur == $courante)
$pagination.= "<span class=\"courante\">$compteur</span>";
else
$pagination.= "<a href=\"voir-annonce.php?page=$compteur\">$compteur</a>";
}
}
}

// pour finir on affiche le bouton suivant
if ($courante < $compteur - 1)
$pagination.= "<a href=\"voir-annonce.php?page=$suiv\">suiv »</a>\n";
else
$pagination.= "<span class=\"desactive\">suiv »</span>\n";
$pagination.= "</div>\n";
}

// et on retourne $pagination au programme appelant la fonction
return ($pagination);
}
?>





voir-annonce.php



include 'pagination.php';

$query = mysql_query('SELECT COUNT(*) FROM annonce') or die(mysql_error());
$nb_entrees = mysql_result($query,0,0);

$entrees_par_page = 5;
$total_pages = ceil($nb_entrees/$entrees_par_page);

if ($page=='page2') {include('page2.php');}


if(!isset($_GET['page'])){
$page_courante = 1;
} else {
$page = $_GET['page'];
if ($page<1) $page_courante=1;
elseif ($page>$total_pages) $page_courante=$total_pages;
else $page_courante=$page;
}

$start = ($page_courante * $entrees_par_page - $entrees_par_page);

$query = "SELECT nbrann,nom,annonce,prix,photo,email FROM annonce LIMIT $start, $entrees_par_page";
$resultat = mysql_query($query);

while($item = mysql_fetch_array($resultat)) {

bla...bla...bla... Merci !!!!!
Alain_42- 13 mars 2008 à 13:25
Je n'ai pas le temps pour le moment de regarder tout ton code en détail mais déjà le test suivant ne ma parait pas correct isset teste l'existence d'une variable pas si la clef existe dans un array

if ((isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) && array_key_exists($_GET['page'],$pageOK)))

et tu peux alléger en supprimant des parenthèses.

essayes en remplaçant par:

if(isset($_GET['page']) && array_key_exists($_GET['page'],$pageOK))


= test si on a reçu l'info page et si elle existe comme clef dans l'array
Ajouter un commentaire
Réponse
+0
moins plus
Merci beaucoup de tes réponses et de ta patience, peut-etre que ce fait trop longtemp que j'essaie ce bout de code ,
j'y suis un peux mêlé... mais bon , je dois continuer !

pagination.php
a href=\"voir-annonce.php?page=$suiv\">suiv »</a>


index.php
<?php

$pageOK= array('0' => ' 1.php', <------------------- Esse de cette facon ou
'1' => ' 2.php',
'$suiv' => ' .php'); <------------------- Peut-etre comme ca?


if (isset($_GET['voir-annonce']) && array_key_exists($_GET['voir-annonce'], $pageOK)) {
include($pageOK[$_GET['voir-annonce']]);
}

?>

Merci encore!!!
Ajouter un commentaire
Réponse
+0
moins plus
Le forum me renvoie le code tous mêlé, j'essaie encore ...

pagination.php
a href=\"index.php?voir-annonce=$suiv\">suiv »</a>


index.php
<?php

$pageOK= array(

'0' => ' 1.php', <------------------- de cette facon? ou

'1' => ' 2.php',

'$suiv' => ' .php', <------------------- Peut-etre comme ca?

'2' => '?voir-annonce=2','3'=>'?voir-annonce=3'); <------------------- ou comme ca?


if (isset($_GET['voir-annonce']) && array_key_exists($_GET['voir-annonce'], $pageOK)) {
include($pageOK[$_GET['voir-annonce']]);
}


Bon... si je fait echo $suiv; ca me donne 2 comme résultat,

comme je le disais href="index.php?voir annonce=$suiv">suiv »

est la variable à déclarer, donc je dois avoir comme résultat

index.php?voir-annonce=2 ou index.php?voir-annonce=3 et ect..

c'est ce que j'essais de faire avec mon ARRAY ...

Et encore merci de votre patience ,

ou sinon connais-tu un autre bon systeme de pagination???


?>
Ajouter un commentaire
Ce document intitulé « array ok avec pagination » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?