Demande de précision sur encodage UTF8 et base de données
Résolu/Fermé
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
-
9 août 2013 à 13:53
Utilisateur anonyme - 19 août 2013 à 11:12
Utilisateur anonyme - 19 août 2013 à 11:12
A voir également:
- Encodage base de données
- Formules excel de base - Guide
- Germain veut gérer les activités de son association avec une base de données. il a commencé à créer des tables dans un fichier, mais il n’est pas sûr du résultat. le fichier à télécharger contient uniquement le schéma de cette base de données. en l’état actuel, que peut-on en déduire ? - Forum Outlook
- Tnt base de données vide - Forum TNT / Satellite / Réception
- Gigaset ne reconnait plus sa base - Forum telephonie fixe
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
16 réponses
Utilisateur anonyme
9 août 2013 à 14:14
9 août 2013 à 14:14
Bonjour
Il ne suffit pas que ta base de donnée soit en UTF-8, il faut exécuter la requête "SET NAMES 'utf8'" lors de la connexion.
Il ne suffit pas que ta base de donnée soit en UTF-8, il faut exécuter la requête "SET NAMES 'utf8'" lors de la connexion.
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
Modifié par janmar le 9/08/2013 à 14:38
Modifié par janmar le 9/08/2013 à 14:38
Bonjour et merci de ta réponse.
J'ai essayé :
$bdd = new PDO('mysql:host=XXXXX.fr.mysql;dbname=YYYYY', 'lionsclubannona', 'ZZZZZ',$pdo_options,array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
(syntaxe PDO lue sur un tuto)
cela ne marche malheureusement pas mieux !..
J'ai essayé :
$bdd = new PDO('mysql:host=XXXXX.fr.mysql;dbname=YYYYY', 'lionsclubannona', 'ZZZZZ',$pdo_options,array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
(syntaxe PDO lue sur un tuto)
cela ne marche malheureusement pas mieux !..
Utilisateur anonyme
9 août 2013 à 14:47
9 août 2013 à 14:47
Perso j'utilise array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8")
Ça ne doit pas changer grand chose.
Le problème viendrait donc d'ailleurs. Utilises-tu les fonctions utf8_encode et utf8_decode dans tes scripts ?
Ça ne doit pas changer grand chose.
Le problème viendrait donc d'ailleurs. Utilises-tu les fonctions utf8_encode et utf8_decode dans tes scripts ?
Pierrecastor
Messages postés
41467
Date d'inscription
mercredi 5 novembre 2003
Statut
Modérateur
Dernière intervention
30 mai 2024
4 144
9 août 2013 à 14:49
9 août 2013 à 14:49
Salut
les scripts sont il eux même encodé en UTF8 ?
les scripts sont il eux même encodé en UTF8 ?
J'y ai pensé mais son type d'affichage correspond plutôt à des données UTF8 affichées dans une page déclarée en ISO qq chose.
Or sa page est bien déclarée - si son header marche - en UTF8.
Ce qui me fait penser à une autre question pour janmar :
As-tu une balise meta avec un charset différent dans ta page ?
Or sa page est bien déclarée - si son header marche - en UTF8.
Ce qui me fait penser à une autre question pour janmar :
As-tu une balise meta avec un charset différent dans ta page ?
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
Modifié par janmar le 9/08/2013 à 16:00
Modifié par janmar le 9/08/2013 à 16:00
Bonjour,
Je n'ai que la balise meta normale
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
plus :
$bdd = new PDO('mysql:host=XXXXX.fr.mysql;dbname=YYYYY', 'ZZZ', 'ZZZZZ',$pdo_options,array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
De plus, tous mes scripts sont encodés en UTF8 avec le logiciel TextWrangler :
caractères: Central european (Mac OS)
Use UTF-8 for Unix script I/O
Je n'utilise pas les fonctions uft8_encode , ni uft8_decode.
Je n'ai que la balise meta normale
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
plus :
$bdd = new PDO('mysql:host=XXXXX.fr.mysql;dbname=YYYYY', 'ZZZ', 'ZZZZZ',$pdo_options,array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
De plus, tous mes scripts sont encodés en UTF8 avec le logiciel TextWrangler :
caractères: Central european (Mac OS)
Use UTF-8 for Unix script I/O
Je n'utilise pas les fonctions uft8_encode , ni uft8_decode.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
Modifié par le père. le 9/08/2013 à 15:22
Modifié par le père. le 9/08/2013 à 15:22
Si tes scripts n'étaient pas en utf8, tu aurais des problèmes d'affichage, mais pas Marie-thérèse. Tu aurais plutôt Marie-th?r?se.
Le Marie-thérèse, tu le vois avec PHPMyAdmin ou avec un script ?
Et tu l'as enregistré comment : avec PHPMyAdmin ou avec un script ? Avec "Marie-Thérèse" En dur dans le script, ou saisi via un formulaire ?
Le Marie-thérèse, tu le vois avec PHPMyAdmin ou avec un script ?
Et tu l'as enregistré comment : avec PHPMyAdmin ou avec un script ? Avec "Marie-Thérèse" En dur dans le script, ou saisi via un formulaire ?
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
9 août 2013 à 15:31
9 août 2013 à 15:31
Le Marie-thérèse, je le vois avec PHPMyAdmin directement dans la table.
Je l'ai envoyé par un formulaire dans lequel il y a bien le header en début du script.
je saisis : Marie-Thérèse.
Lors de la connexion, j'ai bien le 'SET NAMES \'UTF8\' (dans le PDO).
Je l'ai envoyé par un formulaire dans lequel il y a bien le header en début du script.
<form method="post" action="inscrire.php"> <label for="prenom">Prénom : </label>
je saisis : Marie-Thérèse.
Lors de la connexion, j'ai bien le 'SET NAMES \'UTF8\' (dans le PDO).
Utilisateur anonyme
9 août 2013 à 15:36
9 août 2013 à 15:36
Question complémentaire : la base est en utf8, je suppose que toutes les tables aussi....
Peut-on voir le script qui traite le formulaire ?
Peut-on voir le script qui traite le formulaire ?
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
9 août 2013 à 15:40
9 août 2013 à 15:40
Voilà le code
<?php $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=XXXX.fr.mysql;dbname=YYYY', 'ZZZZ', 'TTTT',$pdo_options,array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')); //mysql_set_charset("utf8"); if($_POST['action'] == 'Enregistrer') { $nom = htmlspecialchars($_POST['nom']); $nom = strtoupper($nom); $prenom = htmlspecialchars($_POST['prenom']); $prenom = str_replace(' ','-',$prenom); $prenom = strtolower($prenom); $prenom = ucfirst($prenom); $prenomnom = $prenom.' '.$nom; $adresse = htmlspecialchars($_POST['adresse']); $cp = htmlspecialchars($_POST['cp']); $ville = htmlspecialchars($_POST['ville']); $req = $bdd->prepare('INSERT INTO identite (Nom,Prenom,Adresse,CP,Ville) VALUES(:Nom,:Prenom,:Adresse,:CP,:Ville)'); $req->execute(array( 'Nom' => $nom, 'Prenom' => $prenom, 'Adresse' => $adresse, 'CP' => $cp, 'Ville' => $ville )); $req = $bdd->prepare('INSERT INTO benevoles (nom) VALUES(:nom)'); $req->execute(array( 'nom' => $prenomnom )); echo '<strong>Bénévole enregistré';?><br><br> <a href="saisie.html" target = "_blank">continuer</a></strong><?php }
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
9 août 2013 à 15:37
9 août 2013 à 15:37
Oui, je vois Marie-thérèse avec PHPMyAdmin directement dans la table.
Je l'ai enregistré avec un formulaire qui a en entete
header( 'content-type: text/html; charset=utf-8' );
et je saisis : Marie-Thérèse dans mon formulaire.
la page de réception a elle aussi le header ci-dessus et dans la connexion à la bdd, j'ai bien 'SET NAMES \'UTF8\'
Je l'ai enregistré avec un formulaire qui a en entete
header( 'content-type: text/html; charset=utf-8' );
<form method="post" action="inscrire.php"> <label for="prenom">Prénom : </label> <INPUT type="text" name="prenom" size = 20 autofocus required />
et je saisis : Marie-Thérèse dans mon formulaire.
la page de réception a elle aussi le header ci-dessus et dans la connexion à la bdd, j'ai bien 'SET NAMES \'UTF8\'
Utilisateur anonyme
9 août 2013 à 15:39
9 août 2013 à 15:39
Peut-on voir le script qui traite (qui reçoit) le formulaire ?
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
9 août 2013 à 19:10
9 août 2013 à 19:10
Voilà le code
<?php
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=XXXX.fr.mysql;dbname=YYYY', 'ZZZZ', 'TTTT',$pdo_options,array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//mysql_set_charset("utf8");
if($_POST['action'] == 'Enregistrer') {
$nom = htmlspecialchars($_POST['nom']);
$nom = strtoupper($nom);
$prenom = htmlspecialchars($_POST['prenom']);
$prenom = str_replace(' ','-',$prenom);
$prenom = strtolower($prenom);
$prenom = ucfirst($prenom);
$prenomnom = $prenom.' '.$nom;
$adresse = htmlspecialchars($_POST['adresse']);
$cp = htmlspecialchars($_POST['cp']);
$ville = htmlspecialchars($_POST['ville']);
$req = $bdd->prepare('INSERT INTO identite (Nom,Prenom,Adresse,CP,Ville) VALUES(:Nom,:Prenom,:Adresse,:CP,:Ville)');
$req->execute(array(
'Nom' => $nom,
'Prenom' => $prenom,
'Adresse' => $adresse,
'CP' => $cp,
'Ville' => $ville
));
$req = $bdd->prepare('INSERT INTO benevoles (nom) VALUES(:nom)');
$req->execute(array(
'nom' => $prenomnom
));
echo '<strong>Bénévole enregistré';?><br><br>
<a href="saisie.html" target = "_blank">continuer</a></strong><?php
}
<?php
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=XXXX.fr.mysql;dbname=YYYY', 'ZZZZ', 'TTTT',$pdo_options,array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
//mysql_set_charset("utf8");
if($_POST['action'] == 'Enregistrer') {
$nom = htmlspecialchars($_POST['nom']);
$nom = strtoupper($nom);
$prenom = htmlspecialchars($_POST['prenom']);
$prenom = str_replace(' ','-',$prenom);
$prenom = strtolower($prenom);
$prenom = ucfirst($prenom);
$prenomnom = $prenom.' '.$nom;
$adresse = htmlspecialchars($_POST['adresse']);
$cp = htmlspecialchars($_POST['cp']);
$ville = htmlspecialchars($_POST['ville']);
$req = $bdd->prepare('INSERT INTO identite (Nom,Prenom,Adresse,CP,Ville) VALUES(:Nom,:Prenom,:Adresse,:CP,:Ville)');
$req->execute(array(
'Nom' => $nom,
'Prenom' => $prenom,
'Adresse' => $adresse,
'CP' => $cp,
'Ville' => $ville
));
$req = $bdd->prepare('INSERT INTO benevoles (nom) VALUES(:nom)');
$req->execute(array(
'nom' => $prenomnom
));
echo '<strong>Bénévole enregistré';?><br><br>
<a href="saisie.html" target = "_blank">continuer</a></strong><?php
}
jeremy.s
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
79
9 août 2013 à 15:45
9 août 2013 à 15:45
Salut !
Ca m'est arrivé et j'ai utilisé utf8_decode et encode et problème résolu, mais ca peut être chiant si ton site/application n'as pas juste quelques lignes de code ...
Ca m'est arrivé et j'ai utilisé utf8_decode et encode et problème résolu, mais ca peut être chiant si ton site/application n'as pas juste quelques lignes de code ...
Utilisateur anonyme
10 août 2013 à 08:37
10 août 2013 à 08:37
On l'avait sous les yeux depuis le début :
Tu as un paramètre en trop dans ton new PDO, ce qui fait que le SET NAMES... est ignoré.
Supprime le "$pdo_option" et écris :
$bdd = new PDO('mysql:host=XXXXX.fr.mysql;dbname=YYYYY', 'lionsclubannona', 'ZZZZZ',$pdo_options,array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
Tu as un paramètre en trop dans ton new PDO, ce qui fait que le SET NAMES... est ignoré.
Supprime le "$pdo_option" et écris :
$bdd = new PDO('mysql:host=XXXXX.fr.mysql;dbname=YYYYY', 'lionsclubannona', 'ZZZZZ',array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Autre remarque, sans rapport avec ton problème : ce n'est pas une bonne idée d'utiliser htmlspecialchars avant d'enregistrer les données dans la base. Cette fonction est inutile pour la base de données, et modifie le contenu puisqu'elle remplace par exemple les < par des <. Donc elle fausse les tris et recherches de mysql par la suite.
htmlspecialchars n'est utile qu'au moment de l'affichage.
htmlspecialchars n'est utile qu'au moment de l'affichage.
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
16 août 2013 à 19:26
16 août 2013 à 19:26
Bonsoir,
Je rentre juste de voyage, ce qui explique mon silence cette semaine.
Je te remercie de tes réponses qui , je pense, vont régler les problèmes.
1°) je n'imaginais pas que $_PDO_options mettait la pagaille.
2°) je crois que tu as vu juste avec htmlspecialchars, qui doit coder en iso lasti xxx.
Je teste tout ça et je te tiens au courant, mais je crois qu'on tient le bon bout.
encore merci.
Marc
Je rentre juste de voyage, ce qui explique mon silence cette semaine.
Je te remercie de tes réponses qui , je pense, vont régler les problèmes.
1°) je n'imaginais pas que $_PDO_options mettait la pagaille.
2°) je crois que tu as vu juste avec htmlspecialchars, qui doit coder en iso lasti xxx.
Je teste tout ça et je te tiens au courant, mais je crois qu'on tient le bon bout.
encore merci.
Marc
De rien.
En ce qui concerne htmlspecialchars, il suppose a priori que le texte est encodé en utf8 dans les versions récentes de php. Dans des versions plus anciennes, je crois bien que l'encodage par défaut était un iso_qqchose.
Dans tous les cas, tu peux mettre un paramètre pour obliger à prendre le bon encodage.
En ce qui concerne htmlspecialchars, il suppose a priori que le texte est encodé en utf8 dans les versions récentes de php. Dans des versions plus anciennes, je crois bien que l'encodage par défaut était un iso_qqchose.
Dans tous les cas, tu peux mettre un paramètre pour obliger à prendre le bon encodage.
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
17 août 2013 à 22:45
17 août 2013 à 22:45
malheureusement, malgré tous les conseils de chacun, j'obtiens toujours : Marie-hélène dans ma base de données.
J'ai enlevé $pdo_options dans la connexion,
J'ai enlevé les htmlspecialchars dans le formulaire de réception,
J'ai aussi essayé de nommer explicitement le codage dans la variable :
$nom = strtoupper($_POST['nom'], 'UTF-8');
J'ai rajouté array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8") dans la connexion.
J'ai vérifié que la base est bien en UTF-8_general_ci
Toutes mes tables sont aussi en UTF-8_general_ci
et l'enregistrement est toujours le même : Marie-hélène
Je commence à perdre mon latin (ou plutôt ce qu'il en reste !...)
J'ai enlevé $pdo_options dans la connexion,
J'ai enlevé les htmlspecialchars dans le formulaire de réception,
J'ai aussi essayé de nommer explicitement le codage dans la variable :
$nom = strtoupper($_POST['nom'], 'UTF-8');
J'ai rajouté array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8") dans la connexion.
J'ai vérifié que la base est bien en UTF-8_general_ci
Toutes mes tables sont aussi en UTF-8_general_ci
et l'enregistrement est toujours le même : Marie-hélène
Je commence à perdre mon latin (ou plutôt ce qu'il en reste !...)
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
17 août 2013 à 22:56
17 août 2013 à 22:56
Je pense à une chose :
Je saisis mes variables dans des input tel que :
l'input est-il bien envoyé en UTF-8 de cette manière ?
Je saisis mes variables dans des input tel que :
<form accept-charset="utf-8" method="post" action="inscrire.php"> <label for="prenom">Prénom : </label> <INPUT type="text" name="prenom" size = 20 autofocus required /> </form>
l'input est-il bien envoyé en UTF-8 de cette manière ?
Utilisateur anonyme
17 août 2013 à 23:22
17 août 2013 à 23:22
Bonsoir
Le accept-charset="utf-8" est inutile : par défaut, l'ncodage utilisé dans un formulaire est celui du document HTML. Si tu vois Marie-hélÃ, c'est très probablement que tu as bien de l'utf8 au niveau de ta page HTML, mais que c'est traité comme de l'isoqqchose par la base de données.
Je suppose qu'il y a encore quelque chose dans le code de la connexion ou dans les manipulations des données entre la réception et l'insertion dans la base. Peux-tu redonner ton code ?
Le accept-charset="utf-8" est inutile : par défaut, l'ncodage utilisé dans un formulaire est celui du document HTML. Si tu vois Marie-hélÃ, c'est très probablement que tu as bien de l'utf8 au niveau de ta page HTML, mais que c'est traité comme de l'isoqqchose par la base de données.
Je suppose qu'il y a encore quelque chose dans le code de la connexion ou dans les manipulations des données entre la réception et l'insertion dans la base. Peux-tu redonner ton code ?
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
18 août 2013 à 07:55
18 août 2013 à 07:55
Merci de ta réponse. Je reprends mes scripts un par un :
Voilà pour la saisie :
Maintenant, pour la réception du formulaire :
Formulaire de saisie : <?php session_start(); header( 'content-type: text/html; charset=utf-8' ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>saisie bénévoles</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href= "planning.css" /> </head> <body> <?php echo'Saisissez un nouveau bénévole';?> <form accept-charset="utf-8" method="post" action="inscrire.php"> <label for="prenom">Prénom : </label> <INPUT type="text" name="prenom" size = 20 autofocus required /> <br /> <label for="nom">Nom : </label> <INPUT type="text" name="nom" size = 20 required/> <br /><br> <strong> <INPUT type="submit" value="Vérifier" /> <INPUT type="reset" value="Effacer" /></strong> ___________________________________________ </form>
Voilà pour la saisie :
Maintenant, pour la réception du formulaire :
<?php session_start(); header( 'content-type: text/html; charset=utf-8' ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>reponse saisie</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href= "planning.css" /> </head> <body> <?php $bdd = new PDO('mysql:host=lXXXX.fr.mysql;dbname=YYYY', 'ZZZZ', 'TTTT',array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if($_POST['action'] == 'Enregistrer') { $nom = $_POST['nom']; $nom = strtoupper($nom, 'UTF-8'); $prenom = $_POST['prenom']; $prenom = str_replace(' ','-',$prenom); $prenom = strtolower($prenom, 'UTF-8'); $prenom = ucfirst($prenom, 'UTF-8'); $prenomnom = $prenom.' '.$nom; $adresse = $_POST['adresse']; $cp = $_POST['cp']; $ville = $_POST['ville']; $req = $bdd->prepare('INSERT INTO identite (Nom,Prenom,Adresse,CP,Ville) VALUES(:Nom,:Prenom,:Adresse,:CP,:Ville)'); $req->execute(array( 'Nom' => $nom, 'Prenom' => $prenom, 'Adresse' => $adresse, 'CP' => $cp, 'Ville' => $ville )); $req = $bdd->prepare('INSERT INTO benevoles (nom) VALUES(:nom)'); $req->execute(array( 'nom' => $prenomnom )); echo '<strong>Bénévole enregistré';?><br><br> <a href="saisie.html" target = "_blank">continuer</a></strong><?php } if (isset($_POST['prenom'])) { $prenom = $_POST['prenom']; $prenom = str_replace(' ','-',$prenom); $prenom = strtolower($prenom); $prenom = ucfirst($prenom,'UTF-8'); }else{ echo 'Il manque le prénom'; } if (isset($_POST['nom'])) { $nom = $_POST['nom']; $nom = strtoupper($nom,'UTF-8'); }else{ echo 'Il manque le nom'; } $prenomnom = $prenom.' '.$nom; // Vérification de l'existence du bénévole $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=XXXXX.fr.mysql;dbname=YYYYY', 'ZZZZZ', 'TTTTT', array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $reponse = $bdd->query("SELECT * FROM identite WHERE Nom = '$nom' AND Prenom = '$prenom' "); $donnees = $reponse->fetch(); if (!empty($donnees['Nom']) AND !empty($donnees['Prenom'])) { ?><strong><?php echo $prenomnom.' existe déjà et habite :';?><strong/><br><?php echo $donnees['Adresse'].'<br>'.$donnees['CP'].' '.$donnees['Ville'];?><br><br><?php echo 'Voulez-vous néanmoins créer un homonyme ?<br>'; // Affichage du formulaire echo '<form method="post">'; ?><label for="nom">Nom : </label><?php echo '<input class = "nom2" type="text" name="nom" required><br>'; ?><label for="nom">Prénom : </label><?php echo '<input class = "nom2" type="text" name="prenom" required><br>'; ?><label for="nom">Adresse : </label><?php echo '<input class = "nom2" type="text" name="adresse" required><br>'; ?><label for="nom">CP : </label><?php echo '<input class = "nom2" type="text" name="cp" required><br>'; ?><label for="nom">Ville : </label><?php echo '<input class = "nom2" type="text" name="ville" required><br><br>'; echo '<input class = "nom2" type="submit" name="action" value="Enregistrer"></form>'; }else{ $req = $bdd->prepare('INSERT INTO identite (Nom,Prenom) VALUES(:Nom,:Prenom)'); $req->execute(array( 'Nom' => $nom, 'Prenom' => $prenom )); $req = $bdd->prepare('INSERT INTO benevoles (nom) VALUES(:nom)'); $req->execute(array( 'nom' => $prenomnom )); echo '<strong>Bénévole enregistré';?><br><br> <a href="saisie.html" target = "_blank">continuer</a></strong> <?php } ?> </body>
Utilisateur anonyme
18 août 2013 à 08:27
18 août 2013 à 08:27
Je n'arrive pas à faire marcher ton code car il y a des erreurs dedans.
Entre autres :
Mais les fonctions strtoupper et ucfirst n'admettent qu'un seul paramètre.
Quelle version de PHP as-tu pour que ça marche ?
Entre autres :
$nom = strtoupper($nom, 'UTF-8'); $prenom = ucfirst($prenom, 'UTF-8');
Mais les fonctions strtoupper et ucfirst n'admettent qu'un seul paramètre.
Quelle version de PHP as-tu pour que ça marche ?
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
18 août 2013 à 08:53
18 août 2013 à 08:53
Version 5.3.27
Utilisateur anonyme
Modifié par le père. le 18/08/2013 à 10:27
Modifié par le père. le 18/08/2013 à 10:27
D'après la doc (tu as suivi les liens ?) et mes essais, ça devrait planter et tu ne devrais rien enregistrer du tout.
Peux-tu faire un echo $prenom; juste après le $prenom = ucfirst($prenom, 'UTF-8'); pour voir ce que ça donne ?
Peux-tu faire un echo $prenom; juste après le $prenom = ucfirst($prenom, 'UTF-8'); pour voir ce que ça donne ?
janmar
Messages postés
148
Date d'inscription
vendredi 17 mai 2013
Statut
Membre
Dernière intervention
29 août 2015
3
19 août 2013 à 10:29
19 août 2013 à 10:29
Bonjour,
Tout d'abord, je te prie de bien vouloir m'excuser de tout le travail de recherche que je t'ai imposé, mais j'ai trouvé une anomalie que je n'avais pas vue, et qui me mettait le bazar depuis quelques jours : mon logiciel de FTP renommait mes fichiers au lieu de les remplacer sur mon site, ce qui fait que malgré les modifs, c'était toujours le même code qui s'exécutait. Je suis confus !...
Bon, après avoir tout repris, et enlevé les arguments en trop qui déclenchent bien une erreur, je constate :
l'écho $prenom indique bien Marie-Hélène.
L'enregistrement dans la base de données se fait bien sous Marie-Hélène.
Après avoir rajouté array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')
lors de la connexion pour la lecture des infos, je lis normalement bien la table.
Il semble donc que le problème soit entièrement résolu.
Merci de ton aide précieuse.
Marc
Tout d'abord, je te prie de bien vouloir m'excuser de tout le travail de recherche que je t'ai imposé, mais j'ai trouvé une anomalie que je n'avais pas vue, et qui me mettait le bazar depuis quelques jours : mon logiciel de FTP renommait mes fichiers au lieu de les remplacer sur mon site, ce qui fait que malgré les modifs, c'était toujours le même code qui s'exécutait. Je suis confus !...
Bon, après avoir tout repris, et enlevé les arguments en trop qui déclenchent bien une erreur, je constate :
l'écho $prenom indique bien Marie-Hélène.
L'enregistrement dans la base de données se fait bien sous Marie-Hélène.
Après avoir rajouté array (PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')
lors de la connexion pour la lecture des infos, je lis normalement bien la table.
Il semble donc que le problème soit entièrement résolu.
Merci de ton aide précieuse.
Marc