Warum denn das ...
Michael W.
- php
hallo,
ich habe jetzt den konfigurations-bereich von meiner schüler-aktions-seite fertig gemacht (hier kann man die texte eingeben und in eine*.txt speichern)
http://mitglied.lycos.de/djwoelk3/04/config.php 7 und 8 nimmt immer den text der gerade gespeichert wurde
zb gebe ich in 5 bla bla ein und nach dem speichern steht das auch in 8 und 9 - doch gebe ich was in 10 und höher ein tut er das nicht
alles unter 8 nimmt es an und über 10 nicht - was ist das für ein problem schema ??
ich habe die texte des öfteren von 07 kopiert und auf 08 und 09 angepasst, doch da ist irgend was anderes faul - nur was ? kennt ihr dieses problem vielleicht ?
Danke :) :o
hallo,
Hi
ansonsten ist aus deinem Posting nicht ersichtlich, worum es eigentlich geht. Offenbar macht irgendein Script (PHP oder JS?) nicht, was du willst, aber du solltest das schon etwas genauer beschreiben können.
cu
Heizer
Hallo Michael,
im Blindflug kann man Deine Frage schwer beantworten. Poste mal den Quwelltext vom zugehörigen php-Script. An den kommt man ja nicht ran, wenn der Server OK ist.
Gruß
Tom
im Blindflug kann man Deine Frage schwer beantworten. Poste mal den Quwelltext vom zugehörigen php-Script. An den kommt man ja nicht ran, wenn der Server OK ist.
stimmt schon, aber der quelltext ist zu lang - der passt hier nicht mehr rein ...
hab ihn dir gemailt.
im Blindflug kann man Deine Frage schwer beantworten. Poste mal den Quwelltext vom zugehörigen php-Script. An den kommt man ja nicht ran, wenn der Server OK ist.
stimmt schon, aber der quelltext ist zu lang - der passt hier nicht mehr rein ...
hab ihn dir gemailt.
Hallo Michael,
habe ihn bekommen. Dann will ich mal sehen, dass das Ergebnis hinterher hier reinpasst ;-))
Gruß
Tom
So Michael,
den Fehler habe ich eigentlich ziemlich schnell gefunden und auch beseitigt. Eine Zwischenlösung kannst Du auf meinem Server unter http://bitworks.de/~tschmieder/liste.php ausprobieren.
Allerdings mag ich Dir das Listing nicht so einfach zurückschicken. Es wären da noch einige Anmerkungen zu machen. Versprochen ist versprochen.
Tom
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
OH OH OH
warum denn ein ganz neuer ansatz ? es soll doch leicheter werden nicht komplizierter.
mein script geht doch, eben bis auf die 8 und die 9 ? - warum - das wollte ich im grunde wissen - warum gehen alle bis auf die 8 und die 9 ? :)
bei dir sieht das ganze schon ganz anders aus. es fehlt die funktion zu speichern (zumindest es geht noch nicht bei mir). bei deinem script blicke ich nicht durch. und nciht durchzublicken macht kein spaß. außerdem das die zahlen in einem disabletem input feld aufgelistet sind gefällt mir auch nicht da werden dann die namen der schüler (auch per php) ausgegeben. und das würde ich ja auch so machen, wenn ich durchblicken würde. deswegen mit meinem script war ich schon nah am ziel, sehr nah sogar. genau so sollte es nämlich aussehen, guck doch mal ob du da den fehler findest warum denn gerade die 8 und die 9 nicht geht.
Danke :o
OH OH OH
warum denn ein ganz neuer ansatz ? es soll doch leicheter werden nicht komplizierter.
mein script geht doch, eben bis auf die 8 und die 9 ? - warum - das wollte ich im grunde wissen - warum gehen alle bis auf die 8 und die 9 ? :)
bei dir sieht das ganze schon ganz anders aus. es fehlt die funktion zu speichern (zumindest es geht noch nicht bei mir). bei deinem script blicke ich nicht durch. und nciht durchzublicken macht kein spaß. außerdem das die zahlen in einem disabletem input feld aufgelistet sind gefällt mir auch nicht da werden dann die namen der schüler (auch per php) ausgegeben. und das würde ich ja auch so machen, wenn ich durchblicken würde. deswegen mit meinem script war ich schon nah am ziel, sehr nah sogar. genau so sollte es nämlich aussehen, guck doch mal ob du da den fehler findest warum denn gerade die 8 und die 9 nicht geht.
Danke :o
Hallo Michael
Lies doch bitte nochmal den ganezne Thread durch und auch die eMails, die ich Dir nebenbei ´noch geschickt habe.
Hier NOCHMAL die Begründung, warum Deine Version icht funktioniert.
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 denke, wenn Du gelernt hast, die teilweise sehr präzisen Antworten nebst den Verbesserungsvorschlägen zu lesen, können wir weitermachen.
:-((
Tom
Hallo Michael, nochmal ich...
aus dem übertragenen Form lassen sich schon einige Rückschlüsse ziehen:
Die einzige Unterscheidungsmöglichkeit für die Daten stellt die Hidden-Variable mit ihrem Value="XX" dar.
Du hast als Value teilweise führende Nullen (01,02,03...) angegeben. Das kann eine Ursache sen, je nachdem, ob Du die values als numerische Werte oder als Texte weiterverarbeitest.
Deine Eingabefelder haeißen alle "Count" und haben außerdem keine ID="...."
Deine Formulare haben keinen Namen und keine ID
Deine Submit-Buttons haben alle keinen Namen und keine ID
Ich denke, wir bekommen das hin, wenn Du willst.
Dann poste hier die fehlenen Infos und schick mir ne eMail zum Antriggern. Ich melde mich dann.
Liebe Grüße
Tom