Page 1 sur 1

inserer un retour à la ligne dans un champ mysql

Posté : 27 juin 2006, 11:03
par BaLiSTiK
Bonjour, j ai un petit soucis mais qui m'embete un peu.
J'ai fais un 'tit formulaire afin de quoter des extrait d'IRC (comme le site bashfr.org) et le soucis est que je cherche a faire un retour à la ligne.

exemple :
je rentre dans mon formulaire ceci :
<perso1>salut
<perso2>ça va?

ça m affichera : [ perso1] salut [ perso2 ] ça va?

mon script d insertion :
$con = mysql_connect("sql.free.fr","login","pass");
mysql_select_db("login", $con);
$_POST["qu"] = eregi_replace ("<","[ ",$_POST["qu"]);
$_POST["qu"] = eregi_replace (">"," ] : ",$_POST["qu"]);

$quote = $_POST["qu"];
$blaze = $_POST["bl"];
$insert = "INSERT INTO `quote`(`blaze`, `quote`) VALUES('".$blaze."','".$quote."')";
mysql_query($insert) or die(mysql_error());
mysql_close();
donc script tt simple. J ai essayé en intégrant une balise <br> dans le 1er eregi_replace mais rien. Essayer avec un "\n" et idem.
la je suis un peu a court d'idée pour inserer un saut de ligne entre chaque phrase.
merci

Posté : 27 juin 2006, 11:14
par Ben-J
\t\n si mes souvenirs sont bons... je crois en effet me souvenir d'un post sur le sujet dans ce forum.

Posté : 27 juin 2006, 11:26
par Invité
$_POST["qu"] = eregi_replace ("<","\t\n[ ",$_POST["qu"]);
de cette façon? ou alors autre chose?

Posté : 27 juin 2006, 12:29
par BaLiSTiK
j ai essayé comme ça et ce n est toujours pas ça :/

Posté : 27 juin 2006, 12:38
par Ryle
le \n est normalement suffisant dans mysql pour générer un retour à la ligne (le \t place juste une tabulation devant en plus)

Ton code devrait donc fonctionner :
$_POST["qu"] = eregi_replace ("<","\n[ ",$_POST["qu"]); 
(s'il te remplace le < par [, y a pas de raison qu'il ne mette pas le \n devant :))

En revanche si tu veux afficher le résultat dans une page html, il te faut faire un nl2br pour remplacer les \n de mysql par des <br />

Posté : 27 juin 2006, 13:04
par BaLiSTiK
le \n est normalement suffisant dans mysql pour générer un
En revanche si tu veux afficher le résultat dans une page html, il te faut faire un nl2br pour remplacer les \n de mysql par des <br />
ça met bien à la ligne dans le champ de la BDD. Comme tu disais il faut faire le nl2br, mais la j avoue que je saisi pas trop :/

mon script pour afficher le contenu de la table :
<?php
$con = mysql_connect("sql.free.fr","login","pass");
mysql_select_db("login", $con);
$sql = "select * from quote order by id_quote desc";
$req = mysql_query( $sql );
while($tab = mysql_fetch_assoc($req)){
?>
<table width=400 border="0" cellspacing="0" cellpadding="0">
  <tr><td background="http://balistik35.free.fr/bordel/images/menu.jpg">
<?php
echo '<b>Numero de quote :</b> '.$tab["id_quote"].' <b>posté par </b><i>'.$tab["blaze"].'</i><br> </tr>';
echo '<TR><TD BGCOLOR="#d8dde7" bordercolor="#d8dde7"?>'.$tab["quote"].'</TD></tr></table><br>';
} 
?>
j ai inséré des balise de tableau pour faire un affichage un peu special ^^.

Posté : 27 juin 2006, 13:38
par Ryle
Y a pas de soucis pour le tableau, il te suffit juste de remplacer ton $tab["quote"] par nl2br($tab["quote"]) pour qu'il remplace les retours à la ligne de la base par des <br> html :)

Celà dit, tu ne devrais mettre du php que là où c'est vraiment nécessaire, ça allegerait ton code et en simplifierait la lecture :) (en l'indentant en plus tu verrais par exemple qu'il manque un </td>, et qu'il y a un ? en trop qui traine dans une balise ;))

Suggestion :
<? while($tab = mysql_fetch_assoc($req)) { ?> 
<table width=400 border="0" cellspacing="0" cellpadding="0"> 
  <tr>
    <td background="http://balistik35.free.fr/bordel/images/menu.jpg"> 
      <b>Numero de quote :</b> <?php echo $tab["id_quote"]; ?> 
      <b>posté par</b> <i><?php echo $tab["blaze"]; ?></i><br>
    </td>
  </tr>
  <tr>
    <td BGCOLOR="#d8dde7" bordercolor="#d8dde7">
      <?php echo nl2br($tab["quote"]); ?>
    </td>
  </tr>
</table>
<br>
<? } ?> 

Posté : 27 juin 2006, 13:46
par BaLiSTiK
pour le ? en plus javais remarqué :D
j ai bien mis le nl2br a l endroit indiqué et ça marche nickel =), apres j ai juste un ti reglage dans l affichage et ça sera nickel.
thanks ;)

Posté : 27 juin 2006, 13:50
par Ryle
Yapadkoi :)