begin process at 2012 05 30 22:40:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Onglet Actualité en php


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Onglet Actualité en php

mardi 30 août 2011 à 12:08:12 | Onglet Actualité en php

bmounaj

Salut, j'aimerai faire un onglet "ACTUALITE" dans mon site en php, et on m'a dit qu'il y'avait une fonction ou un bout de code tout prêt pour m'afficher le "lire la suite", est ce vraI? parceque j'ai cherché je n'ai rien trouvé, je cherche aussi à savoir comment écrire sous le titre la 1ere phrase du paragraphe concerné, je suppose que pour ça aussi y'a une fonction qui affiche un certain nombre de caractères. Merci!
mardi 30 août 2011 à 13:27:05 | Re : Onglet Actualité en php

Tonio_35

Bonjour,

Il n'existe pas de bout de code tout prêt en PHP pour afficher le texte "Lire la suite". Peut-être utilise tu un CMS ou autre framework PHP ?

Pour afficher une partie de texte tu peux regarder comment fonctionne la méthode substr.

Code PHP :
<?php
echo substr('Bonjour', 0, 4).'[...]';  // Bonj[...]
?>


_________________________________
Min iPomme
mardi 30 août 2011 à 14:09:37 | Re : Onglet Actualité en php

dvwyns

Salut,
Voici un tutoriel pour implémenter un lire la suite avec jquery

Enjoy
mardi 30 août 2011 à 14:10:43 | Re : Onglet Actualité en php

bmounaj

Merci beaucoup :)
mardi 30 août 2011 à 14:16:30 | Re : Onglet Actualité en php

bmounaj

je viens de voir le tutoriel que tu m'as passé, enfait moi j'ai créé une table dans une base de données, et à chaque fois l'administrateur peut remplir un formulaire qui comprend le titre et le contenu de larticle, et je veux qu'à partir de ça ça s'affiche, le problème avec le tuto, c'est qu'il faut écrire le texte en entier et le reste du texte invisible entre les balises <span> </span>, moi je ne pourrai pas le faire dans mon cas.
mardi 30 août 2011 à 14:57:28 | Re : Onglet Actualité en php

dvwyns

Avec du texte dynamique, c'est effectivement plus problematique.
En tout cas pour faire un effet (avec un regex qui coupe la phrase à un tel nombre de lettre (mais avec les retour à la ligne "br", c pas une bonne solution, si la personne n'arrête pas de faire des retour à la ligne, avant de cacher le texte, tu peux avoir une bonne hauteur).
En fait, pour ajouter des effets javascript je n'ai pas trouvé de solution de bonne qualité (calculer avec le line-height et la taille de la div qui contient le texte, a chaque "br", rajouter le nombre de pixel d'un line-height, fin en gros c pourri ^^).

Par contre sans effet, tu peux donner une hauteur à la balise qui contient ton texte (genre div, c très bien), et faire un "overflow:hidden" (tout ça en css, bien sur) sur cette meme balise, alors une partie de texte sera invisible. Après au moment ou tu clickes sur "lire la suite" tu appelles via "onclick" une fonction javascript contenant ce code :
Code Javascript :
document.getElementbyId('idDeLaDivContenantLeTexte').style.overflow = 'visible';

ce qui affichera tout le contenu de la balise.

Par contre un problème persiste, lors d'un texte plus court que la hauteur que tu as fixée, il faut pouvoir cacher le texte "lire la suite".

Pour ce faire, lors du chargement de la page tu récupères la hauteur de la balise, puis tu la compares avec la hauteur que tu veux lui donner (oui à ce moment, il faut que tu fixes la hauteur via du javascript et plus via le css), s'il est plus petit en taille alors tu ne l'affiches pas.
Pt précision : avec cette dernière technique, tu te retrouves lors du chargement de la page à voir, un court instant, la hauteur initiale de la div contenant le texte puisque le javascript est chargé après l'html (en gros rien de grave, mais au moins j'ai tout dit lol)

Enjoy
mardi 30 août 2011 à 21:10:40 | Re : Onglet Actualité en php

kohntark

Membre Club
Salut,

"Lire la suite ..." peut aussi être chargé dans une nouvelle page ^^
Simple (un lien), et souvent avantageux : lorsqu'il y a la possibilité d'ajouter des commentaires, que les articles sont longs et nombreux ça devient rapidement le bord** de tout charger sur la même page, sans compter la bande passante utilisée pour rien, les référencements complexes, etc ... etc ...

