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

Langage PHP Discussion :

[Tableaux] souci avec des simples quotes


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut [Tableaux] souci avec des simples quotes
    Bonjour à tous,

    j'ai un champ de type SET dans une base Mysql rentré tel quel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set('hotel', 'gite', 'chambres d\'hotes', 'location meublée', 'gite d\'étape')
    je recupere les valeurs du SET pour en faire des checkbox :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?php
    function stripslashes_deep($value)
    {
       $value = is_array($value) ?
                   array_map('stripslashes_deep', $value) :
                   stripslashes($value);
     
       return $value;
    }
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());	
    $select = 'SHOW COLUMNS FROM tbl_hebergement LIKE "type"';
    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    if($total)	{
    $row = mysql_fetch_array($result);
    stripslashes_deep($row);
    $set = explode(",",$row[1]);
    $set[0]= substr_replace($set[0], '', 0, 4);
    $x = (count($set) - 1);
    $set[$x] = substr_replace($set[$x], '', -1, 1);
    for($i=0; $i <= $x; $i++)	{
    $set[$i] = trim($set[$i],"'");	}
     
    foreach($set as $value)	{
    echo '<label for"type">'.htmlentities($value, ENT_QUOTES).'</label><input type="checkbox" name="type[]" style="margin-right:10px;" value="'.$value.'" />'."\n";
    	}
    } 
    ?>
    <input type="submit" value="ok" />
    </form>
    et la rien ne va plus car au lieu d'avoir des values de checkbox avec 'chambres d'hotes' ou 'gite d'etape' j'obtiens "chambres d''hotes" et "gite d''etape" avec 2 single quotes (avant hotes ou etape) !!! (ce qui fait que lors de l'insertion des données du form dans la base, la valeur du SET ne correspond plus et elle est rejetée par MySQL) .
    pour l'instant je suis en local et les magic quotes sont desactivées (gpc, sysbase) et la fonction stripslashes_deep() est issue du manuel php mais elle ne sert strictement à rien dans ce cas (resultat identique avec ou sans)
    en fait j'aimerai comprendre pourquoi l'antislash (SQL) qui protege le quote, se transforme en simple quote apres le SELECT (print_r($row)), :
    un volontaire pour me guider SVP
    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Points : 97
    Points
    97
    Par défaut
    ça serait pas parce que stripslashes() retourne une chaîne dont les anti-slash on été supprimés.
    du coup
    l\'autre devient l'autre et est mal interprété.
    j'ai un peu de mal à me plonger dans ton code, mais pour le moment je vois que ça.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut
    le htmlentities() y est pour quelque chose je crois.
    Si tu essaies sans cette fonction, ça donne quoi ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par jibouze
    le htmlentities() y est pour quelque chose je crois.
    Si tu essaies sans cette fonction, ça donne quoi ?
    ça donne la meme chose, htlmentities ne s'applique qu'a la balise label (pas à l'attribut value de la balise input => valeur qui sera recupérée par $_POST).
    merci quand meme

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Poutchou
    ça serait pas parce que stripslashes() retourne une chaîne dont les anti-slash on été supprimés.
    du coup
    l\'autre devient l'autre et est mal interprété.
    j'ai un peu de mal à me plonger dans ton code, mais pour le moment je vois que ça.
    quand je fais un var_dump ou print_r($row), apres le select je constate que le simple quote "en trop" est déja present , independamment du stripslashes.
    j'ai rajouté le stripslashes en esperant qu'il opere comme si les magic quotes etaient activées pour enlever cette quote. mais dans mon code il n'a aucun effet.
    merci

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut
    oups ! désolé, j'ai lu ton code un peu trop vite je crois !

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Y'a pas de quoi
    de toute facon j'ai la mauvaise habitude de mettre tres peu de commentaires et au bout de quelques jours je sais deja plus ce que j'ai voulu faire

    je crois que je fais fausse route en cherchant la solution sous php, je viens de faire un SHOW COLUMNS FROM tbl_hebergement LIKE "type" avec phpmyadmin, et la quote est là . j'en conclus que c'est pas PHP qui la genere mais Mysql ; confirmation:

    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
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
    //modification des valeurs de la colonne SET	
    $alter = "ALTER TABLE tbl_hebergement CHANGE type type SET(\"hotel\",\"gite\",\"chambres d'hotes\",\"location meublée\",\"gite d'étape\") NOT NULL";
    mysql_query($alter,$link) or die ('Erreur : '.mysql_error() );
    // je recupere les valeurs du SET
    	$select = 'SHOW COLUMNS FROM tbl_hebergement LIKE "type"';
    	$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    if($total)	{
    $row = mysql_fetch_array($result);
    //affichage
    print_r($row);
    }
     
    donne : 
    Array ( [0] => type [Field] => type [1] => set('hotel','gite','chambres d''hotes','location meublée','gite d''étape') [Type] => set('hotel','gite','chambres d''hotes','location meublée','gite d''étape') [2] => [Null] => [3] => [Key] => [4] => [Default] => [5] => [Extra] => )
    les simples quotes sont presentes, et les doubles se sont transformées en simple... :
    un detour par le manuel Mysql n'ayant rien donné, je vais poster sur le forum MySQL
    ++

Discussions similaires

  1. Soucis avec des pointeurs, des tableaux, des char*
    Par isabell3 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/12/2009, 12h00
  2. [Tableaux] Souci avec array_push()
    Par renaud26 dans le forum Langage
    Réponses: 1
    Dernier message: 28/07/2006, 14h00
  3. [Css]Soucis avec des div
    Par nebule dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 19/05/2006, 17h03
  4. [WD9] [Débutant] Souci avec une simple requête
    Par unix27 dans le forum WinDev
    Réponses: 4
    Dernier message: 04/04/2006, 00h54
  5. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45

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