PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 12-12-2009 15:42:23

mary11
Membre
Inscription : 12-12-2009
Messages : 4

Formulaire php: Problème d'affichage du texte

Bonjour à tous !
Dans mon formulaire (mon textaera) lorsque j'écris un paragraphe trop long, cela défigure ma page graphique. J’ai lu un peu partout dans le forum mais en vain, j'ai beau mettre un nl2br ou encore un wordwrap ou les deux à la fois dans mon code rien y fait. Aussi je voudrai intégrer un anti spam à mon code car les spams on pourri ma page. Pouvez-vous m’aider svp ? voici mon code.  Je vous remercie.

if($posted)
{

if(!empty($pseudo) AND !empty($email) AND !empty($pays) AND !empty($message))
{

$pseudo = trim(ucfirst(addslashes($pseudo)));
$email = trim(addslashes($email));
$pays = trim(ucfirst(addslashes($pays)));
$message = trim(ucfirst(addslashes($message)));

$insert = "INSERT INTO chatt VALUES('','$pseudo','$email','$pays','$message','$date') ";
$query = mysql_query($insert) OR die(" Impossible d’ajouter le message ! ");

echo '<script>';
echo 'alert(" message transmis avec succès !");';
echo '</script>';
}

}
?>


<table width="550px" height="100%" ><tr><td>
<?php
if(!$start) {$start=0;}
$rec = mysql_query("SELECT * FROM chatt Order by id Desc LIMIT $start,$nb");
while ($row = mysql_fetch_array($rec))

{

    echo '<table bgcolor="#ffffff"  width="100%" id="cont">'."\n";

echo '<tr>';
        echo '<td align="center" bgcolor="#e2e2e2"><b><FONT COLOR="#40bde8">Posté par :</FONT></b>  '.htmlentities($row['pseudo']).'</td>';
        echo '</tr>'."\n";
       
        echo '<tr>';
        echo '<td bgcolor="#f7e90f"><b><FONT COLOR="#ffffff">Date et heure :</FONT></b> '.$row[date].'</td>';
        echo '</tr>'."\n";
       
       
        echo '<tr>';
        echo '<td bgcolor="#e2e2e2"><b><FONT COLOR="#40bde8">Pays :</FONT></b>  '.htmlentities($row['pays']).'   <b><FONT COLOR="#40bde8">Email : </FONT></b>  <a href="mailto:">'.$row['email'].'</a></td>';
echo '</tr>'."\n";
        echo '<tr>';
echo '<td align="justify" id="mess" ><b><FONT COLOR="#32CD32">Message :</FONT></b>  '.wordwrap(htmlentities($row['message'])).'</td>';
        echo '</tr>'."\n";

    }
echo '</table>'."\n";

?>

<?php

mysql_free_result($rec);

$result=mysql_query("SELECT COUNT(*) FROM dchatt");
$row=mysql_fetch_row($result);



if ($start == "0") {
echo"<b><font size=\"1\" face=\"Verdana\">[1]</font></b>";
} else {
echo"<a href=\"info.php?start=0\">[1]</a> ";
}
for($index=1;($index*$nb)<$row[0];$index++) {
$pg = $index+1;
if(($index*$nb)!=$start) {
print("<a href=\"info.php?start=".($index*$nb)."\">");
echo"[$pg]";
print("</a>");
}
else {
echo" <b><font size=\"1\" face=\"Verdana\">[$pg]</font></b>";
} }
?>

<form  action="<? echo $PHP_SELF ?>" method="POST" onSubmit="return testform(this.pseudo,this.email,this.pays,this.message)">
<input type="hidden" name="posted" value="1">

<table cellspacing="0" cellpadding="0" >
<table align = "center" >

             <tr>
                <td ><font color="#40bde8">Nom :</font></td> 
                <td ><input class="champ" name="pseudo" size="20" maxlength="40"></td> 
            </tr> 
            <tr> 
                <td><font color="#40bde8">Email :</font></td> 
                <td ><input class="champ" name="email" size="20"></font></td> 
            </tr>
           
               <tr> 
                <td><font color="#40bde8">Pays :</font></td> 
                <td ><input class="champ" name="pays" size="20"></font></td> 
            </tr>
</fieldset>
        </table>


            <tr> 
                <td colspan="2" align = "center">
                <fieldset><p><legend><font color="#32CD32"><B><I>--Écrire votre message--</I></B></font></legend></p>
                   <textarea  name="message" rows="4" cols="50"></textarea> 
                    <br><br> 
                    <p align = "center"><input type="Submit"  value="Poster">
                         
<input type="reset" value="Annuler"/></p>
</td> 
            </tr>
            <tr><td>  </td> </tr>
        </table> 

</form>
</td></tr></table>

Hors ligne

#2 12-12-2009 18:05:44

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Formulaire php: Problème d'affichage du texte

Il se peut que cela vienne de htmlentities.
Cette fonction convertit les entités html par un codage plus long (voir exemple). Or le retour à la ligne ne peut se faire sur des espaces insécables ou bien au beau milieu d'une série de terme.

<?php
$str = 'Un \'apostrophe\' en <strong>gras</strong>';

// Affiche : Un 'apostrophe' en <strong>gras</strong>
echo htmlentities($str);

// Affiche : Un 'apostrophe' en <strong>gras</strong>
echo htmlentities($str, ENT_QUOTES);
?>

Au final avec une telle fonction tu augmentes le nombre de caractères et réduit le nombre d'espaces. As-tu vraiment besoin d'une telle méthode ?

Hors ligne

#3 12-12-2009 23:58:42

mary11
Membre
Inscription : 12-12-2009
Messages : 4

Re : Formulaire php: Problème d'affichage du texte

Merci pour ta réponse !
j'ai enlevé le htmlentities mais ça ne change rien...En effet Ssi tu as une autre méthode à me proposer je suis ok...ça m'aiderai.
merci

Hors ligne

#4 13-12-2009 10:46:23

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Formulaire php: Problème d'affichage du texte

Pourrais-tu nous poster une image du résultat de l'affichage afin de nous guider vers le problème ?

Hors ligne

#5 13-12-2009 19:25:01

mary11
Membre
Inscription : 12-12-2009
Messages : 4

Re : Formulaire php: Problème d'affichage du texte

Bonjour !
J'ai finalement trouver ce qui n'allait pas en fait le problème venait de ma table, d'après ce j'ai pu lire sur le web, il fallait mettre dans la balise table echo '<table bgcolor="#ffffff" style="table-layout:fixed" width="100%" id="cont">'."\n"; aussi j'ai ajouté <textarea  name="message" rows="10" cols="45" style="word:wrap;overflow:auto"></textarea>. d'un point de vue codage je ne sais pas si c'est correct, mais toujours est-il que je n'ai plus ce problème d'affichage...Merci de m'avoir répondu...J'essaie maintenant néanmoins d'intégrer un captcha dans mon code, pour mon problème de spams...! si vous voulez bien m'aider...
Bonne journée

Hors ligne

#6 14-12-2009 08:53:36

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Formulaire php: Problème d'affichage du texte

Il existe des codes tout fait pour les catcha si tu cherches un peu. ^^

Hors ligne

#7 14-12-2009 21:09:30

mary11
Membre
Inscription : 12-12-2009
Messages : 4

Re : Formulaire php: Problème d'affichage du texte

Merci j'en ai trouvé un !

Hors ligne

Pied de page des forums