Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » PHP » Syntaxfehler

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
31.07.2003, 12:19 Uhr
Oliver
S2-Pixelgeneral


Hallo,

kaum geht es mit dem testen, da kommen schon die ersten Syntakfehler


PHP 4:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/transitional.dtd">
<html>
<head>
<title>Best&auml;tigung</title>
</head>
<body>
<p>Ihre Daten wurden erfolgreich abgeschickt!</p>
<?php

// Dateien lesen

$datei = fopen("daten.txt","r");
$anzahl = fgets($datei);

// Daten lesen
for($i = 0;$i<$anzahl;$i++)
{
$names[$i]=fgets($datei);
$emails[$i]=fgets($datei);
$alter[$i]=fgets($datei);
}
fclose($datei);

$anzahl++;

$schr = fopen("daten.txt","w");
fwrite($schr,$anzahl);
fwrite("\n");

for($i=0;$i<$anzahl-1;$i++)
{
fwrite($schr,$names[$i]);
fwrite($schr,"\n");
fwrite($schr,$emails[$i]);
fwrite($schr,"\n");
fwrite($schr,$alter[$i]);
fwrite($schr,"\n");
}
fwrite($schr,$_POST["nickname"]); fwrite($schr,"\n");
fwrite($schr,$_POST["emailadresse"]); fwrite($schr,"\n");
fwrite($schr,$_POST["alter"]); fwrite($schr,"\n");
fclose($schr);
?>
</body>
</html>



Ich will eine dynamische Tabelle erstellen, dazu hab ich 4 Dateien:

show.php - stellt die Tabelle dar
anmelden.html - ist das Anmeldeformular, was die Daten an write.php schickt
write.php - schreibt übergebene Daten vom Anmeldeformular in die Datei "daten.txt"
daten.txt - speichert die Daten

Der obige Code ist die write.php.
Aber da kommt immer ein Fehler:


Zitat:

Parse error: parse error, unexpected ';', expecting ')' in Cweb\server\Apache2\htdocs\Test\write.php on line 31



Aber ich find den Fehler nicht...
Es muss warscheinlich irgendwas in der 2. For Schleife sein, aber ich finds nicht

Danke, für Hilfe
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.07.2003, 12:26 Uhr
0xdeadbeef
Gott
(Operator)


Nimmt fwrite nicht zwei Parameter? Das hier:

PHP 4:
fwrite($schr,$anzahl);
fwrite("\n");


macht jedenfalls auf den ersten Blick nicht viel Sinn. Wie wärs mit

PHP 4:
fwrite($schr,$anzahl);
fwrite($schr,"\n");


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.07.2003, 12:42 Uhr
Oliver
S2-Pixelgeneral


Stimmt

Aber der Fehler kommt immer noch.
Das Darstellen aber funktioniert einwandfrei.
Hier mal noch der andere Code, vielleicht hilft dir das weiter:

show.php


PHP 4:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/transitional.dtd">
<html>
<head>
<title>Mitglieder</title>
</head>
<body>
<h1>Mitglieder von Olis Webseite</h1>
<?php

// Datei öffnen
$datei = fopen("daten.txt","r");
$anzahl = fgets($datei);

// Daten lesen
for($i = 0;$i<$anzahl;$i++)
{
$names[$i]=fgets($datei);
$emails[$i]=fgets($datei);
$alter[$i]=fgets($datei);
}
?>

<table border>
<tr><th>Nickname</th><th>Email</th><th>Alter</th></tr>
<?php
// dynamische Tabelle anzeigen
for($i=0;$i<$anzahl;$i++)
echo "<tr><td>{$names[$i]}</td><td>{$emails[$i]}</td><td>{$alter[$i]}</td></tr>";

fclose($datei);
?>
</table>
</body>
</html>



anmelden.html


Code:
<html>
<head>
<title>Anmelden</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<h1>Werde Mitglied!!!</h1>
<p>F&uuml;lle einfach das Formular unten aus!</p>
<form method="post" action="write.php" name="form">
  <p>Nickname:
    <input type="text" name="nickname">
  </p>
  <p>Email: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="text" name="emailadresse">
  </p>
  <p>Alter: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <input type="text" name="alter">
  </p>
  <p>
    <input type="submit" name="Button" value="Abschicken">
    <input type="reset" name="Button2" value="Zur&uuml;cksetzen">
  </p>
</form>
<p>&nbsp; </p>
</body>
</html>



Beispielwerte in der daten.txt


Code:
2
User1
examplemail
42
User2
examplemail
38


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.07.2003, 14:10 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


fgets (in Zeile 13) nimmt auch nicht nur 1en Parameter! du musst noch angeben wieviel er zu lesen hat, also z.b so:


PHP 4:
$anzahl = fgets($datei,512); // liest 512 Zeichen maximal bis zum Zeilenende



Außerdem wie er schon sagte, das


PHP 4:
fwrite("\n");



in Zeile 30

muss


PHP 4:
fwrite($schr,"\n");



heißen!
--
class God : public ChuckNorris { };

Dieser Post wurde am 31.07.2003 um 14:12 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.07.2003, 15:01 Uhr
Oliver
S2-Pixelgeneral


Die Lenge bei fgets ist optional!
Es liest so lange, bis entweder ein Zeilenumbruch kommt, eof erreicht wird oder die angegebene Lenge erreicht wird.
Außerdem geht es ja beim Lesen auch, wo ich ebenfalls fgets(Parameter1) geschreiben habe.
So stehts zumindest in meiner Anleitung.

Ich hab das bei fwrite schon verbessert, der Fehler kommt aber trotzdem noch.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.07.2003, 16:03 Uhr
0xdeadbeef
Gott
(Operator)


Was ist eine Lenge?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.07.2003, 17:44 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich würde es sowieso anders schreiben:


PHP 4:
$datei = file("daten.txt"); // Datei als Array einlesen

$f = fopen("daten.txt","w");

$datei[0] = trim($datei[0]); // return wegmachen
$datei[0]++;
$datei[0] .= "\n"; // wieder return anhängen

fwrite($f,join('',$datei)); // Anzahl + alte Einträge in datei schreiben

fwrite($f, $_POST["nickname"]."\n");
fwrite($f, $_POST["emailadresse"]."\n");
fwrite($f, $_POST["alter"]."\n");

fclose($schr);



Bei großen Dateien ist deine Methode SEHR unperformant, am geschicktesten ist es die datei per a zu öffnen, die anzahl auszulesen, erhöhen zu schreiben (von vornherein z.b ans ende die anzahl) den neuen datensatz davor anhängen und fertig...

fseek usw wie in c++ gibt es in php genauso...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
31.07.2003, 20:21 Uhr
Oliver
S2-Pixelgeneral


Das Problem war ein ganz anderes.
Ich hat ja gemäß FloSofts Anleitung den http Ordner angelegt, und in der Konfigurationsdatei, das auch so eingestellt, aber dann gings es nicht, und wenn ich es in htdocs meine Scripts reingeschoben habe, gings.
Dann habe ich (warscheinlich) neu gestartet und da wollte er immer Scripts haben, die in dem http Ordner lagen. Und da konnte ich rumändern so viel ich wollte, es hat immer sich die letzte Aktualisierung "gemerkt", die natürlich die fehlerhafte war.

@FloSoft:

Auf das fseek bin ich nicht gekommten, werds mal damit probieren.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )

Dieser Post wurde am 31.07.2003 um 20:21 Uhr von Oliver Müller editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
31.07.2003, 20:57 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du hast scheinbar das net stop und net start vergessen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ PHP ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: