Bonjour,
J'ai un petit souci auquel je n'entend rien malheureusement.
Sur une page php j'ai deux formulaires:
Ses actions sont définis dans save_plan.php:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 <script type="text/javascript"> /* Pour ajouter un item */ /* $('new-item').addEvent() est definit hors de window.addEvent('domready',function(){}) car, sinon, l'ajout des item ne se fait pas; du coup, cela génère une erreur JS */ $('new-item').addEvent('submit', function(e) { new Event(e).stop(); var url = this.getProperty('action'); var method = this.getProperty('method'); new Request.HTML ({ url: url, method: method, update: $('debug'), onComplete: function() { $('new-item').reset(); tree.reload({ url: 'data_plan.php?json=yesplease&idp=<?php echo $id_plan?>' }); } }).post(this); }); </script><?php// cadre d'ajout d'un nouvel item echo '<fieldset> <legend>'.gettext('Ajouter un nouveau terme').'</legend> <form id="new-item" method="post" action="save_plan.php"> <input type="hidden" name="idp" value="'.$id_plan.'"/> <input type="hidden" name="idu" value="'.$id_user.'"/> <input type="text" name="name" /> <input type="submit" value="Ajouter" name="addItem" /> </form> </fieldset>'; // cadre pour ajouter un nouvel item echo '<fieldset> <legend>'.gettext("Liste des termes").'</legend><div id="form_ajout_termes"> <div id="bloc_liste_termes">'; ?> <script type="text/javascript"> // Mise en page du tableau des termes dom.query(document).ready(function() { dom.query('#datatable').dataTable( { "bJQueryUI": true, "sPaginationType": "full_numbers", "sDom": 'T<"clear">lfrtip', "oLanguage": { "sUrl": "jscripts/datatable/media/js/fr_FR.txt" } } ); } ); </script> <?php // definitions $termes=ClasseTerme::getTabAssocAllTermesAllType(); // affichage echo '<form id="form_add_terme" method="post" action="save_plan.php"> <input type="hidden" name="node" value="plan"/> <input type="hidden" name="mode" value="add_terme"/> <input type="hidden" name="idp" value="'.$id_plan.'"/> <input type="hidden" name="idu" value="'.$id_user.'"/> <input type="hidden" name="addTerme" value="true"/> <table cellpadding="0" cellspacing="0" id="datatable"> <thead> <tr> <th class="col_icone"> </th> <th>'.gettext('Termes').'</th> </tr> </thead> <tbody>'; foreach ($termes as $id_terme => $term) { echo '<tr> <td class="col_icone"><input type="checkbox" name="add_term_'.$id_terme.'" id="add_term_'.$id_terme.'" /></td> <td>'.$term['terme'].'</td> </tr>'; } echo '</tbody> </table> <span id="bloc_button_droite"> <input type="submit" value="Ajouter" name="add_term" /> </span> </form>'; echo '</div></fieldset>';
Le résultat, et mon problème, c'est que si j'utilise le formulaire "new-item" j'enregistre dans ma bdd: "bruyère" pour "bruyère" (et tout va bien car j'affiche "bruyère"); par contre avec le formulaire form_add_terme, j'enregistre "bruyère" dans la bdd mais l'affichage donne "bruy" - aucun caractère après l'accent n'est affiché.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 function addItem($title) { $id_plan=$_REQUEST['idp']; $title = mysql_real_escape_string($title); //$title = filter_var($title, FILTER_SANITIZE_SPECIAL_CHARS); $id_user=$_REQUEST['idu']; if ($title != '') { $sql = "INSERT INTO plans_item SET `idPlan` = ".$id_plan.",`parentId` = 0, `order` = 0, name='".$title."', cuid='".$id_user."', muid='".$id_user."', ctime=NOW()"; $result = mysql_query($sql) or die(mysql_error()); } } function addTermes() { $id_plan=$_REQUEST['idp']; $id_user=$_REQUEST['idu']; $nb_termes=0; // recup du nombre total de termes $sql = "SELECT MAX(ID) AS id_max FROM termes"; $result = mysql_query($sql) or die(mysql_error()); $row=mysql_fetch_assoc($result); if (isset($row['id_max'])) { $nb_termes=$row['id_max']; } unset($sql,$result); // Boucle pour enregistrer tous les termes cochés for ($i=1; $i<=$nb_termes; $i++) { if (isset($_POST['add_term_'.$i])) { $sql2 = "SELECT ID, terme, type_terme, cote, num_frag, muid, mtime, cuid, ctime FROM termes WHERE ID = ".$i; $result2 = mysql_query($sql2) or die(mysql_error()); $row2=mysql_fetch_assoc($result2); if (isset($row2['ID'])) { $type_item = mysql_real_escape_string($row2['type_terme']); $nom_item = mysql_real_escape_string($row2['terme']); //$nom_item = filter_var($nom_item, FILTER_SANITIZE_SPECIAL_CHARS); //$nom_item=htmlentities($row2['terme'], 'ENT_QUOTES', 'UTF-8'); $sql3 = "INSERT INTO plans_item SET `idPlan` = ".$id_plan.", `parentId` = 0, `order` = 0, `name`='".$nom_item."', `type_item`='".$type_item."', `ideObjet`='".$row2['ID']."', cuid='".$id_user."', muid='".$id_user."', ctime=NOW()"; $result3 = mysql_query($sql3) or die(mysql_error()); unset($sql3,$result3); } unset($sql2,$result2); } } } if (isset($_POST['m']) ) { $aMenu = (array) json_decode(stripslashes($_POST['m'])); saveList(0, $aMenu); die(); }elseif (isset($_POST['addItem'])) { // add item if ((isset($_POST['name'])) && ($_POST['name']!='')) { addItem($_POST['name']); } header('Location: plan.php?node=plan&mode=update&idp='.$id_plan); } if (isset($_POST['addTerme'])) { addTermes(); header('Location: plan.php?node=plan&mode=update&idp='.$id_plan); }
Je voudrais surtout comprendre pourquoi l'un donne dans ma base "bruyère" et l'autre "bruyère"?
Partager