Page 1 sur 1

Limiter le nombre de caractere d'un titre

Posté : 25 mars 2009, 18:54
par nemrod
Bonjour,

j'ai essayé de couper un titre avec ce bout de code, mais ca marche pas.
<?php
define('CONF_ONLY','1');
include('config.php');

@ $db = mysql_pconnect(DB_HOST,DB_USER,DB_PASS);
if(!$db) { echo 'Erreur de connexion'; exit; }

mysql_select_db(DB_DBASE);
$query =
' SELECT post_titre,post_titre_url,post_chapo,post_content,cat_id
FROM '.DB_PREFIX.'post
ORDER BY post_id DESC LIMIT 1';

$result = mysql_query($query);
$num_results = mysql_num_rows($result);

echo '<ul id=divune>';
for($i = 0 ; $i < $num_results ; $i++)
{
  $row = mysql_fetch_array($result);
  $date = explode(' ',$row['post_dt']);
  $date_slash = str_replace('-',' ',$date[0]);

$titre = '<li class="viole"><a href="/thematiques/index.php?'.$date_slash.''
  .$row['post_id'].''.$row['post_titre_url'].'" title="'
  .$row['post_titre'].'" class="BIGG"> '.$row['post_titre'].' </a></li>';

$titre_court = $titre ; 
$lg_max = 40; //nombre de caractères autorisés

if (strlen($titre_court) > $lg_max) 
{ 
$titre_court = substr($titre_court, 0, $lg_max); 
$last_space = strrpos($titre_court, " "); 
$titre_court = substr($titre_court, 0, $last_space)."..."; 
} 

echo $titre_court; 

}
echo '</ul>';
?>
Merci pour vos réponses.

moon

Posté : 25 mars 2009, 19:09
par julian
Il t'affiche quoi ?

Posté : 25 mars 2009, 19:10
par nemrod
il n'affiche que la puce <li>

En plus, il est lourd... on dirait que le code tarde à calculer :?

Posté : 25 mars 2009, 19:58
par julian
Il compte les 40 premiers caractères de la chaine, ce qui donne :
$titrecourt = '<li class="viole"><a href="/thematiques/';
Ensuite tu cherches le dernier espace et tu coupes là, donc au final tu obtiens :
$titrecourt = '<li class="viole"><a';
Je te conseille de compter le nombre de caractère de ton post_id et de le soustraire à ta longueur max.
Ensuite tu coupe ton post_titre en fonction de cette nouvelle longueur...

Posté : 26 mars 2009, 07:41
par nemrod
Merci Julian pour ta réponse,

Effectivement, j'avais remarqué que la coupe se fesait au niveau de la balise <a href... mais je ne sais pas vraiment comment faire pour afficher l'integralité du titre pour ensuite le couper ... :roll:

Posté : 26 mars 2009, 08:31
par furiouslol
Pourquoi vouloir absolument traiter ta chaine de caractère avec tout le html dedans ? Pourquoi ne pas traiter uniquement le contenu de $row['post_titre'] ?

Posté : 26 mars 2009, 09:34
par julian
Je te conseille de compter le nombre de caractère de ton post_id et de le soustraire à ta longueur max.
Ensuite tu coupe ton post_titre en fonction de cette nouvelle longueur...
:-*

Posté : 26 mars 2009, 16:58
par nemrod
Ouiiiii! c'est reglé ... Merci furiouslol et surtout Julian pour votre aide, effectivement, la solution etait juste là devant mes yeux ... peut etre que c'est la fatigue :?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]