Bonjour à tous,
j'ai un champ de type SET dans une base Mysql rentré tel quel :je recupere les valeurs du SET pour en faire des checkbox :
Code : Sélectionner tout - Visualiser dans une fenêtre à part set('hotel', 'gite', 'chambres d\'hotes', 'location meublée', 'gite d\'étape')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) .
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>
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
Partager