Page 1 sur 1

Lien sur la meme page

Posté : 01 juil. 2012, 07:58
par rimie
Bonjour,

Le lien sur la meme page est connu par son code:
<a name="target">
contenu
</a>

<a href="page.html#target">click</a>
J'ai un code de commentaires avec LIMIT = 10 et un lien pour afficher le reste des commentaires

Un lien du genre:
echo '<a name="'.$idcom.'">'; // soit idcom est l'id du commentaire
echo $commentaire';
echo '</a>';
En face de chaque commentaire, on affiche son ID:

Code : Tout sélectionner

1# Commentaire 1 2# Commentaire 2 3# Commentaire 3
Si je voudrais copier l'id, (par exemple 10), du commentaire et l'envoyer un ami, clique droit donne:

Code : Tout sélectionner

localhost/index.php/commentaire.html#10
Si mon ami ouvre le lien, il va tpmber sur le commentaire numero 10.

Alors tout va bien jusqu'au 10 (a rappeller LIMIT 10).

Si je prends 11 et au dessus de ce chiffre, mon ami ne tombe pas sur le commentaire 11 et 12 ,... mais au haut du page, la raison duquelle LIMIT empeche l'affichage des autres commentaires au-dessus de 10.

Merci de me donner une bonne methode pour pouvoir resoudre ce soucis.

Merci

Re: Lien sur la meme page

Posté : 01 juil. 2012, 08:17
par TAYDOSOFT.COM
Bonjour,
Vous pouvez limiter votre variable $idcom par une condition comme ci:
<?php
$idcom = ""; // votre definitions
if($idcom > 10 || $idcom < 1){
$idcom = 1;
} else {
$idcom = "votre parametre";
}
?>
c'est fixe a votre issue?

Re: Lien sur la meme page

Posté : 01 juil. 2012, 08:34
par rimie
Je pense pas comprendre votre solution, je veux recuperer ca (#10), ce qui est apres #, et faire comme ca:
if($idcom > 10) // si le chiffre apres # est supperieur a 10
{
$perPage = $totalComs; // nombre de commentaires par page est egal au nombre total des commentaires (par exemple 25 commentaires)
}
else
{
$perPage = 10; // sinon on affiche juste les 10 commentaires
}

$req = SELECT * FROM commentaires LIMIT $perPage

Re: Lien sur la meme page

Posté : 01 juil. 2012, 08:52
par Ryle
L'ancre (l'information passée après le #) n'est à ma connaissance pas transmise par les navigateurs au serveur. Elle permet uniquement au navigateur de se positionner sur la page, donc pas moyen de récupérer l'information en php.

En revanche, tu peux soit la spécifier en plus dans l'url, ton lien devrait alors être de la forme

Code : Tout sélectionner

localhost/index.php/commentaire.html?idCom=10#10
(attention aux règles de réécriture pour le traitement php) ou la traiter après chargement de la page en javascript (document.location.href te retournera l'url complète)

Re: Lien sur la meme page

Posté : 01 juil. 2012, 13:18
par rimie
en JS avec les Regex?

Re: Lien sur la meme page

Posté : 01 juil. 2012, 14:36
par Ryle
Ca peut se faire avec une expression régulière si tu veux, mais ce n'est pas obligatoire. En javascript, l'instruction document.location.href va te retourner l'url spécifiée dans la barre d'adresse. Tu vas donc récupérer "http://localhost/index.php/commentaire.html#10".

A partir de là, à toi de voir comment tu veux la traiter pour récupérer le "10" (regexp, strpos+substring, ...) selon ce avec quoi tu es le plus à l'aise :)

Par contre si tu le fais en js, tu n'auras ton résultat qu'une fois que la page est chargée. Donc si je demande le 12 alors que tu n'as affiché que de 1 à 10, il faudra faire un traitement complémentaire pour actualiser le résultat :)

Re: Lien sur la meme page

Posté : 01 juil. 2012, 16:39
par rimie
Par contre si tu le fais en js, tu n'auras ton résultat qu'une fois que la page est chargée. Donc si je demande le 12 alors que tu n'as affiché que de 1 à 10, il faudra faire un traitement complémentaire pour actualiser le résultat :)
je suis concerne par cette partie
php-debutant/lien-sur-meme-page-t264792.html#p390922

voici un exemple: le "t" est 264792 et le "p" est 390922, je suis concerne par le "p"

Re: Lien sur la meme page

Posté : 03 juil. 2012, 04:00
par rimie
Est ce qu'on peut recupere le 10 en PHP, j'ai essaye par REQUEST_URI, resultat jusqu'a ".html", ne recupere pas ce qui est apres le #

Re: Lien sur la meme page

Posté : 03 juil. 2012, 21:28
par Ryle
Comme indiqué ci-dessus, si tu veux récupérer la valeur "10" en php, il faut que celle-ci soit placée avant le # pour être transmise au serveur.

Donc soit tu modifies tes liens pour spécifier ton id dans le query, via un paramètre dans l'url ou une url réécrite (traité par php) ET dans l'ancre (traitée par le navigateur), soit tu veux uniquement le garder dans l'ancre et dans ce cas tu n'as pas d'autre choix que de le traiter avec javascript côté client.

Re: Lien sur la meme page

Posté : 04 juil. 2012, 10:59
par rimie
je l'ai mis comme ca:
http://localhost/commentaire/idcom22.html
Je l'ai mis en parametres, alors:
if(IsSet($idcom))
{
// je selectionne tous les commentaires
$query = SELECT * FROM commentaires
}
else
{
$query = SELECT * FROM commentaires LIMIT 10;
}
dans le premier cas, comment puis je aller directement sur la meme page au commentaire 22.

Merci