Nouveau sur le forum ? Voici votre case départ pour bien débuter.

Incontournables XHTML / CSS :

Auteur
badiou
# 29 Apr 2008 - 21:21:09
Citer
24 Posts
Bonjour à tous,

J'ai un site internet dont le principe est de publier une page par jour. La navigation de page en page se fait pour l'instant par l'intermédiaire d'un lien pointant vers l'ancienne page. Je fais ça manuellement, chaque fois. Cela devient fastidieux et j'aimerai bénéficier des qualités du php et mysql pour alléger cette navigation.

J'ai donc crée une base de donnée avec deux champs : un ID et un champ pages (urls de chaque nouvelle page) Chaque fois que je mets une nouvelle page en ligne, je remplis la base avec la nouvelle page.

J'ai regardé plein d'exemples de paginations sur internet et j'essaie par le biais de Dreamweaver (pagination du jeu d'enregistrement, barre de navigation) de passer d'une page à une autre. Ce dont j'ai besoin en fait c'est juste d'un lien hypertexte indiquant suivant et quelle que soit la page depuis l'on clique, que ça aille sur la page suivante enregistrée dans la base de donnée.

Je pensais à quelque chose comme
<a href="<?php echo $row_pages['pages']+1; ?>" target="_self">Suivant</a>


Et finir en enregistrant cette navigation sous une page php indépendante et l'appeler en include.
Quelqu'un saurait me conseiller ?

^
Florent V.
# 30 Apr 2008 - 01:20:44
Citer
On va manger des chips.
Modérateur
12132 Posts
Hello,

Si ta base est vraiment aussi minimale (id et nom de la page associée), tu n'as même pas besoin de base de données. Un simple array en PHP fera l'affaire:

<?php

$pages = array(
1 => 'accueil',
2 => 'machin',
3 => 'blabla',
4 => 'truc',
5 => 'un-titre-de-page-un-peu-long',
6 => 'hopla',
7 => 'boudiou',
8 => 'et-voila'
);

// Is there a previous page?
if($pages[$current_page - 1]) {
$previous = true;
$previous_file = $pages[$current_page - 1];
}
else $previous = false;

// Is there a next page?
if($pages[$current_page + 1]) {
$next = true;
$next_file = $pages[$current_page + 1];
}
else $next = false;

// Outputting the navigation
?>
<ul id="nav">
<?php if ($previous): ?><li class="previous">
<a href="<?php echo $previous_file . '.php'; ?>">Page précédente</a>
</li><?php endif; ?>
<?php if ($next): ?><li class="previous">
<a href="<?php echo $next_file . '.php'; ?>">Page suivante</a>
</li><?php endif; ?>
</ul>


Quelque chose du genre. Et ensuite, dans chaque fichier PHP, tu as ton contenu HTML de la page (éventuellement des include pour certaines parties que l'on retrouve sur toutes les pages), et ceci (par exemple):
<?php

$current_page = 4;
include('inc/navigation.php');

?>


http://www.covertprestige.net 
^
badiou
# 30 Apr 2008 - 12:26:59
Citer
24 Posts
Hello,

Merci de cette aide. C'est sympa.
J'ai testé cette solution mais un message d'erreur me revient :


Notice: Undefined offset: -1 in c:\temp\inc\navigation.php


Le lien page suivante fonctionne mais j'ai cette erreur...
Ce serait lié à cette ligne :
if($pages[$current_page - 1]) {


^
Florent V.
# 01 May 2008 - 00:55:43
Citer
On va manger des chips.
Modérateur
12132 Posts
Hmm... j'avoue avoir rédigé ça de tête pour montrer le principe. Il se peut que ça ne soit pas le bonne syntaxe en PHP.

Edit: euh... je viens de tester, et ça marche très bien de mon côté.
Comme quoi je suis meilleur en PHP que je ne pensais. lol

Mais si le message que tu options est un Notice: ..., ce n'est pas une erreur mais juste un avertissement (qui dit en gros que $pages[-1] n'existe pas, ce qui ne nous pose pas de problème vu que justement nous testons l'existence de $page[n] avant de tenter d'afficher le lien correspondant). Je dis peut-être une bêtise mais il me semble qu'il faudrait désactiver les avertissements de ce niveau dans la configuration de PHP.

http://www.covertprestige.net 
^
Heyoan
# 01 May 2008 - 09:06:56
Citer
Un p'tit Kiwiz Coca ?
Modérateur
2278 Posts
Florent V. a écrit :
Mais si le message que tu options est un Notice: ..., ce n'est pas une erreur mais juste un avertissement
Euh... si c'est quand même une erreur qui risque de s'afficher en fonction du paramétrage lol : pour s'en convaincre il suffit de rajouter un
error_reporting(E_ALL);
en début de code.

Pour l'éviter, il suffit de remplacer
if($pages[$current_page - 1]) {
par
if ( array_key_exists( $current_page - 1, $pages )) {

et
if($pages[$current_page + 1]) {
par
if ( array_key_exists( $current_page + 1, $pages )) {

A+ smile


Edit: et pour ce qui est de désactiver les avertissements je suis plutôt partisan de rajouter le fameux error_reporting(E_ALL); pendant la phase de développement pour justement corriger toutes les erreurs (warnings compris) avant de mettre en ligne en mettant error_reporting(0);
Modifié par Heyoan (01 May 2008 - 09:16)

http://www.heyoan.com 
^

référencesLes références web : openweb.eu.org - opquast.com - webmaster-hub.com - webrankinfo.com - salemioche.net - web-pour-tous.org - webonorme.org

Nos partenaires : Editions Eyrolles - Location vacances France - Location vacances Europe

Nikozen : Hébergement - Réalisation : Alsacreations.fr

Powered by Phedio v3.7.9 © dew
Contacter l'administrateur - 8.6 ms - Charte