inserer un retour à la ligne dans un champ mysql

BaLiSTiK
Invité n'ayant pas de compte PHPfrance

27 juin 2006, 11:03

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

Eléphant du PHP | 95 Messages

27 juin 2006, 11:14

\t\n si mes souvenirs sont bons... je crois en effet me souvenir d'un post sur le sujet dans ce forum.

Invité
Invité n'ayant pas de compte PHPfrance

27 juin 2006, 11:26

$_POST["qu"] = eregi_replace ("<","\t\n[ ",$_POST["qu"]);
de cette façon? ou alors autre chose?

Eléphant du PHP | 398 Messages

27 juin 2006, 12:29

j ai essayé comme ça et ce n est toujours pas ça :/

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 juin 2006, 12:38

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 />

Eléphant du PHP | 398 Messages

27 juin 2006, 13:04

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 ^^.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 juin 2006, 13:38

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>
<? } ?> 

Eléphant du PHP | 398 Messages

27 juin 2006, 13:46

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 ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 juin 2006, 13:50

Yapadkoi :)