Hallo Michael,
ich habe aus Deinen 11 Seiten Quelltext jetzt ca. 1 Seite gemacht. Dafür kann das Script jetzt auch mit den Fehlern umgehen, die Auftreten, wenn noch keine Datendateien angelegt sind. Sollte sich die Anzahl der Einträge mal ändern, so brauchst Du nur eine einzige Variable (bzw. hier ist sie noch Konstante) in Zeile 38 ändern, und alles Andere macht das Script alleine (natürlich mit Unterstützung des Prozessors *gg*)
Zu Deinem Fehler:
Du hattest eine Variablenabfrage auf $OK gemacht:
---Originaltext---
if($ok==01):
$file = "01.txt";
$data = fopen($file, "w");
fwrite($data, $Count);
fclose($data);
unset($ok);
------------------
Du hättest sie in Häkchen setzen müssen, denn alle HTTP-Variablen sind Texte und müssen erst am Server wieder umgewandelt werden. Die einzige Variablenart, die ich kenne, die binär ankommt (übertragen wird sie auch ASCII-Codiert) sit der <input Type="FILE" ...
---so wärs gegangen---
if($ok=="01")
{
$file = "01.txt";
if ($data = @fopen($file, "w"))
{
fwrite($data, $Count);
fclose($data);
}
else
{
echo "Fehlermeldung... <br>";
}
}
------------------
Ich mag lieber die etwas ausführlichere Schreibweise. Aber das hat ja nichts mit der Funktion zu tun.
Ich habe eben auch noch geflucht. Da ich früher sehr viel Pascal (und Assembler) gemacht habe, war ich gewohnt, dass die Funktion Filesize() ein Handle haben wollte, das ist aber in PHP nicht so. da gibt man den DateiNAMEN ein. OhOh...
Noch was zur Datenhaltung
---+---Daten und "geheime PHP-Scripte"
|
|
+---Document_Root---+-----HTML-Seiten und normale PHP-Scripte
|
+-----Bilder
|
+-----sonst noch was...
|
Grundsätzlich sollte man die Ddaten-Dateien aus der Document-Root rauslassen. Auf die Document-Root muss niemand Zugriff haben. Nur der wwwrun sollte lesen (r) dürfen und bei Verzeichnissen browsen (x). Es empfiehlt sich auch, für jede HTML-Seite ein eigenes Verzeichnis zu benutzen. Schließlich bestehen solche Seiten oft aus vielen PHP-Scripten und dutzenden von Frames... Das Master-Frameset sollte den den Default-Namen ( z.B. index.html) tragen, den Dein Server bevorzugt.
Auf das Datenverzeichnis braucht der wwwrun Schreib- und Lesezugiff. Am Besten sit, du überträgst ihm den Besitz.
chown wwwrun daten
chmod 700 daten
----fertiges Script, noch beliebig zu verbessern ---------
<html>
<head>
<title>Eingabeliste made by bitworks.de</title>
</head>
<body>
<!-- <div align="left"> -->
<table width="90%" border="0" cellpadding="0" cellspacing="0">
<!-- Begin des PHP-Bereiches --------------------------- -->
<?
$filename = "../daten/datei".$rowno.".txt";
//---- Speicherbereich -----
if ($edit)
{
if (!$ziel=@fopen($filename,"w"))
{
echo "<tr><td>Fehlermeldung </td><tr>";
}
else
{
chmod($filename,0600); // damit niemand anders an die Daten herankommt
$daten=stripslashes($daten); // Maskierungs-Backslashes entfernen
// entstehen im Browser beim Senden
fwrite($ziel,$daten);
fclose($ziel);
}
}
//---- Ausgabebereich -----
$zeile=0; // bisher wurde nix ausgegeben
while ($zeile < 22)
{
$zeile++;
$filename = "../daten/datei".$zeile.".txt";
$feldinhalt="[KEINE DATENQUELLE]";
if ($quelle=@fopen($filename,"r"))
{
$feldinhalt = fread($quelle,fileSize($filename));
fclose($quelle);
}
echo "<tr><td>";
echo "<form name='liste".$zeile."' ID='liste".$zeile."' method='post' action='".$PHP_SELF."'>\n";
echo " <input type='text' name='rowno' size='3' value='".$zeile."' readonly>\n";
echo " <input type='text' name='daten' size='60' value='".$feldinhalt."'>\n";
echo " <input type='submit' name='edit' value='SAVE'>\n";
echo "</form>";
echo "</td></tr>";
}
?>
<!-- Ende des PHP-Bereiches ------------------------------------------- -->
</table>
<!-- </div> -->
</body>
</html>
---------------------------------------------------------------
Vielleicht kannst Du mir sagen, wieso ich den Zeilenabstand der Input-Zeilen nicht mehr wegbekomme. Ich habe immer eine Zeile Luft dazwischen.
Viel Spaß damit
Tom