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

Résolu
Helheim Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
Helheim Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
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

2 réponses

niko16 Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   2
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   46 > Helheim Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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