Ma barre de navigation

Répondre
tine444
le 28/02/2005 à 15:57
tine444
Bonjour

j'essaie de mettre en place une barre de navigation selon l'aide d'ici : http://www.lephpfacile.com/howto/index.php?p=6

Seulement j'ai un souci et je n'arrive pas à y remédier.

Tout d'abord j'ai un élément qui s'affiche au dessus de la barre (un élément de ma base)
et de plus, lorsque je clique par exemple sur la page 2, et bien j'accède à la page 2 mais toujours avec les éléments de ma page 1.

Pouvez vous m'aider ?

Merci

Tine
zebden
le 28/02/2005 à 15:59
zebden
Sans code , non on peut pas faire grand chose.
zebdinou pour les intimes / Blog : http://www.zebden.fr
tine444
le 28/02/2005 à 16:07
tine444
Oui tu as raison

Donc pour la fonction
//----------------------------
// BARRE DE NAVIGATION
//----------------------------

function barre_navigation ($nb_total,
$nb_affichage_par_page,
$debut,
$nb_liens_dans_la_barre) {

$barre = '';

// on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
if ($_SERVER['QUERY_STRING'] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);
if ($nb_element == 1) {
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else {
if ($tableau[0] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
}
}
}
// on calcul le numéro de la page active
$page_active = floor(($debut/$nb_affichage_par_page)+1);
// on calcul le nombre de pages total que va prendre notre affichage
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

// on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
// exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
if ($nb_liens_dans_la_barre%2==0) {
$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
}
else {
$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
}

if ($cpt_deb1 <= 1) {
$cpt_deb = 1;
$cpt_fin = $nb_liens_dans_la_barre;
}
elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {
$cpt_deb = $cpt_deb1;
$cpt_fin = $cpt_fin1;
}
else {
$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
$cpt_fin = $nb_pages_total;
}

if ($nb_pages_total <= $nb_liens_dans_la_barre) {
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}

// si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
if ($cpt_deb != 1) {
$cible = $query.(0);
$lien = '<A HREF="'.$cible.'">&lt;&lt;</A>&nbsp;&nbsp;';
}
else {
$lien='';
}
$barre .= $lien;

// on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
if ($cpt == $page_active) {
if ($cpt == $nb_pages_total) {
$barre .= $cpt;
}
else {
$barre .= $cpt.'&nbsp;-&nbsp;';
}
}
else {
if ($cpt == $cpt_fin) {
$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>";
}
else {

$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>&nbsp;-&nbsp;";
}
}
}

$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}

// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
if ($cpt_fin != $nb_pages_total) {
$cible = $query.$fin;
$lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">&gt;&gt;</A>';
}
else {
$lien='';
}
$barre .= $lien;

return $barre;
}
?>

et dans ma page j'ai

//----------------------------------
// NAVIGATION
//----------------------------------
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Affichage des News</title>
</head>
<body>
<?php
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql = "SELECT count(*) FROM $table";

// on exécute cette requête
$resultat1 = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat1);

// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
echo 'Aucune réponse trouvée';
}
else {
echo '<table><tr><td><td></td></tr>';
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;
$nb_affichage_par_page = 1;

// Préparation de la requête avec le LIMIT
$sql = "SELECT TYPEEVT FROM $table ORDER BY TYPEEVT ASC LIMIT ".$_GET['debut'].','.$nb_affichage_par_page;

// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());

// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on affiches les résultats dans la <table>
echo '<tr><td><td>' , stripslashes(htmlentities(trim($data['TYPEEVT']))) , '</td></tr>';
}
echo '</table>';

// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);

// on affiche enfin notre barre
echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($resultat1);

Merci à vous tous

Tine
LA GLOBULE
le 28/02/2005 à 16:12
LA GLOBULE
illisible...

Y'a le wall pour faire ce genre de chose.

Ca commence à gaver les "pavetons" de code comme çà, sans couleur, sans indentation.
tine444
le 28/02/2005 à 16:26
tine444
Trouvé

donc mon code est ici


http://www.lephpfacile.com/wall/wall.php?id=2052


merci
tine444
le 28/02/2005 à 18:05
tine444
oui en fait $table est défini dans la meme page que celle qui contient la fonction
LA GLOBULE
le 28/02/2005 à 18:07
LA GLOBULE
Et ta table n'est pas vide ?

Tu peux nous faire un petit export de ta table la ? Histoire que l'on puisse tester, parce que la, je me vois mal relire toutes ces lignes sans pouvoir tester le code :)
tine444
le 28/02/2005 à 18:20
tine444
voila l'adresse de ma table

http://www.lephpfacile.com/wall/wall.php?id=2053
Répondre
LoadingChargement en cours