Problème pour récupérer du texte avec accent

Résolu/Fermé
Helheim Messages postés 5 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 15 juin 2008 - 3 juin 2008 à 15:30
Helheim Messages postés 5 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 15 juin 2008 - 15 juin 2008 à 21:31
Bonjour à tous

Voilà j'ai un problème avec un formulaire et des expressions régulières, je précise que je ne suis pas très fort pour adapter celle-ci.

Le problème est le suivant

J'ai une base de données Mysql sur laquelle est présente une table concernant des activités d'entreprise, je veux pouvoir soit modifier les informations déjà présentent soit en enregistrer de nouvelles.

Pour enregistrer une nouvelle activité j'ai donc créer une première page php avec un formulaire



<form action="page_creation_2.php" method="post" name="create_new_actvity" target="_parent">
<fieldset>
<legend>Titre</legend>
<input type="text" size="30" name="Nom_activite" value="" />
</fieldset>
<fieldset>
<legend>Date (Inscrire la date sous la forme anglaise Année-Mois-Jour)</legend>
<input type="text" size="10" name="Date_activite" value="" />
</fieldset>
<fieldset>
<legend>Contenu</legend>
<textarea name="Text_activite" cols="50" rows="10"></textarea>
</fieldset>
<input type="hidden" name="ID_entreprise" value="<?php echo $ident; ?>" />

<input name="envoi" type="submit" id="envoi" onclick="" value="envoyer" />
</form>





Ce formulaire envoie les informations sur la page "page_creation_2.php" sur laquelle je fais certaines vérifications avec des expressions régulières et c'est là ou je me mélange certainement les pinceaux



if(isset($_POST['Nom_activite']) && eregi("^([:alnum:1]|[:space:1]|[:punct:1])*$", $_POST['Nom_activite']))
$nomanimeq = htmlspecialchars($_POST['Nom_activite']);
else $nom_activite="";

if(isset($_POST['Date_activite']))
$dateanimeq = htmlspecialchars($_POST['Date_activite']);
else $date_activite="";

if(isset($_POST['Text_activite'])&& eregi("^([:alnum:1]|[:space:1]|[:punct:1])*$", $_POST['Text_activite']))
$contenu = htmlspecialchars($_POST['Text_activite']);
else $contenu="";

if(isset($_POST['ID_entreprise']))
$numeq=$_POST['ID_entreprise'];
else $ident="";

// On vérifie si les champs obligatoires sont remplis correctement
if(empty($nom_activite) OR empty($date_activite) OR empty($contenu) OR empty($ident) )
{
echo 'Vérifiez les champs obligatoires.';
}
else{

# appel de la fonction de connection à la base
mysql_link = Connection();
//insertion des données dans la table TABLE_ACTIVITE

$query = "INSERT INTO TABLE_ACTIVITE (ID_activite, ID_entreprise, Nom_activite, Date_activite, Text_activite)
VALUES('', '$ident', '$nom_activite', '$date_activite', '$contenu')";

mysql_query ($query, $mysql_link) or die (mysql_error());

echo 'Votre animation a bien été enregistrée.';

mysql_close();
}
?>





Alors tout se passe bien si je ne met pas d'accentuation dans mes zones de texte car lorsque que j'en met la page me renvoie "Vérifiez les champs obligatoires."

je suppose qu'il y a peut-être un problème avec mes expressions régulière et l'accentuation donc si on pouvait me donner une coup de main pour régler ce problème d'accentuation ça serait super sympa

De plus je pense qu'au niveau sécurité, je ne suis pas au top avec ce code donc si vous pouviez aussi me donner un coup de main pour ce problème aussi.

merci par avance à ceux qui vont se pencher sur le sujet en espérant avoir été clair dans mes explications
A voir également:

2 réponses

niko16 Messages postés 65 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 14 septembre 2011 2
3 juin 2008 à 15:40
essai avec des accolades comme ca :

if(isset($_POST['Nom_activite']) && eregi("^([:alnum:1]|[:space:1]|[:punct:1])*$", $_POST['Nom_activite']))
{
$nomanimeq = htmlspecialchars($_POST['Nom_activite']);
}
else $nom_activite="";

sinon tu peux essayé avec un booléen :

if.....
{
.......;
$test=true;
}
else $test=false;


