Problem: Ändern einer txt-db

Besessener

Mitglied
hallo !

ich hab folgendes problem:
ich hab vor aus einer txt-db den inhalt auszulesen und die einzelnen datenfelder in textboxen auszugeben und am schluss alles zu speichern und damit alles neu überschreiben. es dient also nur dazu, den inhalt der txt-db zu ändern.
hier ein teil des codes, der aber nicht vernünftig funzt:

PHP:
<form method="post">
<?
 echo "<table border=1>";
 echo "<tr>";
 echo "<td>Nummer </td>";
 echo "<td>Nickname </td>";
 echo "<td>Name </td>";
 echo "<td>Status </td>";
 echo "</tr>";

 $zähler=0;

 $fp=fopen ("../teilnehmer.db", "r"); if (!$fp) { echo $RError; exit;}
 $Datenbank = fread  ($fp, filesize ("../teilnehmer.db"));
 fclose ($fp);

 $Datenbank = explode("///",$Datenbank);



  for ($a=0;$a<count($Datenbank)-1;$a++)
  {
   $Datenbank[$a]=explode("|||",$Datenbank[$a]);


    echo "<tr>";
    echo "<td>"; echo $zähler=$zähler+1; echo"</td>";
    echo "<td>"; echo "<input type=\"Text\" name=\""; echo "a".$zähler; echo "\" value=\""; echo $Datenbank[$a][0]; echo "\">";  echo "</td>";
    echo "<td>"; echo "<input type=\"Text\" name=\""; echo "b".$zähler; echo "\" value=\""; echo $Datenbank[$a][1]; echo "\">";  echo "</td>";
    echo "<td>"; echo "<select name=\""; echo "c".$zähler; echo "\"><option>"; echo $Datenbank[$a][2];
    if ($Datenbank[$a][2]=="bezahlt") { echo "<option>nicht bezahlt</select>"; }
    else { echo "<option>bezahlt</select>"; }
    echo "</tr>";

  }
?>

</table></div></font><div align="center"><br>
<br><input type="Submit" name="send" value="send"></div></form>


<?
 if($send=="send")
 {
  $datei=fopen("../teilnehmer.db","w");
  for($i=1;$i<=$zähler;$i++)
  {
   fwrite($datei, "");
  }
  fclose($datei);
  echo "Teilnehmer wurden geändert!";
 }
?>

wie ihr bestimmt erkennt, ergibt sich nun das problem, wie ich die textboxen in einer schleifen benennen kann und zudem noch in einer anderen schleife darauf zugreifen kann, damit ich die alle daten wieder neu in die txt-db eintragen kann.

ich hoffe ich hab mich klar genug ausgedrückt und hoffe auch , dass ihr mir weiterghelfen könnt

vielen dank schonmal im voraus (optimistisch bin)

mfg
besessener
 
ich habe einmal meinen eigenen code dafür geschrieben wenn du willst kann ich ihn dir mal posten
 
Hallo,

ich habe Dein Script etwas umgeschrieben. Deine Fehler lagen wahrscheinlich darin, dass Du im <form>-Tag keinen action-Parameter angegeben hast, der das Formular mit der Werten an ein Script schickt, das die Daten verarbeitet. Des weiteren habe ich Namen der Input-Felder in die Form eines Arrays gebracht, so dass bei der Übergabe der des Formulars an ein Script die Daten auch als Array ankommen. Die Anzeige der Daten und die Bearbeitung erfolgt in ein und dem selben PHP-Script. Im action-Parameter des <form>-Tags musst Du noch deinen Scriptnamen eintragen (momentan steht da test.php). Das Script geht davon aus, dass die Werte in der TXT-Datenbank in der Form 1.Wert|||2.Wert|||bezahlt///1.Wert|||2.Wert|||bezahlt/// usw. vorliegen.

Ich hoffe, dass ich Dir helfen konnte.

Gruß, snuu

PHP:
<?

  // Daten ändern
  if($send == "send") {
    $datei = fopen("../teilnehmer.db","wb");

    for($i = 0; $i < count($a); $i++) {
      fwrite($datei, $a[$i].'|||'.$b[$i].'|||'.$c[$i].'///');
    }
    
    fclose($datei);
    echo "Teilnehmer wurden geändert!";
  }


  // Daten ausgeben
  echo '<form action="test.php" method="post">
        <table border="1">
          <tr>
            <td>Nummer </td>
            <td>Nickname </td>
            <td>Name </td>
            <td>Status </td>
          </tr>';

  $zaehler=0;

  $fp=fopen ("../teilnehmer.db", "r"); if (!$fp) { echo $RError; exit;}
  $Datenbank = fread  ($fp, filesize ("../teilnehmer.db"));
  fclose ($fp);

  $Datenbank = explode("///",$Datenbank);

  for ($a=0; $a < count($Datenbank)-1; $a++) {
    $Datenbank[$a] = explode("|||",$Datenbank[$a]);

    echo '<tr>
            <td>'.($zaehler++).'</td>
            <td><input type="Text" name="a[]" value="'.$Datenbank[$a][0].'"></td>
            <td><input type="Text" name="b[]" value="'.$Datenbank[$a][1].'"></td>
            <td><select name="c[]"><option>'.$Datenbank[$a][2];

    if ($Datenbank[$a][2] == "bezahlt") {
      echo "<option>nicht bezahlt</select>";
    } else {
      echo "<option>bezahlt</select>";
    }
    echo "</tr>";
  }

  echo '</table></div></font><div align="center"><br>
        <br><input type="Submit" name="send" value="send"></div></form>';

?>
 
ok, das geht wunderbar soweit

danke sehr

ein weiteres problem hat sich nun eingeschlichen
nun wollte ich noch eine checkbox einbinden, aber immer wenn ich ein beliebiges mit einem häkchen versehe, dann wird automatisch immer das allererste mit einem häkchen versehen.

alle "ausmachen" und alle "anmachen" geht ja.
hier der code zu dem teil (ergänzung zum oberen code von snuu):
PHP:
if ($Datenbank[$a][3]=="yes") {
    echo '<td><input type="checkbox" name="d[]" value="yes" checked></td>';
    }
    else {
    echo '<td><input type="checkbox" name="d[]" value="yes"></td>';
    }
 
ok, tut mir leid
bin schon auf eine lösung gekommen

hab anstelle einer checkbox halt wieder eine "selecbox" genommen

danke trotzdem soweit :)
 
Zurück