PHP Ancre lien contenu d'une page vers l'autre
Dernière réponse : dans Programmation
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....
Code de la premiere page:
Code de la deuxieme page:
Configuration: Windows 7 / Firefox 3.5.8
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....
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>
Configuration: Windows 7 / Firefox 3.5.8
Autres pages sur : php ancre lien contenu page vers
Lassé par la pub ? Créez un compte
ben tu fais un truc du genre
<p name="ancre<?=id_article?>"> titre de ton article </p>
Contenu de l'article....
et lorsque tu insère le lien vers l'article tu fais
<a href ="page.php#ancre<?=id_article?>""> lien vers la page</a>
et ça devrait rouler, si mes souvenirs sont bons....
PS : il faudra remplir la donnée "id_article" en interrogeant la base de données....
<p name="ancre<?=id_article?>"> titre de ton article </p>
Contenu de l'article....
et lorsque tu insère le lien vers l'article tu fais
<a href ="page.php#ancre<?=id_article?>""> lien vers la page</a>
et ça devrait rouler, si mes souvenirs sont bons....
PS : il faudra remplir la donnée "id_article" en interrogeant la base de données....
Salut,
Ca ne change rien que tu les ajoutes dans une base de données...
Tu ajoutes un name sur cet élément par exemple :
<ul style="font-size: 12px;font-weight: bold;">
Avec j'imagine $donnees['id'], tu peux mettre un préfixe si tu veux.
Et dans ta page Archive, tu remplaces ton lien
echo '. <a href="archivefrall.php">';
par un lien avec archivefrall.php#id
N'oublies pas que tu vas devoir gérer les pages aussi, vu que tu n'as pas le même paging dans la page Archive et Archive: les articles en entier.
Tu auras juste besoin de diviser l'élément de la boucle courant par le nombre d'éléments par page et ajouter 1 pour avoir la bonne page.
Ca ne change rien que tu les ajoutes dans une base de données...
Tu ajoutes un name sur cet élément par exemple :
<ul style="font-size: 12px;font-weight: bold;">
Avec j'imagine $donnees['id'], tu peux mettre un préfixe si tu veux.
Et dans ta page Archive, tu remplaces ton lien
echo '. <a href="archivefrall.php">';
par un lien avec archivefrall.php#id
N'oublies pas que tu vas devoir gérer les pages aussi, vu que tu n'as pas le même paging dans la page Archive et Archive: les articles en entier.
Tu auras juste besoin de diviser l'élément de la boucle courant par le nombre d'éléments par page et ajouter 1 pour avoir la bonne page.
ah non jai mis
et
sauf 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....
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...
sur la premiere page
echo '. <a href="archivefrall.php?article='.$n.'#article-'.$n.'">';
et
sur la deuxieme
echo '<p id="article-'.$n.'?page='.$i.'">'.$titre.'</p>';
sauf 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....
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...
Salut,
Il ne faut pas mettre des ? pour séparer des paramètres, mais des &
Le ? va au début pour indiquer que ce qui suit sont des paramètres, mais après on les sépare par des &
Exemple
archivefrall.php?article=123&page=2
Par contre, ce que tu utilises pour compter le nombre de page n'a pas l'air d'être correct vu que tu affiches tout le temps page=3
Il ne faut pas mettre des ? pour séparer des paramètres, mais des &
Le ? va au début pour indiquer que ce qui suit sont des paramètres, mais après on les sépare par des &
Exemple
archivefrall.php?article=123&page=2
Par contre, ce que tu utilises pour compter le nombre de page n'a pas l'air d'être correct vu que tu affiches tout le temps page=3
va sur http://www.articlesfromparis.com/francais/archivefr.php et clique sur le numéro 8 par exemple. ca m'affiche ?page=3 alor que j'ai mis '&page='.$i.' dans le script de la deuxieme page.
Comme je t'ai dit plus haut, le format c'est pas de rajouter des ?
Il faut que ton lien soit de la forme:
archivefrall.php?article=8&page=3#article-8
Après, pour ton numéro de page incorrect, je ne sais pas à quoi correspond ta variable $i mais elle a l'air d'être égal au nombre de pages plutôt qu'a la page de l'item.
Vu que tu as 5 items par page, il faut que tu calcules la page de ton élément en fonction de son numéro et du nombre d'items par page.
Il faut que ton lien soit de la forme:
archivefrall.php?article=8&page=3#article-8
Après, pour ton numéro de page incorrect, je ne sais pas à quoi correspond ta variable $i mais elle a l'air d'être égal au nombre de pages plutôt qu'a la page de l'item.
Vu que tu as 5 items par page, il faut que tu calcules la page de ton élément en fonction de son numéro et du nombre d'items par page.
Comme ca donc? J'ai créé
$nombreDeMessagesParPageAncre
et $p pour indiquer la page
mais j'ai l'impression que c'est faut comme la ca me donne juste le nombredepages... je n'arrive pas à trouver la vrai solution ma cervelle est en feu.
$nombreDeMessagesParPageAncre
et $p pour indiquer la page
mais j'ai l'impression que c'est faut comme la ca me donne juste le nombredepages... je n'arrive pas à trouver la vrai solution ma cervelle est en feu.
<p class="pages">
<?php
mysql_connect("asdad");
mysql_select_db("sada");
$nombreDeMessagesParPageAncre = 5;
$nombreDeMessagesParPage = 10;
$retour = mysql_query('SELECT COUNT(*) AS nb_news FROM articlefr');
$donnees = mysql_fetch_array($retour);
$totalDesMessagesAncre = $donnees['nb_news'];
$totalDesMessages = $donnees['nb_news'];
$nombreDePagesAncre = ceil($totalDesMessagesAncre / $nombreDeMessagesParPageAncre);
$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
for($p = 1 ; $p <= $nombreDePagesAncre ; $p++)
{
while ($donnees = mysql_fetch_array($retour))
{?>
<li><?php
$n++;
echo $n;
echo '. <a href="archivefrall.php?article='.$n.'&page='.$p.'#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>
il te faut juste un algorithme...
Comment tu calculerais la page en sachant le nombre d'éléments par page et le numéro de l'élément ?
L'élément 1 sera sur la page 1,
Elément 2 = page 1
élément 3 = page 1
élément 4 = page 1
élément 5 = page 1
élément 6 = page 2
...
élément 10 = page 2
élément 11 = page 3
A partir de ça, tu peux calculer ton numéro de page non ?
Comment tu calculerais la page en sachant le nombre d'éléments par page et le numéro de l'élément ?
L'élément 1 sera sur la page 1,
Elément 2 = page 1
élément 3 = page 1
élément 4 = page 1
élément 5 = page 1
élément 6 = page 2
...
élément 10 = page 2
élément 11 = page 3
A partir de ça, tu peux calculer ton numéro de page non ?
1er page
2e page
<h1>Archive <a href="archivefrall.php">(voir les articles en entier)</a></h1>
<p class="pages">
<?php
mysql_connect("dfgdg);
mysql_select_db("fgdf
$nombreDeMessagesParPageAncre = 5;
$nombreDeMessagesParPage = 10;
$retour = mysql_query('SELECT COUNT(*) AS nb_news FROM articlefr');
$donnees = mysql_fetch_array($retour);
$totalDesMessagesAncre = $donnees['nb_news'];
$totalDesMessages = $donnees['nb_news'];
$nombreDePagesAncre = ceil($totalDesMessagesAncre / $nombreDeMessagesParPageAncre);
$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
for($p = 1 ; $p <= $nombreDePagesAncre ; $p++)
{
while ($donnees = mysql_fetch_array($retour))
{?>
<li><?php
$n++;
echo $n;
echo '. <a href="archivefrall.php?article='.$n.'&page='.$p.'#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>
2e page
<h1>Archive: les articles en entier</h1>
<p class="pages">
<?php
mysql_connect("sdaadsd");
mysql_select_db("sadad");
// --------------- 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 '<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>
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumLien vers une page en php
- ForumWordpress lien vers page php
- ForumLien page html php
- ForumLien page precedente php
- ForumFaire un lien vers une page php
- ForumAjouter un lien dans page php
- ForumValeur textarea dans lien page comme ancre
- ForumLien dans page php
- ForumLien page php
- ForumPhp lien vers autre page
- Voir plus