IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Double quote dans une chaine


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 17
    Points
    17
    Par défaut Double quote dans une chaine
    Bonjour à tous,

    J'ai un petit soucis l'insertion d'une chaine de caractères dans une bdd.
    En fait j'ai une chaine de type : Beniti membre de "developpez.com"

    Le problème vient lorsque je fait un update d'une table pour insérer le nouveau résultat, il n'insère que Beniti membre de. Normal vu qu'il y a des doubles quotes. La solution serait de mettre des antislashes manuellement sauf que le code est un formulaire, que l'utilisateur choisit parmi trois options (les options sont les fameuses chaines de caractères avec des doubles quotes à l'intérieur) et l'update sert à changer le résultat en fonction du choix de l'utilisateur.

    J'ai essayé plusieurs possibilités d'après ce que j'ai pu voir, notamment ceci : http://fr.php.net/manual/fr/function...ape-string.php
    Mais en vain.

    Auriez-vous une solution ?

    Bonne journée.

  2. #2
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Salut !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Texte=addslashes($_POST['txtTexte']);
    Ceci est un exemple mais la fonction est addslashes et ca marche

    EDIT : Attention lors du ré affichage il faut utiliser la fonction stripslashes qui enlèvera les \

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 17
    Points
    17
    Par défaut
    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    echo '<select class="form_menu" name="name_esca" size="1">';
    $querycheckesca = "SELECT * FROM ibf_escadron ";
    $resultcheckesca = mysql_query($querycheckesca, $db) or die($querycheckesca . " - " . mysql_error());
     
    while ($checkesca = mysql_fetch_array($resultcheckesca)) {
          echo '<option value="'.$checkesca["name_escadron"].'"'; if($checkesca["name_escadron"]  == $check["field_1"]) { echo 'selected'; } echo'>'.$checkesca["name_escadron"].'</option>';
    }
    echo '</select>'; 
     
    <input class="form_go" type="submit" name="envoyer" value="Envoyer"/>
     
    if ($_POST["envoyer"]) {	 
      $updatemember = "UPDATE ibf_members SET mgroup ='".$_POST["Groupe"]."', mgroup_others =',".$_POST["Groupe"].",' WHERE id ='".$_POST["id_member"]."' ";
      $resultmember = mysql_query($updatemember) or die($updatemember . " - " . mysql_error());
      $updatemember = "UPDATE ibf_pfields_content SET field_1 ='".$_POST["name_esca"]."', field_9 ='".$_POST["indicatif"]."', field_11 ='".$_POST["field11"]."', field_12 ='".$_POST["field12"]."', field_13 ='".$_POST["field13"]."', field_14 ='".$_POST["field14"]."', field_15 ='".$_POST["field15"]."', field_16 ='".$_POST["field16"]."', field_17 ='".$_POST["field17"]."', field_18 ='".$_POST["field18"]."', field_19 ='".$_POST["field19"]."', field_20 ='".$_POST["field20"]."' WHERE member_id ='".$_POST["id_member"]."' ";
      $resultmember = mysql_query($updatemember) or die($updatemember . " - " . mysql_error());
    }
    ce sont donc les variables $checkesca["name_escadron"] et $_POST["name_esca"] qui possèdent les chaines de caractères. Le deuxième se trouve dans l'update et le premier dans le formulaire. Lequel des deux dois-je utiliser avec le addslashes et dans quelles conditions ? (j'ai déjà testé "addslashes" ce matin mais le résultat reste toujours le même : le début de la chaine jusqu'à la première double quote).

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Points : 1 769
    Points
    1 769
    Par défaut
    Bonjour,

    addslashes() est une fonction que tu dois appliquer avant de mettre tes données dans la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $request = "INSERT INTO nomTable VALUES (".addslashes($maValeurAvecDoubleQuote).")";
    La fonction stripslashes sera à appliquer une fois le résultat extrait de la base de données.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Points : 17
    Points
    17
    Par défaut
    Bonjour Deallyra,

    J'avais testé cette solution et je viens de le refaire mais j'ai toujours le même soucis : à l'exécution de l'update, la donnée est bien mémorisée dans la table mais est amputée au niveau de la double quote, j'ai n'ai que le début de la chaine même avec addslashes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE ibf_pfields_content SET field_1 ='".addslashes($_POST["name_esca"])."',

Discussions similaires

  1. [Généralités] insertion double quote dans une chaine
    Par cool dans le forum WinDev
    Réponses: 6
    Dernier message: 27/12/2013, 13h14
  2. Réponses: 2
    Dernier message: 30/12/2010, 17h02
  3. Inserer le double quote dans une chaine de requete
    Par schwinny dans le forum VBA Access
    Réponses: 14
    Dernier message: 04/03/2008, 15h00
  4. [Système] Supprimer double quotes d'une chaine
    Par chienlou dans le forum Langage
    Réponses: 15
    Dernier message: 24/05/2006, 14h29
  5. [VB]probleme double quote dans une ressource de type string
    Par JulienCEA dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/02/2006, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo