Limiter caractères affichés

Protanim

WRInaute occasionnel
Bonjour,

Voila j'aimerais afficher sur une page que les X premiers caractères contenus dans une table renfermant du texte.

Que dois je mettre dans ma requete ?

Merci d'avance
 

Bourriquet

WRInaute impliqué
Code:
SELECT SUBSTRING(le_champ_texte,1,le_nom_de_caractere) AS extrait FROM table

Ca devrait marcher.
 

Protanim

WRInaute occasionnel
merci
En fait j'ai trouvé select left après maus je n'arrive pas à l'intrégrer dans ma requete.

Je voudrai qu'au lieu de m'afficher tout le contenu de "texte", il lm'affiche disons les 20 premiers caractères. je sais pas ou et comment mettre SELECT LEFT.

Code:
$result = mysql_query("SELECT id_news, titre, texte FROM news ORDER BY date_news DESC LIMIT 5"); 

while ($row = mysql_fetch_assoc($result)) { 
   foreach($row as $k => $r) { 
      if (!empty($r)) { 
         switch($k) { 
case 'id_news': 
echo '<a href="http://www.protection-des-animaux.org/actualites/archives-'.$r.'.html" class="liste_article_titre">';
            break; 
	 case 'titre': 
               echo '-&nbsp;'.$r.'</a><br />';
            break;
 case 'texte': 
               echo '<div class="liste_article_texte">'.$r.'</div><br />';
            break;
           default : 
 echo '';           
         } 

      } 
}
echo '';
}
 

Bourriquet

WRInaute impliqué
Code:
$result = mysql_query("SELECT id_news, titre, SUBSTRING(texte,1,20) as extrait FROM news ORDER BY date_news DESC LIMIT 5");

while ($row = mysql_fetch_assoc($result)) {
   foreach($row as $k => $r) {
      if (!empty($r)) {
         switch($k) {
case 'id_news':
echo '<a href="http://www.protection-des-animaux.org/actualites/archives-'.$r.'.html" class="liste_article_titre">';
            break;
    case 'titre':
               echo '-&nbsp;'.$r.'</a><br />';
            break;
 case 'extrait':
               echo '<div class="liste_article_texte">'.$r.'</div><br />';
            break;
           default :
 echo '';           
         }

      }
}
echo '';
}

Ca devrait fonctionner .
 

scores

WRInaute occasionnel
pourquoi tu ne limiterais pas au niveau de l'affichage php ?

if(strlen($post[texte]) > 50) {
$str_coupee = substr($post[texte], 0, 50);
$str_coupee .= "…" ;
echo "$str_coupee<br>";
}
 

Bourriquet

WRInaute impliqué
scores a dit:
pourquoi tu ne limiterais pas au niveau de l'affichage php ?

if(strlen($post[texte]) > 50) {
$str_coupee = substr($post[texte], 0, 50);
$str_coupee .= "…" ;
echo "$str_coupee<br>";
}

Ca marche aussi scores, mais dans l'absolu, c'est pas top, parce que tu fais envoyer à MySQL des données inutiles. Imagine que son text c'est un document de 400 pages, et qu'il veut juste le début.

Le mieux est de limiter les transfert de données aux seules données utilisables.

Mais encore une fois, c'est une solution qui marche ;)
 

Protanim

WRInaute occasionnel
Merci ça marche.
Par contre je viens de m'appercevoir que je dors debout, il y a un hic dans ce que je veux faire.

en fait il fudrait pas afficher les X premiers caractères mais les X premiers mots, je doute que ça soit possible.

Parce que la dans mes news, ça me coupe en plein milieu de mots... Ca le fait pas trop.
 

Bourriquet

WRInaute impliqué
Dans ce cas tu peux combiner la requête et couper plus ou moins en php cette fois, de manière à obtenir rapidement un mot coupé après un espace.

Code:
$result = mysql_query("SELECT id_news, titre, SUBSTRING(texte,1,20) as extrait FROM news ORDER BY date_news DESC LIMIT 5");

while ($row = mysql_fetch_assoc($result)) {
   foreach($row as $k => $r) {
      if (!empty($r)) {
         switch($k) {
case 'id_news':
echo '<a href="http://www.protection-des-animaux.org/actualites/archives-'.$r.'.html" class="liste_article_titre">';
            break;
    case 'titre':
               echo '-&nbsp;'.$r.'</a><br />';
            break;
 case 'extrait':
               echo '<div class="liste_article_texte">'.substr(0,strrpos($r,' ')).'</div><br />';
            break;
           default :
 echo '';           
         }

      }
}
echo '';
}
 

Discussions similaires

Haut