Checkboxstatus in einer Textdatei Speichern & Auslesen

Jannick

Grünschnabel
Guten Tag,

Ich würde gerne den Status der Checkboxen, das sie angeklickt(checked) sind oder nicht(unchecked), also das die Häkchen dauerhaft bei denen die angeklickt wurden gesetzt bzw. nicht gesetzt sind in einer Textdatei speichern lassen. Die Textdatei ist sozusagen die Datenbank. Und der Status soll dann natürlich auch wieder aus der Textdatei ausgelesen werden.
Bis jetzt funktioniert nur das speichern der Werte in die Textdatei, das Auslese leider noch nicht.

Mein bisheriger Code:

index.php
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>Test</title>
  <link href='style.css' rel='stylesheet'>
 </head>
<body>
<fieldset>
 <legend>Formular</legend>
<?php
/* Formularangaben in einer Textdatei speichern und auslesen */
if (isset($_POST['check'])) {
  reset($_POST['check']);
unlink("log.txt"); 
for ($i=0; $i<count($_POST['check']);$i++) {
//echo "<br />value $i = ".$_POST['check'][$i];
 $dateiname = "log.txt";
 $handler = fOpen($dateiname , "a+");
 fWrite($handler , "value $i = ".$_POST['check'][$i] . "\n");
 fClose($handler);
}
}

 //Formularangaben einlesen
foreach (file("log.txt") as $zeile) {
 if (strpos($zeile, " = ")) {
  list($variable, $value) = explode(" = ", $zeile);
  $$variable = chop($value);
if($value!="") {
$checked = checked;
}
}
}

// Formular (Formularangaben ausgeben)
echo '<form action="' . $_SERVER["SCRIPT_NAME"] . '" method="post">
<table border="1" align="center">
  <tr>
    <td></td>
    <td><font class="senkrecht2"><br><br>12.02.12<br><br><br></font></td>
    <td><font class="senkrecht2"><br><br>13.02.12<br><br><br></font></td>
    <td><font class="senkrecht2"><br><br>14.02.12<br><br><br></font></td>
    <td><font class="senkrecht2"><br><br>15.02.12<br><br><br></font></td>
    <td><font class="senkrecht2"><br><br>16.02.12<br><br><br></font></td>
  </tr>
  <tr align="center">
    <td>Hans</td>
    <td><input type="checkbox" name="check[]" value="1.1" '.$checked.'/></td>
    <td><input type="checkbox" name="check[]" value="1.2" '.$checked.'/></td>
    <td><input type="checkbox" name="check[]" value="1.3" '.$checked.'/></td>
    <td><input type="checkbox" name="check[]" value="1.4" '.$checked.'/></td>
    <td><input type="checkbox" name="check[]" value="1.5" '.$checked.'/></td>
  </tr>
</table>
 <center><p> <input type="submit" value="Speichern"> </p></center>
</form>';
?>
</fieldset>
</body>
</html>

Freue mich über Hilfe und Lösungsvorschläge.

MfG
Jannick
 
Zuletzt bearbeitet von einem Moderator:
Hallo und willkommen im Forum Jannick,

gewöhne dir bitte an, PHP-Code ordentlich einzurücken und setze Quellcode der PHP enthält bitte in die entsprechenden BB-Code-Tags.

PHP:
echo 'Hallo Jannick';

Beste Grüße
 
Und was geht denn nicht? Ich sehe in deinem Code auf jedenfall schon mal einige Fehler. Man könnte es auch einfacher machen.
Bekommst du denn keinen Fehler angezeigt?

PHP:
error_reporting(E_ALL);
ini_set('display_errors', 1);

Mal an den Anfang der Datei setzen.
 
Du solltest dir als erstes überlegen, wie diese Textdatei Sinnvoll aufgebaut werden soll.

item: Sie muss maschienenlesbar und intepretierbar sein.
Da hast jetzt ein Format in dieser Art. Das ist nachher nicht gerade sehr komfortabel zum automatisch intepretieren
Code:
value 0 = 1.2
value 1 = 1.3

item: Der Name log.txt ist irreführend. Das ist kein Log sondern Settings oder sowas.
 
