Limiter le nombre de caractères à l'affichage

Pascal
Invité n'ayant pas de compte PHPfrance

19 juin 2005, 17:12

Bonjour,

Dans cette ligne de code :
$select = "SELECT date,nom,titre,commentaire FROM ma_table ORDER BY date DESC LIMIT 10";
Je souhaite afficher les 100 premiers caractères du champs "commentaire".
J'ai modifié comme ci-dessous, mais ça ne fonctionne pas.
$select = "SELECT date,nom,titre,CONCAT(SUBSTRING_INDEX(commentaire,' ',100),' . . .') FROM ma_table ORDER BY date DESC LIMIT 10";
Merci de votre aide svp,
à bientôt
Pascal

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 juin 2005, 16:03

oulà ça a l'air bien compliqué :)
$select = "SELECT date,nom,titre,SUBSTRING(commentaire,1,100) FROM ma_table ORDER BY date DESC LIMIT 10";
dis-nous ce que ça donne avec cette requête

édition : sinon tu peux aussi faire ça en PHP avec printf ou sprintf
Modifié en dernier par ouckileou le 22 juin 2005, 23:52, modifié 1 fois.

Pascal
Invité n'ayant pas de compte PHPfrance

22 juin 2005, 20:15

Bonsoir et merci pour ta réponse, mais ça ne fonctionne pas.

Ci-dessous le script complet :
<?
//connection à la base
include("dossier/conf.php");

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'enregistrements dans la table et les recupere
$select = "SELECT date,nom,titre,SUBSTRING(commentaire,1,100) FROM ma_table ORDER BY date DESC LIMIT 10";
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

// Affichage du résultat.
if($total) {
    // debut du tableau
        echo '<table>'."\n";
        echo '<tr>';
        echo '<td>Commentaire</td>';
        echo '</tr>'."\n";
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td>'.$row['date'].''.$row['titre'].'<br>'.$row['commentaire'].'<br>'.$row['nom'].'</td>';
        echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// Liberation du resultat
mysql_free_result($result);
?>
Je vais également consulter le lien que tu me fournis.
A bientôt

Pascal
Invité n'ayant pas de compte PHPfrance

22 juin 2005, 20:26

En fait, je ne souhaite pas extraire x caractères d'un mot mais un nombre défini, par exemple les 100 premiers caractères, du contenu textuel d'un champs de table dans une base mysql.

:)

ViPHP
ViPHP | 1024 Messages

22 juin 2005, 20:35

Dans ton code de lecture de l'enregistrement, l'élément $row['commentaire'] n'existe pas.

dans la requete, il faut le creer via un alias de résultat:
$select = "SELECT date,nom,titre,SUBSTRING(commentaire,1,100) AS commentaire FROM ma_table ORDER BY date DESC LIMIT 10"; 
et maintenant cet élément existe.

A+

Pascal

Pascal
Invité n'ayant pas de compte PHPfrance

22 juin 2005, 22:51

Ah, évidemment !... Maintenant ça fonctionne ! Merci à toi, je vais regarder ça de plus près dans les tutoriaux afin de mieux comprendre.

A bientôt sur PHPFrance :D