Dans ce cas tu peux utiliser directement la fonction SQL SUBSTR() pour ne retirer qu'une partie de l'article, éventuellement traiter par PHP avec wordwrap() avant envoi au navigateur. Suffit juste d'ajouter un lien "lire la suite ..." qui guide vers l'article complet.

S'il faut un affichage sur la même page il est possible de procéder de la même façon, mais au lieu d'un simple lien on peut faire appelle à une fonction Ajax qui se chargera d'afficher la totalité de l'article. On ne charge alors que le nécessaire et c'est bien plus simple côté gestion JS :
la fonction se contente de remplacer le texte du conteneur et de masquer le "lire la suite"

En fait, pour ajouter des effets javascript je n'ai pas trouvé de solution de bonne qualité


Je doute effectivement qu'il y en est une, tout simplement parce que le script ne saura jamais si la portion de texte qu'il affiche à du sens, ou non. C'est bien là le principal, présenter suffisamment (mais pas trop) de texte pour que l'internaute en saisisse le contenu.
Partant de là je ne me prendrais pas trop la tête avec des calculs de line-height, taille conteneurs et autres.
Suffit "juste" de compter le nombre de ligne, éventuellement accompagné d'un nombre mini de caractères, couper à la suite d'un mot, ajouter " ..." et rien de plus.


Cordialement,



Kohntark -
mardi 30 août 2011 à 22:17:05 | Re : Onglet Actualité en php

dvwyns

Salut Kohntark,

utiliser directement la fonction SQL SUBSTR() pour ne retirer qu'une partie de l'article
on peut faire appelle à une fonction Ajax qui se chargera d'afficher la totalité de l'article


Effectivement, ça me paraît très sensé si il y a bcp d'article sur une même page ^^

Suffit "juste" de compter le nombre de ligne


Dites moi, comment faites vous ça en sachant que le texte est écris (via un back-end) dans un textarea et que l'affichage (front-end) se fait en utilisant nl2br() pour respecter les sauts à la ligne fait par l'utilisateur ?
En comptant le nombre de "br" me direz vous, mais en imaginant qu'une phrase peut passer à la ligne pcq la largeur de conteneur du texte est dépassée, comment s'en rendre compte et donc compter une ligne de plus ?

éventuellement accompagné d'un nombre mini de caractères


Je vous avoue ne pas avoir bien saisi cette phrase, c'est pour les "..." ?

Merci

Cordialement
mardi 30 août 2011 à 23:39:48 | Re : Onglet Actualité en php

JulSoft

Membre Club
C'est pas un problème facile... Surtout si tu veux que ton aperçu ait du sens.

