Limiter caractères affichés

Protanim
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 306
Inscription: 2 Avr 2005

Limiter caractères affichés

Message le Lun Mai 08, 2006 20:45

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é
WRInaute impliqué
 
Messages: 637
Inscription: 19 Sep 2005

Message le Lun Mai 08, 2006 21:47

Code: Tout sélectionner
SELECT SUBSTRING(le_champ_texte,1,le_nom_de_caractere) AS extrait FROM table


Ca devrait marcher.

Protanim
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 306
Inscription: 2 Avr 2005

Message le Lun Mai 08, 2006 21:54

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: Tout sélectionner
$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é
WRInaute impliqué
 
Messages: 637
Inscription: 19 Sep 2005

Message le Lun Mai 08, 2006 22:01

Code: Tout sélectionner
$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
WRInaute occasionnel
 
Messages: 496
Inscription: 24 Nov 2002

Message le Lun Mai 08, 2006 22:06

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é
WRInaute impliqué
 
Messages: 637
Inscription: 19 Sep 2005

Message le Lun Mai 08, 2006 22:09

scores a écrit: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
WRInaute occasionnel
 
Messages: 306
Inscription: 2 Avr 2005

Message le Lun Mai 08, 2006 22:11

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é
WRInaute impliqué
 
Messages: 637
Inscription: 19 Sep 2005

Message le Lun Mai 08, 2006 22:15

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: Tout sélectionner
$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 '';
}

Protanim
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 306
Inscription: 2 Avr 2005

Message le Mar Mai 09, 2006 5:41

J'ai un soucis, le texte ne s'affiche plus du tout :(

Protanim
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 306
Inscription: 2 Avr 2005

Message le Dim Mai 14, 2006 19:54

up

Jaunalgi
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 303
Inscription: 11 Aoû 2004

Message le Dim Mai 14, 2006 21:21

Protanim a écrit:J'ai un soucis, le texte ne s'affiche plus du tout :(


Remplace
substr(0,strrpos($r,' '))
par
substr($r,0,strrpos($r,' '))
dans le code que Bourriquet t'a donné.

Protanim
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 306
Inscription: 2 Avr 2005

Message le Dim Mai 14, 2006 21:32

Merci c'est parfait !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités