Bonjour,
J'ai un petit souci auquel je n'entend rien malheureusement.
Sur une page php j'ai deux formulaires:
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">&nbsp;</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>';
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
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);
}
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é.
Je voudrais surtout comprendre pourquoi l'un donne dans ma base "bruyère" et l'autre "bruyère" ?