Array ok avec pagination

Résolu/Fermé
sebfitzmaurice Messages postés 11 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 24 mars 2008 - 12 mars 2008 à 20:07
sebfitzmaurice Messages postés 11 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 24 mars 2008 - 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 !!!!!

3 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 mars 2008 à 20:32
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'); } 
0
sebfitzmaurice Messages postés 11 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 24 mars 2008
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 !!!!!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > sebfitzmaurice Messages postés 11 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 24 mars 2008
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
0
sebfitzmaurice Messages postés 11 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 24 mars 2008
14 mars 2008 à 17:06
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!!!
0
sebfitzmaurice Messages postés 11 Date d'inscription mercredi 5 mars 2008 Statut Membre Dernière intervention 24 mars 2008
14 mars 2008 à 17:37
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???


?>
0