Problème avec apostrophe dans formulaire php

Fermé
Gérard 84 - 8 juil. 2007 à 21:59
wenijah Messages postés 72 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 26 janvier 2012 - 9 juil. 2007 à 10:01
Bonjour,

J'ai un problème d'apostrophe sur une de mes pages php, plus précisément avec un formulaire et une zone de texte. Lorque je saisis " j\'en " il s'affiche " j'en " mais lorsque je saisis " j'en " alors j'obtiens un message d'erreur.

Peut être saurez vous m'aider ?

Voici le code de la page :

<code><!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>

<?
//on recupere la config
include ("./connect.php");
$db=mysql_connect($serveur, $nom, $passe);
mysql_select_db($base, $db);



function EmailOK($mail_com)
{
return ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',$mail_com);
}

if($action == 'sent')
{
if(EmailOK($mail_com) AND !empty($nom_com) AND $nom_com<>'Nom' AND !empty($mail_com) AND $mail_com<>'Mail' AND !empty($commentaire) AND $commentaire<>'Commentaire')
{
// Empêcher l'utilisation du code HTML dans les champs
$mail_com=str_replace("<","",$mail_com);
$mail_com=str_replace(">","",$mail_com);
$nom_com=str_replace("<","",$nom_com);
$nom_com=str_replace(">","",$nom_com);
$commentaire=str_replace("<","",$commentaire);
$commentaire=str_replace(">","",$commentaire);


$dat_com=date("Y-m-d");
$heure_com=date("H:i:s");
$date_com=$dat_com.$heure_com;
//on insere les données dans la table
$db=mysql_connect($serveur, $nom, $passe);
mysql_select_db($base, $db);
$sql= "INSERT INTO comments VALUES ('', '$id', '$commentaire', '$date_com', '$nom_com', '$mail_com')";
mysql_query($sql) or die('Erreur SQL !' . $sql.'<br>' . mysql_error());
echo "<META HTTP-EQUIV='Refresh' CONTENT='0;URL=".$site_perso."news/comments/commentaire.php?id=".$id."'>";
}
else
{
echo "<TITLE>Erreur !</TITLE><body><table align='center' border='0' width='100%' height='100%'><tr><td align='center' valign='middle'><font size=3 face=arial><b>VEUILLEZ REMPLIR TOUS LES CHAMPS !</b><br><br><a href='javascript:history.go(-1);'>Retour</a></font></td></tr></table><br><br></BODY></HTML>";
}
}

//on compte le nbre de commentaire rattachés au lien
$sql = "SELECT count(*) FROM comments WHERE id='$id'";
$resultat = mysql_db_query($base, $sql);
$enr = mysql_fetch_array($resultat);
$nbcom=$enr[0];

if (!isset($mult))
{
$debut=0;
$mult=intval($nbcom/30);
if ($nbcom-30<=0)
{
$fin=$nbcom;
}
else
{
$fin=30;
}
}
else
{
if (isset($mult) and $mult>0)
{
$debut=$fin;
$fin=$debut+30;
}

if (isset($mult) and $mult==0)
{
$debut=$fin-1;
$fin=$nbcom;
}
}

$sql="SELECT * FROM comments WHERE id='$id' ORDER BY dat_com DESC LIMIT ".$debut.",".$fin;

//on envoie la requête
$req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'. mysql_error());

echo "<center>";
echo "<table width=\"550\" border=\"1\" bgcolor=\"#000000\" class=\"a1\" bordercolor=\"#2B2B2B\">";

while ($enr = mysql_fetch_array($req))
{
//remise en forme au format jj-mmm-aaaa
$tmp = explode("-",$enr['dat_com']);
$tmp[0] = intval($tmp[0]); //jour
$tmp[1] = intval($tmp[1]); //mois
$tmp[2] = intval($tmp[2]); //année
$date=$tmp[2]."-".$tmp[1]."-".$tmp[0];
$h=substr($enr['dat_com'],11,2);
$m=substr($enr['dat_com'],14,2);
$s=substr($enr['dat_com'],17,2);
$heure=$h.":".$m.":".$s;

echo "<font face=\"arial\" size=\"2\" color=\"#FFFFFF\">";
echo "<tr><td><font face=\"arial\" size=\"2\" color=\"#FFFFFF\">Posté par <a href=\"mailto:".$enr['mail']."\">".$enr['pseudo']."</a> le ".$date." à ".$heure."<br></font>";
echo "<font face=\"arial\" size=\"2\" color=\"#FF0000\"><p align=\"justify\">";
echo $enr['texte_com'];
echo "</font>";
}

