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

birdsfly Messages postés 253 Statut Membre -  
birdsfly Messages postés 253 Statut Membre -
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



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

7 réponses

  1. birdsfly Messages postés 253 Statut Membre 15
     
    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
  2. fiu
     
    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
  3. birdsfly Messages postés 253 Statut Membre 15
     
    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
  4. fiu
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. birdsfly Messages postés 253 Statut Membre 15
     
    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
  7. fiu
     
    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
  8. le père
     
    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