[php] script pour [Résolu/Fermé]

Signaler
-
 Maxime -
Bonjour,
Je me suis mis au php depuis quelques jours et je souhaiterais utiliser ce script sur la page actu de mon site (http://mouton1.free.fr/actualites.php).
Pour chaque news, je souhaiterais n'en afficher que quelques mots et mettre un lien "lire la suite".
J'ai trouvé ce code sur ce site :
//fonction limitation de mots 
function debutchaine($chaine, $nbmots) { // 1er argument : chaîne - 2e argument : nombre de mots 
$chaine = preg_replace('!<br.*>!iU', "", $chaine); // remplacement des BR par des espaces 
$chaine = strip_tags($chaine); 
$chaine = preg_replace('/\s\s+/', ' ', $chaine); // retrait des espaces inutiles 
$tab = explode(" ",$chaine); 
if (count($tab) <= $nbmots) { 
$affiche = $chaine; 
} else { 
$affiche = "$tab[0]"; 
for ($i=1; $i<$nbmots; $i++) { 
$affiche .= " $tab[$i]"; 
} 
} 
$affiche .= ' <a href="http://www.site.com/page_suite.php">[Lire la suite]</a>'; 
return $affiche; 
} 

$mots_complets = 'salut sa va bien je suis un super pote a toi on rigole tou le temp c tro dorle comme on ce marre c bien le stage ouai sa va encore c pa mal mais bon c pa tt le temp marran oui mai comme dans la vrai vie tu sais on fai pa tout le temps ce quon veu sa serait telllement rigolo sinon ahahahahahahahahahaha bebebebebebebebeeb cececececececececececec'; //data événement 
$nb_mots = 150; 
$mot_courts = debutchaine($mots_complets, $nb_mots); 
echo $mot_courts; 
Pour ce qui est de l'affichage d'un nombre defini de caractères, ca fonctionne très bien mais je ne sais pas comment afficher la suite du texte.
Que mettre comme code sur page_suite.php ?
Merci d'avoir lu mon message.

10 réponses

Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
oula !
un peu trop compliqué pour un truc très simple...
tout d'abord ou se trouve ton texte ? dans une base de données, dans un tableau en php ?
S'il ets en HTML, il faut tout faire à la main, à savoir couper le texte, et faire un lien vers "lire la suite"

si ton texte est ds une variable php, c'est tout simplement :
echo substr($variable,0,n)." ...<a target=_blank href='tonlien'>Lire la suite</a>";
Mon texte est dans une base de données.
J'ai essayé de récupérer les variables par une URL sur une autre page (methode GET) mais je n'y suis pas arrivé...
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
ok
c'est une base de données SQL ?
as-tu accès à ta BD ?
comment se nomme-t-elle ?
connais-tu le langage MySQL ?
Tout d'abord merci d'avoir repondu à mon message.
Oui c'est une base de données SQL (mon site est hébergé sur free), et oui j'y ai accès.
Ma BDD se nomme donc mouton1 et les variables que je veux recupérer sont dans la table "news".
Pour ce qui est du langage MySQL j'ai simplement lu le tutoriel du siteduzéro il y a quelques jours.
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
je te donne le code pour lire ta BD (si tu ne sais pas le faire) :

$conn=mysql_connect('localhost',' USER de ta BD ',' MOT DE PASSE du USER ');
mysql_select_db(' NOM de la BD ',$conn);

$q = "SELECT champs FROM news WHERE condition";
$r = mysql_query( $q , $conn);

$i=0; // index de ligne pour envoyer le n° de ligne en variable GET
while ($L = mysql_fetch_array($r))
{ $champ1 = $L['champ1'];
$champ2 = $L['champ2'];
...
echo substr($champ1,0,40)." ... <a href='liresuite.php?i=".$i." '>Lire la suite ...</a>"; // affiche les 40 premiers caractères de ton champ1

$i++;
}
Merci mais je ne sais pas si tu as bien compris ma question ^^ (à moins que ça soit moi qui n'ai rien compris ;-)
Si tu regardes ma page (mouton1.free.fr/actualites.php), j'ai bien réussi à n'afficher qu'un certain nombre de mots de mes news à l'aide d'un script que j'ai chopé sur le net, ce que je n'arrive pas à faire c'est à afficher la totalité de la news lorsqu'on clique sur "lire la suite".
Merci de ton attention
Messages postés
162
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
7 février 2010
16
Salut,

"Lire la suite" est un lien vers un autre (ou le même, c'est toi qui voit) script php qui aura le même genre de code, sauf que tu n'y appliques pas la fonction "debutchaine".

Ceci est le contenu limité à 150 caractères sur ma page "page.php", tatata[...]
...Lire la suite...
avec lire la suite ta balise a qui peut renvoyer vers la même page avec "page.php?complet=", et sur page.php :
<?php if(isset($_GET['complet'])){
//affichage sans la fonction debutchaine
}
else{
// ton affichage que tu as déjà réussi avec la fonction debutchaine
}


Tu arrive à faire le dur et pas le plus simple : ne pas modifier ta variable ?!?
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
ah ok !
en effet, c'est très simple !
tu as fait le plus dur !...

tu as compris avec le paramètre passé en GET ?
Je ne savais pas qu'on pouvait passer la variable en GET de cette manière. (j'utilise le php que depuis 5 jours, excusez-moi ;-)
Là ca marche presque, sauf que quand on clique sur "lire la suite", ça affiche tous les messages (en entier) les uns à la suite des autres. Je comprends donc qu'il faut enlever la boucle pour n'en afficher qu'un, mais comment faire pour que ca soit uniquement celui qu'on veut ?
merci ^^
Messages postés
153
Date d'inscription
mercredi 31 décembre 2008
Statut
Membre
Dernière intervention
12 septembre 2009
21
$k=0;

if (isset($_GET['xxx']))
{ // test existence du message dans la BD
si oui : $k=1; affichage du contenu DU message
}
if ($k==0)
{ boucle avec tous les messages
}


il y a plein d'autres méthodes, c'en est une ...