Aller au contenu

Concaténation de mots


Sujets conseillés

Posté

Bonjour,

J'effectue le test suivant: via requête SQL, je récupère un certain nombre d'expressions contenues dans une bdd, puis concatène ce résultat dans une phrase.

L'affichage sur une page est correct. La phrase contient bien les mots, les uns derrière les autre.

Ma question concerne la visualisation du code source, une fois la page affichée. Les mots ne sont plus concaténés, mais les uns au-dessus des autres. Pourquoi ?

Voici le script:

$virg = 0;
$mysql->query("SELECT cle FROM cle ORDER BY RAND() LIMIT 10");
if ($mysql->num_rows() > 0)
{
while ($mysql->movenext())
{
if ($virg == 0) $phr .= $mysql->getfield("cle");
else $phr .= ",".$mysql->getfield("cle");
$virg += 1;
}

}
echo html_entity_decode($phr);

A l'affichage j'ai:

mot1, mot2, mot3, mot4

A l'affichage du source, j'ai:

mot1,

mot2,

mot3,

mot4

Ben pourquoi ?

Merci de vos réponses,

xpatval

Posté

L'affichage différent est "normal". Tu dois avoir des retours chariots qui ressortent dans le code source, que l'interpréteur HTML zappe (pour lui, seul un <br> est considéré comme un retour chariot).

La question reste en suspens : d'où viennent ces retours chariots ? Ton code n'en générant apparemment pas, il reste deux possibilités :

- Ils sont enregistrés en base

- ta fonction getfield() les génère.

Posté

Ca ne vient pas de la fonction, je viens de la vérifier.

Donc, de celle qui effectue l'insert des "mots" dans le bdd. Je suis en train de vérifier.

Autre chose, les "mots" ont été insérés à partir d'un csv. Cela peut-il venir de là ?

xpatval

Posté

S'ils étaient en fin de ligne (dernière colonne), c'est probablement dû à ça.

Tu peux les traiter avec un trim(), qui effacera les espaces et retours chariots (et autres caractères non-imprimables) en début et fin de chaîne.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...