et au moment de ta vérifacation finale
if ($test==false)
{
echo 'Vérifiez les champs obligatoires.';
}

il ne te mets pas d'erreur dans tes vérifications d'hortographe (eregi("^([:alnum:1]|[:space:1]|[:punct:1])*$", )??
0
Helheim Messages postés 5 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 15 juin 2008
4 juin 2008 à 19:59
Bonjour, merci pour ta réponse je vais essayé ça

sinon, non je n'ai pas d'erreur dans l'orthographe et la ponctuation sur les différents test que j'ai effectués, seul l'accentuation me pose un problème alors il y a bien la fonction pour retirer les accents seulement ce n'est pas très cool car aprés soit je laisse un affichage sur mon site des activités sans accents soit je remet moi même à la main tous les accents dans la base de données ce qui n'est pas le but recherché
0
Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009 46 > Helheim Messages postés 5 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 15 juin 2008
4 juin 2008 à 21:08
if(isset($_POST['Date_activite']))
$dateanimeq = htmlspecialchars($_POST['Date_activite']);
else $date_activite="";
c'est bizarre ton truc Oo
surtt qu'apres tu fais :
$query = "INSERT INTO TABLE_ACTIVITE (ID_activite, ID_entreprise, Nom_activite, Date_activite, Text_activite)
VALUES('', '$ident', '$nom_activite', '$date_activite', '$contenu')";
0
Helheim > Brachior Messages postés 613 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 22 juin 2009
5 juin 2008 à 13:54
Bonjour,

Oui c'est une erreur lorsque que j'ai inscrit mon message, c'esy bien sur ceci

if(isset($_POST['Date_activite']))
$date_activite = htmlspecialchars($_POST['Date_activite']);
else $date_activite="";
0
Helheim Messages postés 5 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 15 juin 2008
5 juin 2008 à 14:05
Je viens de me rendre compte que j'avais fait des erreurs lorsque que j'ai copié mon code, je vais corriger celles-ci

if(isset($_POST['Nom_activite']) && eregi("^([:alnum:1]|[:space:1]|[:punct:1])*$", $_POST['Nom_activite']))
$nom_activite = htmlspecialchars($_POST['Nom_activite']);
else $nom_activite="";

if(isset($_POST['Date_activite']))
$date_activite = htmlspecialchars($_POST['Date_activite']);
else $date_activite="";

if(isset($_POST['Text_activite'])&& eregi("^([:alnum:1]|[:space:1]|[:punct:1])*$", $_POST['Text_activite']))
$contenu = htmlspecialchars($_POST['Text_activite']);
else $contenu="";

if(isset($_POST['ID_entreprise']))
$ident=$_POST['ID_entreprise'];
else $ident="";

// On vérifie si les champs obligatoires sont remplis correctement
if(empty($nom_activite) OR empty($date_activite) OR empty($contenu) OR empty($ident) )
{
echo 'Vérifiez les champs obligatoires.';
}
else{

# appel de la fonction de connection à la base
mysql_link = Connection();
//insertion des données dans la table TABLE_ACTIVITE

$query = "INSERT INTO TABLE_ACTIVITE (ID_activite, ID_entreprise, Nom_activite, Date_activite, Text_activite)
VALUES('', '$ident', '$nom_activite', '$date_activite', '$contenu')";

mysql_query ($query, $mysql_link) or die (mysql_error());

echo 'Votre animation a bien été enregistrée.';

mysql_close();
}
?> 
0
Helheim Messages postés 5 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 15 juin 2008
15 juin 2008 à 21:31
Bonjour,

Après avoir été sur différents sites pour régler mon problème, j'ai fait cette regex qui à l'air de fonctionner.


if (preg_match("#^([a-zA-Z0-9éèàêâùïüëç -]|:punct:)+$#", $_POST['Nom_activite']))
    				{
        				$nom_activite=$_POST['Nom_activite'];
   					 }
    			else
    				{
        				$nom_activite="";
    				}


Avec ça je récupère bien les accents et la ponctuation de ce qui est inscrit dans le formulaire.

ATTENTION A CAUSE DU BBCode JE SUPPOSE LA CLASSE [:punct:] CI DESSUS DEVRAIT ÊTRE ENTOURÉE DE DOUBLE CROCHET.
0