PHP Ancre lien contenu d'une page vers l'autr

Fermé
Nike7414 Messages postés 23 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 19 avril 2012 - 9 mars 2010 à 23:27
Nike7414 Messages postés 23 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 19 avril 2012 - 16 mars 2010 à 21:33
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:
     <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:

5 réponses

Titial69 Messages postés 259 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 11 mars 2010 20
10 mars 2010 à 08:45
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,
<div id="article-5">.


Ainsi, ton lien sera comme ca :
<a href="archivefrall.php?page=2#article-5"></a>
0
Nike7414 Messages postés 23 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 19 avril 2012
10 mars 2010 à 14:03
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?
0
Titial69 Messages postés 259 Date d'inscription lundi 22 février 2010 Statut Membre Dernière intervention 11 mars 2010 20
10 mars 2010 à 14:51
Première page : on ajoute un variable article, et une ancre article, qui vont nous donner le numéro de l'article à afficher :

 <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.
0
Nike7414 Messages postés 23 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 19 avril 2012
14 mars 2010 à 23:46
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?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nike7414 Messages postés 23 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 19 avril 2012
16 mars 2010 à 21:33
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...
0