echo "</table>";
echo "<br>";


$mult=$mult-1;

if ($debut<>0)
{
echo "<a href=\"".$siteperso."commentaire.php\"><img src=\"".$site_perso."news/comments/image/gauche_on.gif\" alt=\"début\" border=0></a>";
echo "   ";
}
if ($mult>=0)
{
echo "<a href=\"".$siteperso."commentaire.php?debut=".$debut."&fin=".$fin."&mult=".$mult."\"><img src=\"".$site_perso."news/comments/image/droite_on.gif\" alt=\"suivant\" border=0></a>";
}
echo "</center>";

?>
<title>Commentaires</title>
<LINK REL=stylesheet HREF="folder.css" TYPE="text/css">
</head>
<body bgcolor="#000000" text="#FF0000" link="#COCOCO" vlink="#COCOCO">


<?echo "<form action=\"".$site_perso."news/comments/commentaire.php?action=sent&id=".$id."\" method=\"POST\">";?>
<table bordercolor="#2B2B2B" align="center" border="1" cellpadding=0 cellspacing=0>
<tr>
<td>
<table border="1" width=550 cellspacing="0" cellpadding="0" bordercolor="#2B2B2B" bgcolor=black class="a1">
<tr>
<td align="center"><font size="2" color=FFFFFF>
<br>
<b>AJOUTER UN COMMENTAIRE</b></font>
<br><br>
<input type="text" size="25" name="nom_com" value="Nom" style="color:white;background-color:black">
<br><br>
<input type="text" size="25" name="mail_com" value="E-mail" style="color:white;background-color:black">
<br><br>
<textarea name="commentaire" cols="30" rows="7"style="color:white;background-color:black">Commentaire
A voir également:

6 réponses

Après un rapide survol:
$commentaire=str_replace("<","",addslashes($commentaire));
$commentaire=str_replace(">","",addslashes($commentaire));
0
Merci bien !
0
Par la même occasion, vous sauriez me dire pourquoi l'heure et la date des commentaires affichent : le 0-0-0 à 00:00:00 ?
0
 //remise en forme au format jj-mmm-aaaa
$tmp = explode("-",$enr['dat_com']);
$tmp[0] = intval($tmp[0]); //jour
$tmp[1] = intval($tmp[1]); //mois
$tmp[2] = intval($tmp[2]); //année
$date=$tmp[2]."-".$tmp[1]."-".$tmp[0];
$h=substr($enr['dat_com'],11,2);
$m=substr($enr['dat_com'],14,2);
$s=substr($enr['dat_com'],17,2);
$heure=$h.":".$m.":".$s;  


le format date de Mysql (si tu as mis ce champ en typae DATE) est 20070707051023

fais des echo de tes différents $tmp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wenijah Messages postés 72 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 26 janvier 2012 6
9 juil. 2007 à 10:01
$dat_com=date("Y-m-d");
$heure_com=date("H:i:s");

A l'état initial, ta date à la même valeur qu'à l'état final... aaaa-mm-jj!!

..regarde bien ton code:
//remise en forme au format jj-mmm-aaaa
$tmp = explode("-",$enr['dat_com']);
$tmp[0] = intval($tmp[0]); //jour
$tmp[1] = intval($tmp[1]); //mois
$tmp[2] = intval($tmp[2]); //année
$date=$tmp[2]."-".$tmp[1]."-".$tmp[0];

C'est égal à ta date d'origine:
$dat_com=date("Y-m-d");

...les $tmp[*] impriment ta date en aaaa-mm-jj..


Et pour l'heure:
$heure=$h.":".$m.":".$s;

C'est aussi égal à ton heure d'origine:
$heure_com=date("H:i:s");

L'heure n'a donc pas besoin d'être changée!

...Enfin, pour mettre ta date au format jj-mm-aaaa :

$dat_com=date("Y-m-d");
$day =  substr("$dat_com", 0, 4);
$month = substr("$dat_com", 5, 2);
$year = substr("$dat_com", 8, 2);
$date = "$mday"."-"."$mmonth"."-"."$myear";



Simple et fonctionne!

Et voilà !


~W~
0
s.spark Messages postés 2485 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 618
8 juil. 2007 à 23:23
A lala mais pourquoi personne utilise les balise code pour poster du code ...
-1