Hallo,
ich habe ein ini-file, welches durch variable Formulare geschrieben werden soll. Jetzt habe ich das Problem, daß eine nicht markierte checkbox keinen Wert übermittelt. Der Effekt ist, daß ich zwar einmalig den Wert "1" für eine markierte checkbox schreiben kann, doch diesen nicht wieder löschen kann, weil eben kein Wert übergeben wird.
Kann mir einer helfen folgendes script zu verbessern?
Hier erstmal das ini-file (config.ini)
Code:
[news]
enable = "1"
readmore = "1"
[birthday]
enable = "1"
reminder = "1"
... hier ein Auszug aus dem Formular (für die News):
Code:
# Konfiguration einlesen
$datei = "db/config.ini";
if (!file_exists($datei)) $datei = "../db/config.ini";
$config = parse_ini_file($datei,true);
.....
if ($config[news][enable] == 1) {
$check = "checked";
} else {
$check="";
}
echo "News anzeigen: <input type='checkbox' name='news_enable' value='1'",$check,">";
if ($config[news][large] == 1) {
$check = "checked";
} else {
$check="";
}
echo "News Readmore-Funktion: <input type='checkbox' name='news_readmore' value='1'",$check,">";
......
und hier die Funktion zum Schreiben des ini-files:
Code:
foreach ($config as $key1=>$array) {
foreach ($array as $key2=>$value) {
$postname = $key1 . "_" . $key2;
# Wenn Post übergeben wurde, dann zuweisen...
if (isset($HTTP_POST_VARS[$postname])) {
$config[$key1][$key2] = $HTTP_POST_VARS[$postname];
}
}
}
if (WriteIni($config,"../db/config.ini")) {
echo "Die Konfiguration wurde erfolgreich geschrieben!";
}
# ini-db schreiben #
function WriteIni($assoc_arr, $path) {
$content = "; CONFIG-Datei für die Page4You-Hauptkonfiguration\n; Diese Datei wird im Adminstrationsbereich mittels\n; Web-Oberfläche [CONFIG] geschrieben\n\n";
foreach ( $assoc_arr as $key=>$elem ) {
$content .= "[".$key."]\n";
foreach ( $elem as $key2=>$elem2) {
$content .= $key2." = \"".$elem2."\"\n";
}
$content .= "\n";
}
if (!$handle = fopen($path, 'w')) {
return false;
}
if (!fwrite($handle, $content)) {
return false;
}
fclose($handle);
return true;
}
Das ini-file hat ca. 200 Einträge und über die Formulare soll immer nur ein gewisser Bereich des ini-files neu geschrieben werden.
Danke schonmal.... ich hoffe Ihr versteht was ich meine.
Thomas