PHP -Problème retraitement données Mysql avant envoit dans un tableau array

WRInaute discret
Bonjour,

Je rencontre un problème que je n'arrive pas à gérer.

Suite à une requête Mysql, je récupère une série de données.

Parmi ces données, j'ai une colonne titre qui peut parfois être vraiment très longue. Je souhaite donc limiter le nombre de caractères de "titre" avant de l'envoyer dans un array...

Tout ça sans succès bien sur.

Voici la partie du code concernée ci dessous. Pour info il fonctionne dans le sens ou j'arrive bien à récupérer toutes les données de ma requête dans un array ... par contre la partie de retraitement sur la colonne 'titre' est sans effet.
Code:
$data = array();
$lg_max = 50; //nombre de caractère autoriser
while($col = mysql_fetch_array($result)){
if (strlen($col['titre']) > $lg_max){
$col['titre'] = substr($col['titre'], 0, $lg_max);
$last_space = strrpos($col['titre'], " ");
$col['titre'] = substr($col['titre'], 0, $last_space)."...";} 
$data[] = $col;}
 
WRInaute passionné
Salut, peut être est-ce parce que le nom de ta colonne n'est pas 'titre' mais 'Titre' ou 'TITRE'.
Vérifie dans ta table MySQL, et si tu utilises la forme exacte du nom dans ton code PHP normalement ça fonctionne bien.
Il y aurait une autre explication, si tu sélectionnes tous les champs de plusieurs tables et qu'il y ait donc deux ou plusieurs 'titre' dans ce cas c'est le dernier qui est dans $col['titre'] et s'il est vide tu n'aurais rien... Dans ce cas la solution c'est d'utiliser des alias dans ta requête ou bien comme tu as fait d'utiliser l'index numérique (d'ailleurs tu n'as pas besoin de mettre les ' autour du 0)
 
WRInaute discret
FortTrafic a dit:
Il y aurait une autre explication, si tu sélectionnes tous les champs de plusieurs tables et qu'il y ait donc deux ou plusieurs 'titre' dans ce cas c'est le dernier qui est dans $col['titre'] et s'il est vide tu n'aurais rien...
Normallement MySQL renvoit une erreur dans ce cas. Nom de colonne ambigue.
 
WRInaute passionné
Uniquement si tu mets un nom de colonne dans la requete, pas si tu fais un select * ou si tu prefixes les noms de colonne identiques avec le nom de leur table (table1.titre, table2.titre, ...). Là MySQL ne dit rien.
 
Discussions similaires
Haut