PHP Ancre lien contenu d'une page vers l'autr
Nike7414
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
Nike7414 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Nike7414 Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problem quand j'essai de faire un lien d'une page vers une autre avec une ancre en PHP.
Enfait en cliquant sur un lien sur la premiere page jaimerais que la deuxieme page retombe automatiquement sur le meme article que sur le lien sur lequel j'ai cliqué (il y a plusieurs pages il ne faut pas oublier).
Premiere page: http://www.articlesfromparis.com/francais/archivefr.php
Deuxieme page: http://www.articlesfromparis.com/francais/archivefrall.php
Code de la premiere page:
Code de la deuxieme page:
J'ai un problem quand j'essai de faire un lien d'une page vers une autre avec une ancre en PHP.
Enfait en cliquant sur un lien sur la premiere page jaimerais que la deuxieme page retombe automatiquement sur le meme article que sur le lien sur lequel j'ai cliqué (il y a plusieurs pages il ne faut pas oublier).
Premiere page: http://www.articlesfromparis.com/francais/archivefr.php
Deuxieme page: http://www.articlesfromparis.com/francais/archivefrall.php
Code de la premiere page:
<div id="mainContent"> <h1>Archive <a href="archivefrall.php">(voir les articles en entier)</a></h1> <p class="pages"> <?php mysql_connect("localhost", "sdad", "asdad"); mysql_select_db("asdad"); $nombreDeMessagesParPage = 10; $retour = mysql_query('SELECT COUNT(*) AS nb_news FROM articlefr'); $donnees = mysql_fetch_array($retour); $totalDesMessages = $donnees['nb_news']; $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); echo 'Page : '; for ($i = 1; $i <= $nombreDePages; $i++) { echo '<a href="archivefr.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> <?php if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page = 1; } $n= $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $retour = mysql_query('SELECT * FROM articlefr ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); ?> <ul style="font-size: 12px;font-weight: bold;"> <?php while ($donnees = mysql_fetch_array($retour)) {?> <li><?php $n++; echo $n; echo '. <a href="archivefrall.php">'; $titre = nl2br(stripslashes($donnees['titre'])); echo $titre; echo '</a>';?> </li><?php } ?> </ul> <br /> <p class="pages"> <?php echo 'Page : '; for ($i = 1; $i <= $nombreDePages; $i++) { echo '<a href="archivefr.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> </div>
Code de la deuxieme page:
<div id="mainContent"> <h1>Archive: les articles en entier</h1> <p class="pages"> <?php mysql_connect("localhost", "asdad", "asdad"); mysql_select_db("asdada"); // --------------- Etape 2 ----------------- // On écrit les liens vers chacune des pages // ----------------------------------------- // On met dans une variable le nombre de messages qu'on veut par page $nombreDeMessagesParPage = 5; // Essayez de changer ce nombre pour voir :o) // On récupère le nombre total de messages $retour = mysql_query('SELECT COUNT(*) AS nb_news FROM articlefr'); $donnees = mysql_fetch_array($retour); $totalDesMessages = $donnees['nb_news']; // On calcule le nombre de pages à créer $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); // Puis on fait une boucle pour écrire les liens vers chacune des pages echo 'Page : '; for ($i = 1; $i <= $nombreDePages; $i++) { echo '<a href="archivefrall.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> <?php // --------------- Etape 3 --------------- // Maintenant, on va afficher les messages // --------------------------------------- if (isset($_GET['page'])) { $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (arkivalla.php?page=4) } else // La variable n'existe pas, c'est la première fois qu'on charge la page { $page = 1; // On se met sur la page 1 (par défaut) } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $n= $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $retour = mysql_query('SELECT * FROM articlefr ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); ?> <?php while ($donnees = mysql_fetch_array($retour)) { ?> <ul style="font-size: 12px;font-weight: bold;"> <li><?php $n++; echo $n; echo '. '; $titre = nl2br(stripslashes($donnees['titre'])); echo $titre; ?> </li> </ul> <p> <?php $contenu = nl2br(stripslashes($donnees['contenu'])); $contenu = preg_replace('#\[gras\](.+)\/gras\#isU', '<strong>$1</strong>', $contenu); $contenu = preg_replace('#\[italique\](.+)\/italique\#isU', '<em>$1</em>', $contenu); $contenu = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\/color\#isU', '<span style="color:$1">$2</span>', $contenu); $contenu = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $contenu); $contenu = preg_replace ('#\[img\](.+)\/img\#iU', '<img src="../images/$1.jpg" alt="$1" style="float:right;margin:10px;margin-right:0px;" />', $contenu); echo $contenu; ?> </p> <p><em> Anne Edelstam <?php echo date('d/m/Y k\l H\hi', $donnees['timestamp']); ?></em></p><br /> <?php } // Fin de la boucle des news ?> <p class="pages"> <?php echo 'Page : '; for ($i = 1; $i <= $nombreDePages; $i++) { echo '<a href="archivefrall.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> </div>
A voir également:
- PHP Ancre lien contenu d'une page vers l'autr
- Supprimer une page word - Guide
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Imprimer tableau excel sur une page - Guide
- Verificateur de lien - Guide
5 réponses
Bonjour,
Alors, je n'ai pas regardé très précisement ton code, mais je vais surtout essayer de ton donner une piste :
Quand tu affiches les liens, il faut que tu calcul sur quelle page va se trouver ton article, ce quoi doit être assez simple vu que tu as X articles par pages.
Après, il faut que chaque article soit dans une div avec un id, par exemple,
Ainsi, ton lien sera comme ca :
Alors, je n'ai pas regardé très précisement ton code, mais je vais surtout essayer de ton donner une piste :
Quand tu affiches les liens, il faut que tu calcul sur quelle page va se trouver ton article, ce quoi doit être assez simple vu que tu as X articles par pages.
Après, il faut que chaque article soit dans une div avec un id, par exemple,
<div id="article-5">.
Ainsi, ton lien sera comme ca :
<a href="archivefrall.php?page=2#article-5"></a>
jai essayé mais rien ne se passse... tu pourais faire copier coller de mon script et me montrer dessus stp pour que ca soit plus clair?
Première page : on ajoute un variable article, et une ancre article, qui vont nous donner le numéro de l'article à afficher :
Deuxième page, si le numéro de l'article est affiché, on calcul la page :
voilà, j'ai peut etre fait des erreurs, mais ca doit marcher je pense.
<div id="mainContent"> <h1>Archive <a href="archivefrall.php">(voir les articles en entier)</a></h1> <p class="pages"> <?php mysql_connect("localhost", "sdad", "asdad"); mysql_select_db("asdad"); $nombreDeMessagesParPage = 10; $retour = mysql_query('SELECT COUNT(*) AS nb_news FROM articlefr'); $donnees = mysql_fetch_array($retour); $totalDesMessages = $donnees['nb_news']; $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); echo 'Page : '; for ($i = 1; $i <= $nombreDePages; $i++) { echo '<a href="archivefr.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> <?php $page = 1; if (isset($_GET['page'])) { $page = $_GET['page']; } $n= $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $retour = mysql_query('SELECT * FROM articlefr ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); ?> <ul style="font-size: 12px;font-weight: bold;"> <?php while ($donnees = mysql_fetch_array($retour)) {?> <li><?php $n++; echo $n; echo '. <a href="archivefrall.php?article='.$n.'#article-'.$n.'">'; $titre = nl2br(stripslashes($donnees['titre'])); echo $titre; echo '</a>';?> </li><?php } ?> </ul> <br /> <p class="pages"> <?php echo 'Page : '; for ($i = 1; $i <= $nombreDePages; $i++) { echo '<a href="archivefr.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> </div>
Deuxième page, si le numéro de l'article est affiché, on calcul la page :
<?php // --------------- Etape 3 --------------- // Maintenant, on va afficher les messages // --------------------------------------- $page = 1; if (isset($_GET['page'])) { $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (arkivalla.php?page=4) } if (isset($_GET['article'])) { $page = ceil($_GET['article'] / $nombreDeMessagesParPage); // On récupère le numéro de l'article et on calcul le numéro de la page } // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL $n= $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; $retour = mysql_query('SELECT * FROM articlefr ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage); ?> <?php while ($donnees = mysql_fetch_array($retour)) { ?> <ul style="font-size: 12px;font-weight: bold;"> <li><?php $n++; echo $n; echo '. '; $titre = nl2br(stripslashes($donnees['titre'])); echo '<p id="article-'.$n.'>'.$titre.'</p>'; ?> </li> </ul> <p> <?php $contenu = nl2br(stripslashes($donnees['contenu'])); $contenu = preg_replace('#\[gras\](.+)\/gras\#isU', '<strong>$1</strong>', $contenu); $contenu = preg_replace('#\[italique\](.+)\/italique\#isU', '<em>$1</em>', $contenu); $contenu = preg_replace('#\[color=(red|green|blue|yellow|purple|olive)\](.+)\/color\#isU', '<span style="color:$1">$2</span>', $contenu); $contenu = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $contenu); $contenu = preg_replace ('#\[img\](.+)\/img\#iU', '<img src="../images/$1.jpg" alt="$1" style="float:right;margin:10px;margin-right:0px;" />', $contenu); echo $contenu; ?> </p> <p><em> Anne Edelstam <?php echo date('d/m/Y k\l H\hi', $donnees['timestamp']); ?></em></p><br /> <?php } // Fin de la boucle des news ?> <p class="pages"> <?php echo 'Page : '; for ($i = 1; $i <= $nombreDePages; $i++) { echo '<a href="archivefrall.php?page=' . $i . '">' . $i . '</a> '; } ?> </p> </div>
voilà, j'ai peut etre fait des erreurs, mais ca doit marcher je pense.
hmmm nonplus... cest bizar parce que en cliquant sur un des liens par exemple le numéro 3 sur la premiere page http://www.articlesfromparis.com/francais/archivefr.php alors le contenu et le titre de l'article n'apparait pas sur la deuxieme page http://www.articlesfromparis.com/francais/archivefrall.php?article=3#article-3 . Pourtant jai bien indiqué qu'il faut les afficher?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ah si dsl ca marche. il y avait juste un problem d'apostrophe dans ton code. mais un problem qui reste cest que en cliquant sur un lien par exemple le numéro 8, le navigateur ne va pas automatiquement sur la "?page=2" de la Deuxieme page : http://www.articlesfromparis.com/francais/archivefrall.php?page=2
Jai essayé en ajoutant '?page='.i$.' sur le lien de la premiere page et sur lancre de la deuxieme page mais ca ne fait rien...
Jai essayé en ajoutant '?page='.i$.' sur le lien de la premiere page et sur lancre de la deuxieme page mais ca ne fait rien...