La solution que je choisirais, c'est celle que pratique wordpress. Il suffit d'ajouter dans ton texte un marqueur (eux utilisent un commentaire html, mais ça peut être n'importe quoi).

Ton texte prendrait alors la forme suivante:
Code :
Auxerunt haec vulgi sordidioris audaciam, quod cum ingravesceret penuria commeatuum, famis et furoris inpulsu Eubuli cuiusdam inter suos clari domum ambitiosam ignibus subditis inflammavit rectoremque ut sibi iudicio imperiali addictum calcibus incessens et pugnis conculcans seminecem laniatu miserando discerpsit. post cuius lacrimosum interitum in unius exitio quisque imaginem periculi sui considerans documento recenti similia formidabat.
#MARQUEUR#
Incenderat autem audaces usque ad insaniam homines ad haec, quae nefariis egere conatibus, Luscus quidam curator urbis subito visus: eosque ut heiulans baiolorum praecentor ad expediendum quod orsi sunt incitans vocibus crebris. qui haut longe postea ideo vivus exustus est.

Quid? qui se etiam nunc subsidiis patrimonii aut amicorum liberalitate sustentant, hos perire patiemur? An, si qui frui publico non potuit per hostem, hic tegitur ipsa lege censoria; quem is frui non sinit, qui est, etiamsi non appellatur, hostis, huic ferri auxilium non oportet? Retinete igitur in provincia diutius eum, qui de sociis cum hostibus, de civibus cum sociis faciat pactiones, qui hoc etiam se pluris esse quam collegam putet, quod ille vos tristia voltuque deceperit, ipse numquam se minus quam erat, nequam esse simularit. Piso autem alio quodam modo gloriatur se brevi tempore perfecisse, ne Gabinius unus omnium nequissimus existimaretur.


Où on utilise #MARQUEUR# comme marqueur de découpage.

Ensuite, tu peux faire un truc du genre (non testé)
Code PHP :
function decoupeTexte($texte, $apercu=false){
    if($apercu && strpos($texte, '#MARQUEUR#')!==false){
        return substr($texte, strpos($texte, '#MARQUEUR#')).'[...]';
    }else{
        return str_replace($texte, ''. '#MARQUEUR#');
    }
}
mercredi 31 août 2011 à 09:00:15 | Re : Onglet Actualité en php

kohntark

Membre Club
@JulSoft:
C'est clair, c'est la meilleure solution lorsqu'il s'agit de rédacteurs "avertis" (propriétaire du site par exemple), ce qui est le cas ici. Pour les commentaires d'utilisateurs lambda c'est une autre histoire.


En comptant le nombre de "br" me direz vous


Oui ^^

mais en imaginant qu'une phrase peut passer à la ligne pcq la largeur de conteneur du texte est dépassée, comment s'en rendre compte et donc compter une ligne de plus ?


Justement, pour moi le nombre de lignes n'est pas l'essentiel : qu'un début d'article soit sur 4 lignes, un autre sur 7, un autre sur 6 me parait d'ailleurs plus élégant qu'un conteneur de hauteur fixe avec des textes tronqués (coupure dans un mot par exemple)
Après, dans le cas que tu cites, je disais "accompagné d'un nombre mini de caractères" :
Dans la plupart des cas la largeur des conteneurs sera la même pour tous les articles, en comptant le nombre de caractères et le nombre de lignes on peut s'attendre à des hauteurs de conteneurs sensiblement identiques.
On peut également compter le nombre de mots et de paragraphes en appliquant des contraintes en nb de caractères, en réduisant le nombre de <br /> successifs, etc ...

Par ailleurs, comme je le disais on peut utiliser wordwrap(). Suffit alors de compter le nombre de retourne à la ligne après l'application de cette fonction pour connaitre le nb de lignes "exactes".

c'est pour les "..." ?


Je parlais simplement des 3 petits points à la fin du texte pour indiquer qu'il y a une suite :

texte d'origine :
Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore
et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris

texte "lire la suite" :
Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor ...


Menfin, une fois de plus il y a plein de façons de faire qui sont très dépendantes du contenu, du design, ... selon le cas telle ou telle méthode donnée ici sera meilleure que les autres.

Cordialement,



Kohntark -

1 2

Cette discussion est classée dans : fonction, php, onglet, aussi, actualité


Répondre à ce message

Sujets en rapport avec ce message

PHP et Javascript [ par romagnoli64 ] Bonjour à tout le monde! J'espère que vous pourrez m'aider!! Voilà mon problème, j'ai un fichier "test.php3", dans lequel une fonction en Javascript e Lien vers une fonction php [ par Daniel-J ] Je cherche à faire un lien qui ne mène vers rien!!juste qui lance une fonction php!!!puis une autre question, savoir comment émuler le clic sur le bou génération d'une page php par php [ par Vapula ] Bonjour à tousJe souhaiterais générer une page php grâce à une fonction php , mais le problème est que la fonction envoie bien le code html, et php SA Fonction PHP [ par jbrek ] Y a t il un fonction PHP qui remplace les par des ???merci d'avance... Syntaxe pour mettre une lettre en majuscule [ par Warwick ] Bonjour à tous, j'ai une question, j'aimerais savoir quelle est la syntaxe pour mettre une lettre en majuscule en Php.Faut t-il écrireucfirst($variabl SPLIT [ par fatNugly ] y'a t'il une fonction en php qui fait la meme chose que la fonction split en vb soitune fonction a laquelle on donne le nom du string ansi que le cara ajout fonction php [ par jym750 ] Salut, j ai inseré un script de moteur de recherche du style :$url = "../repertoire/";$url = "../livres/";$url = "../tableau/";$ext = "php3";Une fois probleme avec mes fonctions [ par ludlu ] j'ai une fonction qui ne s'execute pas! si qq peut m'aider.voici le code source:function verif_session(){session_start();if(!session_is_registered("gc Envoyer un mail() [ par amosc ] Salut tout le monde;Je n arrive pas a envoyer un mail en php j ai ecrit la fonction de cette facon :mail("Amos93@lbn.com","sujet","test");et on me ren


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales