Bonjour à tous
Suite à mon post ICI, j'utilise le code que julp m'a si gentiment communiqué (que je remercie encore une fois)
Le problème, c'est qu'il y a un hic et le hic, le voici :
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 <?php define('DEBUG', TRUE); define('FICHIER_XML', 'mm_bans.xml'); $dom = new DomDocument(); $dom->preserveWhiteSpace = FALSE; $dom->formatOutput = TRUE; $dom->load(FICHIER_XML); $xpath = new DOMXPath($dom); if (defined('DEBUG') && DEBUG) { echo '<pre>'; print_r($_POST); echo '</pre>'; } /** * Première étape : lister les nick * Deuxième étape : proposer un formulaire pour modifier cette partie du ban * Troisième étape : modifier le fichier XML * * Bug (?) : les double quotes ne passent pas dans l'expression XPath **/ if (!isset($_POST['nick'])) { $nicks = $xpath->query('/banlist/ban/nick'); echo '<form method="POST">'; echo '<select name="nick">'; foreach ($nicks as $nick) { printf('<option>%s</option>', utf8_decode($nick->nodeValue)); } echo '</select>'; echo '<input type="submit" value="Valider"/>'; echo '</form>'; } else if (isset($_POST['nick']) && count($_POST) == 1) { // Mode fainéant $ban = $xpath->query(sprintf('/banlist/ban[nick = "%s"]', utf8_encode($_POST['nick']))); echo '<form method="POST">'; foreach ($ban->item(0)->getElementsByTagName('*') as $elt) { if ($elt->nodeName != 'nick') { printf('%s : <input type="text" name="%s" value="%s" /><br />', utf8_decode($elt->nodeName), utf8_decode($elt->nodeName), utf8_decode($elt->nodeValue)); } else { printf('<input type="hidden" name="%s" value="%s" /><br />', utf8_decode($elt->nodeName), utf8_decode($elt->nodeValue)); } } echo '<input type="submit" value="Modifier" />'; echo '</form>'; } else if (isset($_POST['nick']) && count($_POST) > 1) { $ban = $xpath->query(sprintf('/banlist/ban[nick = "%s"]', utf8_encode($_POST['nick']))); foreach ($ban->item(0)->getElementsByTagName('*') as $elt) { if ($elt->nodeName != 'nick') { $elt->nodeValue = utf8_encode($_POST[$elt->nodeName]); } } if (defined('DEBUG') && DEBUG) { echo '<pre>' . htmlentities($dom->saveXML()) . '</pre>'; } else { $dom->save(FICHIER_XML); } } else if (defined('DEBUG') && DEBUG) { die("Houston on a un problème :S"); }
Tant que j'utilise ce code avec la valeur True pour debug, tout fonctionne mais dès que je passe en False, j'obtiens ce message au moment ou il est sensé sauvegarder les modifications que je fais
En ligne 111, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Warning: DOMDocument::save(ftp://...@84.207.xx.xx/bf2/mods/bf2/settings/mm_bans.xml) [function.DOMDocument-save]: failed to open stream: Remote file already exists and overwrite context option not specified.<br /> FTP server reports 213 109002 in /home.10.15/sensikilw/www/Pages_Web/Serveur_BF2/Banlist/Liste_bans3.php on line 111
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dom->save(FICHIER_XML);
L'un de vous sait-il ce que signifie ce message d'erreur et comment y remédier ?
Je vous remercie d'avance pour votre aide
Partager