Insérer des caractères spéciaux base de données

david77179 Messages postés 172 Statut Membre -  
david77179 Messages postés 172 Statut Membre -
Bonjour,

Pouvez vous m'indiquer comment insérer un % dans une base de données. En effet lors de l'insert une erreur s'affiche...

Merci

David

Une fois le problème résolu, pensez à cliquer sur le lien "Marquer comme résolu " =D
Vive les communautés d'entre aides et surtout CommentçaMarche.net
A voir également:

3 réponses

NHenry Messages postés 15479 Statut Modérateur 366
 
Quelle erreur et avec quel code ?
0
david77179 Messages postés 172 Statut Membre 22
 
Merci de ta réponse et désolé de ne pas avoir répondu plus tôt mais je pensais recevoir par mail et je n'ai rien reçu.. Pas grave.

Le navigateur m'affiche ERREUR SQL et me dis que mes variables ne sont pas déclarées... Alors que lorsqu'il n'y a pas de pourcentage tout passe niquel...

Merci à toi
0
Utilisateur anonyme > david77179 Messages postés 172 Statut Membre
 
Bonjour,

tu pourrais nous faire profiter du message d'erreur exact : ) et puis le code incriminé, la structure de la table concernée serait un plus aussi ...

cdt
0
david77179 Messages postés 172 Statut Membre 22
 
Voici le message d'erreur affiché :



et voici le code :

<?php 
// ------ AJOUT D'UN UTILISATEUR --------
if(isset($_POST['nom'])){ // on vÈrifie la prÈsence des variables de formulaire (si le formulaire a ÈtÈ envoyÈ)
 if(($_POST['nom'] == "")){ // si mail ou mot de passe non spÈcifiÈs >> message d'erreur
 header("Location:newutilisateur.php?erreur=empty");
 }
  // on passe toutes les variables $POST en variables
  $nom = strtoupper ($_POST['nom']);
  $prenom = ucwords (strtolower($_POST['prenom']));

  $numsecu = $_POST['numsecu'];
  $mutuelle = $_POST['mutuelle'];
  $date_client = $_POST['date_client'];
  $date_envoi_pec = $_POST['date_envoi_pec'];
  $date_recep_pec = $_POST['date_recep_pec'];
  $accord_pec = $_POST['accord_pec'];
  $montant_pec = $_POST['montant_pec'];
  
  $date_rappel_1 = $_POST['date_rappel_1'];
  $coms_rappel_1 = addslashes ($_POST['coms_rappel_1']);
  $ok_rappel_1 = $_POST['ok_rappel_1'];
  
  $date_rappel_2 = $_POST['date_rappel_2'];
  $coms_rappel_2 = addslashes ($_POST['coms_rappel_2']);
  $ok_rappel_2 = $_POST['ok_rappel_2'];
  
  $date_rappel_3 = $_POST['date_rappel_3'];
  $coms_rappel_3 = addslashes ($_POST['coms_rappel_3']);
  $ok_rappel_3 = $_POST['ok_rappel_3'];
  
  $cloture = $_POST['cloture'];
  $date_signature = $_POST['date_signature'];
  
  // on fait l'INSERT dans la base de donnÈes
  $add_user = sprintf("UPDATE clients SET nom='$nom', prenom='$prenom', numsecu='$numsecu', mutuelle='$mutuelle', date_client='$date_client', 
  date_envoi_pec='$date_envoi_pec', date_recep_pec='$date_recep_pec', accord_pec='$accord_pec', montant_pec='$montant_pec', date_rappel_1='$date_rappel_1',
  coms_rappel_1='$coms_rappel_1',ok_rappel_1='$ok_rappel_1',date_rappel_2='$date_rappel_2', coms_rappel_2='$coms_rappel_2',ok_rappel_2='$ok_rappel_2', 
  date_rappel_3='$date_rappel_3', coms_rappel_3='$coms_rappel_3' ,ok_rappel_3='$ok_rappel_3',cloture='$cloture', date_signature='$date_signature' 
  WHERE name='$nom' AND prename='$prenom'");
  mysqli_query ($connection, $add_user) or die ('Erreur SQL !<br>'.$add_user.'<br />'.mysqli_connect_error());

  header("Location:../index.php?modifs=ok"); // redirection si crÈation rÈussie
 }
?>


En sachant que ces erreurs ne s'affichent jamais lorsque je ne mets pas de ' % '

Merci pour votre aide :)
Une fois le problème résolu, pensez à cliquer sur le lien "Marquer comme résolu " =D
Vive les communautés d'entre aides et surtout CommentçaMarche.net
0
Utilisateur anonyme
 
salut,

il faut que tu nous donnes la structure de la table. Il faudrait aussi que tu nous expliques ce que tu entends par "mettre des %" : )

cdt
0
david77179 Messages postés 172 Statut Membre 22
 
Voici la structure de la table :



Dans une champ text par exemple coms_rappel_1 je voudrais que l'utilisateur puisse ecrire par exemple : "le client a laissé un acompte de 10%"

Merci
0
Utilisateur anonyme
 
L'interclassement de ta base de donnée doit poser un problème, Tu devrais la passer en utf8_general_ci tu pourras avoir les accents en plus : )

En modifiant le .htacces

php_flag default_charset utf-8
ou au debut de tes pages php

<head><meta charset="utf-8" /></head>

et ensuite juste apres ta connexion à la bdd une requête du genre

mysql_connect ('localhost', 'root', '');
mysql_set_charset ('UTF8');

si php < version 5

query("SET NAMES 'utf8'");

L'exemple de saisie que tu nous indiques

le client a laissé un acompte de 10%

comporte un accent qui n'est pas supporté par l'interclassement de ta base ( latin1 swedish ci )


Je te laisse un petit peu de lecture

http://openclassrooms.com/courses/passer-du-latin1-a-l-unicode

en espérant que cela puisse t'aider, ce n'est qu'une piste, les experts vont me corriger si necessaire : )

cdt
0
david77179 Messages postés 172 Statut Membre 22
 
Merci pour ta réponse. Tout cela est déjà fait à l'exception de l'interclassement de la BDD car une fois faite je ne peux plus la modifier..
Les accents passent bien mais toujours rien sur le %..
0