Danke schonmal für die vielen Antworten :)

@Maniac der einzige Fehler der angezeigt wird wenn ich das einfüge ist:

"Notice: Use of undefined constant checked - assumed 'checked' in /srv/www/htdocs/index.php on line 32 Notice: Use of undefined constant checked - assumed 'checked' in /srv/www/htdocs/index.php on line 32 Notice: Use of undefined constant checked - assumed 'checked' in /srv/www/htdocs/index.php on line 32 Notice: Use of undefined constant checked - assumed 'checked' in /srv/www/htdocs/index.php on line 32 "

In dem einlesen Teil der ja auch nicht funktioniert.

MfG
Jannick
 
Du hast in deinem Code
PHP:
if($value!="") {
$checked = checked;
}
Sollte das nicht eher
PHP:
if($value!="") {
$checked = "checked";
}
heißen?
 
Du hast in deinem Code
PHP:
if($value!="") {
$checked = checked;
}
Sollte das nicht eher
PHP:
if($value!="") {
$checked = "checked";
}
heißen?

Das ist zwar ein Hinweis auf den ich vorher hinaus wollte mit den Error-Meldungen, löst aber nicht sein Problem.

Du hast auch einen Denkfehler in deiner Logik.

Dein Skript macht bisher folgendes:

Lese alles aus der log.txt aus,
gehe es Zeile für Zeile durch und wenn ein Wert angegeben ist, dann setze die Variable auf "checked".

Dies machst du in einer Schleife, das heist du überschreibst dir während du die Schleife durchgehst in jedem durchgang deine "$checked" Variable.
Somit hast du nach der Schleife nur den letzten Wert welcher vergeben wurde.

Dein Formular zeigst du auch nach der Schleife an und verwendest hier diese Variable. Also hat auch dementsprechend jede Checkbox den letzten Wert aus der Schleife.
Richtig wäre allerdings, deine Schleife in das Formular zu setzen, in dem Teil wo du die Checkboxen befüllst.
 
Danke für die Antworten, aber wie setzt man denn die Schleife in das Formular? In meinem Fall ist ja das komplette Formular eine "echo" Ausgabe. Kann man denn Schleifen in "echo" Ausgaben erstellen?

MfG
Jannick
 
PHP:
// Formular (Formularangaben ausgeben)
echo '<form action="' . $_SERVER["SCRIPT_NAME"] . '" method="post">
<table border="1" align="center">
  <tr>
    <td></td>
    <td><font class="senkrecht2"><br><br>12.02.12<br><br><br></font></td>
    <td><font class="senkrecht2"><br><br>13.02.12<br><br><br></font></td>
    <td><font class="senkrecht2"><br><br>14.02.12<br><br><br></font></td>
    <td><font class="senkrecht2"><br><br>15.02.12<br><br><br></font></td>
    <td><font class="senkrecht2"><br><br>16.02.12<br><br><br></font></td>
  </tr>
  <tr align="center">
';
 //Formularangaben einlesen
foreach (file("log.txt") as $zeile) {
 if (strpos($zeile, " = ")) {
  list($variable, $value) = explode(" = ", $zeile);
  $$variable = chop($value);
if($value!="") {
$checked = "checked=\"checked\"";
}
}
echo '<td>Hans</td>
    <td><input type="checkbox" name="check[]" value="1.1" '.$checked.' /></td>
    <td><input type="checkbox" name="check[]" value="1.2" '.$checked.' /></td>
    <td><input type="checkbox" name="check[]" value="1.3" '.$checked.' /></td>
    <td><input type="checkbox" name="check[]" value="1.4" '.$checked.' /></td>
    <td><input type="checkbox" name="check[]" value="1.5" '.$checked.' /></td>';
}
echo '</tr>
</table>
 <center><p> <input type="submit" value="Speichern"> </p></center>
</form>';
?>

So in der Art sollte es funktionieren. Vorrausgesetzt dein Auslesen ist richtig.
 
Danke für deine Hilfe Maniac, aber leider funktioniert es nicht wenn ich den Code so einfüge kommt:

aaa.png

MfG
Jannick
 
Zurück