|
| Didou91 | Posté le 25/10/2004 @ 17:45 |
Petit astucien
41 Messages
| Bonjour,
J'ai un petit probleme avec ma base de donnée mysql.
la base fonctionne bien mais le soucis est sur l'affichage.
En fait c'est un pote qui a creer la base (c'est un livre d'or), mais la partie "message" est en "tinytext" (donc limitée a 255 caracteres). Etant novice, j'ai consulté un peu partout sur le web mais je suis perdu.. j'ai modifié "tinytext" par "text" et meme par "longtext".
maintenant je peux rentrer plus de caracteres mais le probleme c'est que l'affichage ne se fait pas bien (il n'y a pas de retour auto a la ligne et donc le cadre qui affiche le message s'etend en longueur).
c'est dur d'expliquer... j'espere que vous comprendrez le probleme...
ma question est donc:
Comment faire pour que le texte s'affiche dans un cadre qui s'aggrandit (en vertical et non en horizontal)en fonction de la longueur du texte. (comme dans un forum par exemple)?
la modif se situe où ? dans la config de la base ou dans le fichier php ?
Merci d'avance pour votre aide.
|
| |
| |
| Publicité |
|
|
| nono21 | Posté le 25/10/2004 à 21:55 |
Petit astucien
162 Messages
| Bonsoir,
Il faut remplacer les sauts de ligne dans le texte par des balises <br /> qui produiront à l'affichage le saut de ligne
En php avec une expression régulière, si ton texte est dans la variable $message, ça donne :
$message=ereg_replace("\r?\n","<br />",$ai[message]);
voila, j'espère que c'est ça que tu cherches & que ça te sera utile |
| |
|
| Didou91 | Posté le 25/10/2004 à 23:20 |
Petit astucien
41 Messages
| Merci Nono21 pour ta reponse.
En fait, j'ai essayé ta manip mais elle marche pas pour mon probleme.
J'ai testé pleins de trucs trouvés ici et la sur le web, et maintenant j'arrive a ajouter un commentaire de plus de 255 caracteres dans mon livre d'or.
Par contre il me reste un petit souci... les retours a la ligne ne marche toujours pas.
par exemple si je tape ce message dans mon livre d'or il s'affichera comme ca:
Merci Nono21 pour ta reponse. En fait, j'ai essayé ta manip mais elle marche pas pour mon probleme. J'ai testé pleins de trucs trouvés ici et la sur le web, et maintenant j'arrive a ajouter un commentaire de plus de 255 caracteres dans mon livre d'or. Par contre il me reste un petit souci... les retours a la ligne ne marche toujours pas.
Bien sur je souhaiterai qu'il s'affiche comme il est tapé et non pas "a la suite" comme c'est le cas...
si vous avez des idées....
Merci.
|
| |
|
| Didou91 | Posté le 25/10/2004 à 23:27 |
Petit astucien
41 Messages
| Je rajoute ceci.... ca peut aider...
<?
require("config.inc.php3");
if($topic=='form')
{
echo "<center><font face=\"$face\" color=\"$color\" size=\"2\"><b>Ajouter votre message au Livre d'or</b></font></center><br>";
echo "<form method=\"POST\" action=\"$index"."$signe"."topic=poster\">\n";
echo "<input type=\"hidden\" name=\"topic\" value=\"poster\">\n";
echo "<center><input type=\"\" name=\"nom\" size=\"30\" value=\"votre nom\"></center><br>\n";
echo "<center><textarea name=\"message\" rows=\"12\" cols=\"36\" wrap=\"virtual\">Ecrivez votre message ici</textarea></center>\n";
echo "<center><input type=\"submit\" name=\"submit\" value=\"Ajouter le message ...\"></center>\n\n";
echo "</form>";
echo "<center><font face=\"$face\" color=\"$color\" size=\"2\"><b><a href=\"$index\"><< Retour au Livre d'or</a></b></font></center>\n";
echo "<hr size=1 width=\"310\">\n";
}
elseif($topic=='poster')
{
if(empty($nom) OR empty($message) OR $nom=='votre nom' OR $message=='Ecrivez votre message ici')
{
echo "<center><font face=\"$face\" color=\"$col_alert\" size=\"2\"><b>Champs incomplets!</b></center><br>\n";
echo "<center><a href=\"Javascript:history.back()\"><< Retourner au formulaire</a></font></center>\n";
}
else
{
$db = mysql_connect("$host", "$login", "$password");
mysql_select_db("$base",$db);
$date = date("d-m-Y");
$heure = date("H\hi");
$message = addslashes($message);
$nom = addslashes($nom);
mysql_query("INSERT INTO livre_tbl VALUES('','$nom','$message','$date','$heure')");
mysql_close();
Header("Location: $index");
}
}
else
{
$db = mysql_connect("$host", "$login", "$password");
mysql_select_db("$base",$db);
if($limit==''){ $limit = 0; }
$count_req = mysql_query("SELECT id FROM livre_tbl");
$count = mysql_numrows($count_req);
$comptage_req = mysql_query("SELECT * FROM livre_tbl ORDER BY id DESC LIMIT $limit, 10");
$comptage = mysql_numrows($comptage_req);
echo "<center><font face=\"$face\" color=\"$color\" size=\"2\"><b>$count messages | ";
echo "<a href=\"$index"."$signe"."topic=form\">Ajouter un message</a> | ";
echo "<hr size=1 width=\"$width\">\n";
$i=0;
WHILE($i!=$comptage)
{
$nom = mysql_result($comptage_req,$i,"nom");
$message = mysql_result($comptage_req,$i,"message");
$date = mysql_result($comptage_req,$i,"date");
$heure = mysql_result($comptage_req,$i,"heure");
$message = stripslashes(stripslashes($message));
$nom = stripslashes(stripslashes($nom));
echo "<center><div align=\"center\">\n";
echo "<table width=\"$width\" bgcolor=\"$bgcolor\">\n";
echo "<tr><td bgcolor=\"$bgtitre\"><font face=\"$potitre\" color=\"$cotitre\" size=2> <b>$nom</b></font> <font face=\"verdana\" size=\"1\">($date à $heure)</font></td></tr>\n";
echo "<tr><td><font face=\"$pomessa\" color=\"$comessa\" size=2><blockquote>$message</font></td></tr>\n";
echo "</table></div></center><br>\n\n";
$i++;
}
$pages = $count / 10;
$pages = floor($pages);
if($count>10)
{
$footer = "Pages: <a href=\"$index"."$signe"."limit=0\"><b>index</b></a>\n";
if($count==40){ $i = 1; }else{ $i = 0; }
$comptage = 10;
$page_num = 2;
WHILE($i!=$pages)
{
if($limit==$comptage)
{
$footer .= " | <b>$page_num</b>\n";
$comptage += 10;
$page_num++;
$i++;
}
else
{
$footer .= " | <a href=\"$index"."$signe"."limit=$comptage\"><b>$page_num</b></a>\n";
$comptage += 10;
$page_num++;
$i++;
}
}
}
$reste = $count - $limit - 10;
$reste_limit = $limit + 10;
if($reste<=0)
{
$reste = "Fin des messages";
$avant = "";
$apres = "";
}
else
{
$reste = "10 affichés - Reste ";
$reste .= $count - $limit - 10;
$avant = "<a href=\"$index"."$signe"."limit=$reste_limit\">";
$apres = "</a>";
}
if($count==0)
{
$reste = "Aucun message";
$avant = "";
$apres = "";
}
echo "<center><font face=\"$face\" color=\"$color\" size=\"2\">[$avant"."$reste"."$apres]</font></center><br>\n";
echo "<center><font face=\"$face\" color=\"$color\" size=\"2\">$footer</font></center>\n";
echo "<hr size=1 width=\"$width\">\n";
mysql_close();
}
?>
voila... |
| |
|
| nono21 | Posté le 26/10/2004 à 11:08 |
Petit astucien
162 Messages
| En fait je voulais dire
$message=ereg_replace("\r?\n","<br />",$message);
A utiliser juste avant l'affichage de la variable $message
Si quelqu'un tape un message dans ta textarea, en appuyant sur entrée ça fait un retour à la ligne qui sera stocké comme tel dans ta bdd
le code que je t'ai donné doit remplacer à l'affichage ces retours à la ligne par des <br />, (mais j'avais mal écrit le code, j'espère que maintenant ça va matrcher chez toi) |
| |
|
| Didou91 | Posté le 26/10/2004 à 11:36 |
Petit astucien
41 Messages
| Bonjour nono21[hello]
Maintenant CA MARCHE....[bigsmile]
Un grand MERCI pour ton aide [clindoeil]
Didou.
Modifié par Didou91 le 26/10/2004 11:43 |
| |
|
|
| Haut de la page |