GET funktioniert nicht
Stefan
- php
Hi @ll
bin absoluter newbie in sachen PHP.
Ich möchte eine bestehende HTML-Datei in ein Verzeichnis mit einem bestimmten dateinamen (welchen ich per Formularfeld eingeben kann) kopieren.
Sieht so aus:
Datei A:
<p>
Neue Monatsdatei Anlegen:<br>
<form action="monat.php" method=get>
<input type="hidden" name="ausgefuellt" value="1">
<table border=0>
<tr>
<td>Monat:</td>
<td><input type="text" name="monat" value=""></td>
</tr>
<td></td>
<td><input type="submit" value="Neue Monatsdatei anlegen"><br></tr>
</tr>
</table>
</form>
Datei B:
monat.php:
<?php
$monat = $_GET['monat'];
copy("daten.html","$monat";
echo "Datei erfolgreich erstellt.";
?>
aber irgendwie funktioniert das nicht?!
kann mir jemand helfen?
Gruß Stefan
Hi!
copy("daten.html","$monat";
^^^^^ Klammer nicht geschlossen?
Mach mal auch ein print_r($_GET)
Hats da Inhalte drin?
Gruss, sprain
copy("daten.html","$monat");
^^^^^ Klammer nicht geschlossen?
ok ist zu jetz :)
Mach mal auch ein print_r($_GET)
Hats da Inhalte drin?
der inhalt (sowie die datei heißen soll) soll via einem Formularfeld übergeben werden.
sieht jetzt so aus..
<?php
$monat = print_r($_GET)['monat'];
copy("daten.html","$_get["monat"]");
echo "Datei erfolgreich erstellt.";
?>
geht noch nicht :(
Hi!
geht noch nicht :(
Was bedeutet das?
off:PP
Mahlzeit Stefan,
der inhalt (sowie die datei heißen soll) soll via einem Formularfeld übergeben werden.
Das ist schon klar.
$monat = print_r($_GET)['monat'];
Das KANN gar nicht funktionieren. print_r() dient zur Ausgabe von Variablen (z.B. zur Fehlersuche). Was Du möchtest, ist
$monat = $_GET['monat'];
copy("daten.html","$_get["monat"]");
Wieso machst Du Dir die Mühe und kopierst den Inhalt des GET-Parameters "monat" in eine Variable, wenn Du sie doch nicht nutzt?
Grundsätzlich ist es natürlich besser, das unnötige Umkopieren zu lassen und direkt auf $_GET zuzugreifen - dann solltest Du das aber auch richtig machen. Der zweite Parameter für die Funktion copy() sollte in der Tat ein String sein - jedoch ist bei Dir der String nach der öffenen eckigen Klammer zuende ... und danach kommt nur noch Datenmüll. Informiere Dich, wie Strings in PHP dargestellt werden. Darüber hinaus heißt das Array $_GET und nicht $_get. Und zu guter letzt brauchst Du eine einzelne Variable nicht in einen String einzuschließen.
Du solltest Dir wohl mal die Grundlagenkapitel eines geeigneten PHP-Buches oder ähnliche Lektüre zu Gemüte führen.
geht noch nicht :(
"Geht nicht" geht nicht. Welches Verhalten zeigt sich (bzw. nicht)? Welche Fehlermeldung wird angezeigt (bei PHP insbesondere das error_reporting() auch einschalten!)?
MfG,
EKKi
<form action="xxx.php" method="get">
</form>
du hast >>method=get<< geschrieben, ohne anführungszeichen.
method="GET"
Mahlzeit Alex,
du hast >>method=get<< geschrieben, ohne anführungszeichen.
Nein.
method="GET"
http://de.selfhtml.org/html/referenz/attribute.htm#form@title=Nein.
MfG,
EKKi
Mahlzeit Alex,
du hast >>method=get<< geschrieben, ohne anführungszeichen.
Nein.
method="GET"
http://de.selfhtml.org/html/referenz/attribute.htm#form@title=Nein.
MfG,
EKKi
Datei A:
<p>
Neue Monatsdatei Anlegen:<br>
ohne anfürungszeichen werden moderne browser so ihre schwirigkeiten haben, vorallem wenn es um xhtml geht.
pack die anführungszeichen und fertg ist die sache.
Mahlzeit Alex,
Zitat:
Aber nicht von mir.
pack die anführungszeichen und fertg ist die sache.
Wieso ICH?
MfG,
EKKi
Mahlzeit Alex,
Zitat:
Aber nicht von mir.
pack die anführungszeichen und fertg ist die sache.
Wieso ICH?
MfG,
EKKi
Ich meine den Poster :), nicht dich!
Mahlzeit Alex,
Ich meine den Poster :), nicht dich!
Dann antworte ihm, nicht mir ...
MfG,
EKKi
Mahlzeit Alex,
Ich meine den Poster :), nicht dich!
Dann antworte ihm, nicht mir ...
MfG,
EKKi
Ich poste zum ersten mal hier in diesem forum, sorry, dachte es funktioniert anders. Ich meine wenn der Poster eine Antwort sucht, dann liest er sich alles durch, so oder so findet er meine posts.
Sorry nochmal
Mahlzeit Alex,
Ich poste zum ersten mal hier in diesem forum, sorry, dachte es funktioniert anders.
Kein Problem - ist halt nur verwirrend, wenn Du mir antwortest, aber eigentlich dem Fragenden etwas mitteilen willst ... und ich könnte denken, Du willst mich ärgern, wenn Du behauptest, ich hätte etwas geschrieben, was ich aber gar nicht geschrieben habe ... ;-)
MfG,
EKKi
Mach mal nur das:
<?php
print_r($_GET);
?>
Dann siehst du die Ausgaben der Variablen. Ist da Inhat drin?
Wenn ja, gut.
Dann versuch das:
<?php
$neuerort = $_GET["monat"]."/daten.html";
copy("daten.html", $neuerort);
?>
Klappt das?
Wenns nicht geht. Gib uns genau Bescheid, was du machen willst und was genau wo nicht geht. Nur "geht nicht" hilft uns nicht.
Gruss, sprain
Hallo Stefan,
copy("daten.html","$_get["monat"]");
Die Verschachtelung der Anführungszeichen ist auch sehr merkwürdig. Was soll PHP denn da denken?
copy("daten.html","$_get["
und jetzt?
PHP würde jetzt ne schließende Klammer erwarten. Oder nen Operator. Aber für PHP sieht das jetzt etwa so aus:
copy( "daten.html" , "$_get[" monat "]");
Was du willst, ist eher sowas:
copy("daten.html",$_GET["monat"]);
oder
copy("daten.html",$monat);
da du die Variable bereits vorher gesetzt hast.
Jonathan
Hi Stefan,
Du solltest nicht vergessen, Deine uebergebenen Formulardaten zu pruefen, bevor Du sie der Funktion copy uebergibst.
Erstens ist es eleganter, den Fall abgefangen, in dem Nonsens eingegeben wird und das Kopieren nicht klappt. Dein Skript wuerde in dem Fall das Kopieren versuchen, scheitern und dem User dann sagen, die Datei sei erfolgreich erstellt worden worden. Gib diese Meldung nur dann aus, wenn Du geprueft hast, dass es auch stimmt.
Zweitens
der inhalt (sowie die datei heißen soll) soll via einem Formularfeld übergeben werden.
solltest Du daran denken, dass der User bei Deinem Skript in der Lage ist, nicht nur einen Dateinamen, sondern einen ganzen Pfad anzugeben, in dem die Datei gespeichert wird. Du musst also unbedingt pruefen, ob der angegebene Name nur ein Dateiname oder ein Pfad mit Verzeichnissen ist.
Gegebenenfalls auch noch (der Zweck des ganzen Skripts ist mir ueberhaupt nicht klar), ob die angegebene Datei schon existiert, weil jemand anders sie bereits eingegeben hat.
Falls Du das Skript nur lokal selbst benutzt (wofuer auch immer), wuerde ich Dir immer noch zu obigem raten. Es kann auch nicht schaden, sich vor sich selbst zu schuetzen.
Viele Gruesse,
der Bademeister