Mysql: select(afficher) une partie d'1 champ

Fermé
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 - 12 avril 2010 à 23:22
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 - 13 avril 2010 à 22:42
Dans une base , j'ai une table avec un champ "texte", j'utilise pour communiquer avec la base, pour sélectionner et afficher le contenu du champ j'utilise cette requête:

$sql = 'SELECT * FROM 'table'  LIMIT 0,5';
$req = $pdo->query($sql);
$req->setFetchMode(PDO::FETCH_OBJ);

while($news = $req->fetch()) {
	echo $news->texte;


Le problème est que cela m'affiche le contenu entier de ce champ pour chaque enregistrement, mais ce que je veux c'est qu'il n'affiche qu'une partie de ce champ pour chaque enregistrement (par exemple les 100 premiers caractères)

Veuillez m'aider

Merci d'avance


7 réponses

birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 15
Modifié par birdsfly le 13/04/2010 à 22:46
Merci à tous,
avec SELECT * , substr(texte, 1, 100) as machin FROM Nouvelle ... ça a marché, elle m'affiche le contenu du champ "texte" du 1er au 100ème caractère, et avant de me proposer cette solution j'ai essayé de récupérer le champ complet avec :

SELECT * FROM 'nouvelle'

et j'ai appliqué "substr" à l'affichage:

echo substr($news->texte,0, 100);

Je pense que vous avez remarqué que j'ai mis 0 à la place de 1, car avec:

echo substr($news->texte,1, 100);

il affiche le contenu à partie du 2ème caractère, chose que je ne comprend pas; mais je pense que c'est comme ça, à l'intérieur d'une requête on met 1 et à l'extérieur on met 0 (si on veut afficher à partir du 1er caractère) ;)

Et merci encore ^^

"La haine est la voix de celui qui a laissé la souffrance planter son drapeau aisément sur son encéphale"
3
Salut,

Je suis pas très fort en MySQL mais essaye donc avec

$sql = "
SELECT id -- et autres colonnes dont tu aurais besoin
, substr(champ, 1, 100) FROM 'table' LIMIT 0,5
";
0
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 15
12 avril 2010 à 23:50
J'ai essayé en ajoutant substr(texte, 1, 100) à la requête, mais au lien d'afficher une partie elle n'affiche rien, la page est vide et même les autres champs que texte ne sont pas affichés :(
0
si tu tapes cette requête dans ton interpreteur MySQL, que se passe-t-il ? car à te lire, on ne sait pas si c'est MySQL ou php qui n'écrit rien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
birdsfly Messages postés 240 Date d'inscription mercredi 20 mai 2009 Statut Membre Dernière intervention 11 octobre 2013 15
13 avril 2010 à 00:24
au fait, ça n'affichais rien par ce que j'ai oublié le ,

alors dans l'interpreteur MySQL, lorsque j'ai tapé:

SELECT * , substr(texte, 1, 100) FROM 'nouvelle' WHERE statut=\'valid\' ORDER BY id desc

Cela a affiché les enregistrements demandés mais avec le champ texte complet.

J'ai essayé la même requête avec ma page php, et cela affiche le champ complet
0
désolé de t'avoir mal aiguillé :-(

dans le manuel de MySQL(là), on lit :
SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len)

Retourne une chaîne de len caractères de long de la chaîne str, à partir de la position pos. La syntaxe ANSI SQL92 utilise une variante de la fonction FROM :

mysql> SELECT SUBSTRING('Quadratically',5);
        -> 'ratically'
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
        -> 'barbar'
mysql> SELECT SUBSTRING('Quadratically',5,6);
        -> 'ratica'


=> refais donc ton test avec SUBSTRING au lieu de SUBSTR
0
Bonjour

Bien que ça ne se voie pas dans le manuel, SUBSTR a l'air d'être équivalent à SUBSTRING. Je viens de faire l'essai.

Le problème, avec SELECT * , substr(texte, 1, 100) c'est que tu as essayé de récupérer le champ 'texte' (complet) rendu par *, alors qu'il te fallait le résultat du substr. utilise un alias pour ça :
SELECT * , substr(texte, 1, 100) as machin FROM Nouvelle ...
et récupère le champ 'machin'
0
Ça m'étonnait que ça ne soit pas dans la doc. Ça y est bien, mais dans l'original, pas dans la traduction
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_substr
0