• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datei via Button erstellen

bjoernmuehle

Neues Mitglied
Hallo zusammen,
ich bin mit php noch nicht wirklich vertraut und stehe vor folgendem Problem. Ich möchte mittels eines kleinen Formulares eine Datei erstellen. In dem Formular habe ich zwei Textfelder und darunter eine Schaltfläche. Per Klick auf die Schaltfläche soll eine html Datei erstellt werden, deren Datename sich aus den Eingaben der beiden Textfelder zusammensetzt. Außerdem sollen die Dateinamen eine laufende Nummer beinhalten.

Also z.B. "1 - Texta - Textb.html"

Wie kriege ich das hin? Ist es möglich dass die erstellten Files auf einer bestimmten Vorlage basieren, welche dann quasi kopiert und umbenannt wird?

VG
Björn
 
Also ich habe hier folgendes Formular:

HTML:
<form action="">
                <select name="altersGruppe[0]" accesskey="a" tabindex="1"
                      onchange="aendereGewichtsKlassen(this.value, 'gK0');">
                  <option value=""></option>
                  <option value="B">B</option>
                  <option value="TH">TH</option>
                  <option value="RD">RD</option>
                </select>
                <select name="gewichtsKlasse[0]" id="gK0" accesskey="g" tabindex="2" style="width: 212px">
                </select>

              <input type="button" name="Datei erstellen" value="Neuen Einsatz anlegen"
      onclick="'" style="width:263px">
Wie bekomme ich es hin, dass mit dem Klicken des Buttons eine html Datei erstellt wird, dessen Dateiname aus den beiden Textfeldern besteht.

LG
Björn
 
So ganz komme ich damit noch nicht klar. Bin in PHP halt leider noch ein Laie. Folgenden PHP COde habe ich:

PHP:
<?php

if ( $_GET['altersgruppe[0]'] <> "" )
{
    // und nun die Daten in eine Datei schreiben
    // Datei wird zum Schreiben geöffnet
    $handle = fopen ( "anfragen.txt", "w" );

    // schreiben des Inhaltes von email
    fwrite ( $handle, $_GET['altersGruppe[0]'] );

    // Trennzeichen einfügen, damit Auswertung möglich wird
    fwrite ( $handle, "|" );

    // schreiben des Inhalts von name
    fwrite ( $handle, $_GET['gewichtsKlasse[0]'] );

    // Datei schließen
    fclose ( $handle );

    echo "Danke - Ihre Daten wurden speichert";

    // Datei wird nicht weiter ausgeführt
    exit;
}

?>
zu folgendem Formular:
HTML:
<table>
         <tr>
         <td width="11" ></td>
            <td><label>
              </label><div align="center">
                <form action="select.htm" method="get">
                <select name="altersGruppe[0]" accesskey="a" tabindex="1"
                      onchange="aendereGewichtsKlassen(this.value, 'gK0');">
                  <option value=""></option>
                  <option value="B">B</option>
                  <option value="TH">TH</option>
                  <option value="RD">RD</option>
                </select>
                                                    <select name="gewichtsKlasse[0]" id="gK0" accesskey="g" tabindex="2" style="width: 212px">
                </select>

            </td>
          </tr>
          <tr>
                 <td></td>
                 <td>                <input type="submit" name="Text 1" value="Neuen Einsatz anlegen" style="width:263px"></td>
      </tr>
</table>
Nun bekomme ich folgende Fehlermeldung: Notice: Undefined index: altersgruppe[0] in C:\xampp\htdocs\ILSU\index.php on line 83 (welche die if-Abfrage beinhaltet)

Liegt das vielleicht an der Javaverknüpfung des Formulars?

VG
 
Hallo,

also das das Formular die daten zu eine htm Seite schickt ist richtig? keine php datei.

Du schafst dir deine eigenen fehlerquellen.

Formular, wie machst daraus ein Array? name="altersGruppe[0]"
ist doch unnötig.

Im PHP code wird auf einmal aus den altersGruppe[0] -> altersgruppe[0]?
-groß/KLEIN schreibung falsch
-und der punkt von eins höher wieso Array wenn nicht weist wie das verarbeitet wird.
+ wurde das mal so machen $_GET['altersGruppe']['0'] oder einfach das [0] im formular löschen, machst dir nur arbeit und fehler.

Javaverknüpfung? meinst wohl eher Javascript?

Cheffchen

ps:
$handle = fopen ( "anfragen.txt", "w" );
mit dem "w" wird immer der alte Inhalt überschrieben. also vielleicht besser "a+"
http://php.net/manual/de/function.fopen.php
 
Zuletzt bearbeitet:
Die Sache ist ja folgende. Ich möchte mit diesem Formular ja gar keine Inhalte in eine Datei schreiben, sondern eine Datei erzeugen, deren Dateiname der Auswahl aus dem Formular entspricht.

Gruß
Björn
 
Code:
$handle = fopen ( $dieVariableDieDenWertAusDemFormularEnthält, "w" );
close($handle);
 
Wenn ich das Ganze mit einem normalen Textfeld mache kriege ich das hin.
PHP:
    <?php
$test = $_POST["textfield"];
$handle = fopen ( $test.'.txt', "w" );
?>
Aber wie lese ich die Auswahlbox aus. Die ich oben gepostet habe. Wenn ich einfach den Namen eingebe sagt er mir undefined Index.
Wenn ich das "[0]" hinter den Namen weglasse, dann generiert er mir eine Datei mit dem Namen Array.

Also am Ende will ich dahin, dass ich mit dem Klick eine html Datei öffne und Sie anschließend unter einem neuen namen neu speicher, welcher aus den beiden Eingaben des Formulares besteht.
 
Zuletzt bearbeitet:
Auf den in einem select ausgewählten Wert greift man ebenso wie bei einem Textfeld einfach per

PHP:
$altersGruppe[0]

zu. Wenn dort "B" ausgewählt wird, würde bei der Ausgabe von

PHP:
echo "Auswahl: ".$altersGruppe[0];

das erscheinen

Code:
Auswahl: B
 
Register globals? ;-)

@bjoernmuehle: Lass dir mal var_dump($_POST); ausgeben in der Seite, die die Formulareingaben verarbeitet. Dann siehst du, was in PHP ankommt.
 
Hallo nochmal.
Erstmal Danke für die zahlreichen Antworten aber ich habe mich dazu entschlossen, dass Ganze nun etwas einfacher zu machen. Ich möchte nun keine Formulareingaben mehr auslesen sondern nur einen Button, der bei einem anklicken eine Datei erstellt die den Namen "Einsatz x" bekommen soll. Das X soll hierbei eine fortlaufende Nummerierung darstellen. Wie bekomme ich das hin?

Das größere Problem was ich sehe ist, wie ich es hinbekomme, dass die erstellte Datei auf Basis einer Vorlage erstellt wird. Es soll quasi eine Datei erzeugt werden die ein Formular beinhaltet welches ich vorher programmiere. Also eine bestehende php bzw. html Datei soll quasi nur kopiert und unter dem Namen "Einsatz X" abgespeichert werden.

Ich hoffe es ist klar wie ich das meine. ;)

VG
 
Hallo,

da siehst nicht richtig, is nicht so willt obwohl ich das vom sinn her nicht verstehe.
meinst so:
-eine Datei als vorlage erstellen
-eine datei als zähler
-> formolar klick
-> die vorlage wird eingelesen und due datei mit dem zahler.
-> jetzt wird die neue Datei erstellt mit ddem Inhalt der vorlage und dateiname zäher+1
-> zum schluss wird der zäher+1 wieder in die Datei geschrieben
Ferig

oder meinst das anders, wieso soll der inhalt gleich sein und da nicht was aus dem Formular drin stehen?

Cheffchen
 
Also den Zähler jetzt mal aussen vor gelassen möchte ich, dass jede erstellte Datei den gleichen Inhalt hat, aber andere Dateinahmen. Jede erstellte Datei soll dasselbe Formular beinhalten.
 
Hallo,

so oder so ähnlich, ist jetzt ungetestet.
So wird aus der Musterdatei eine neue mit dem namen neue-datei.php denn man natürlich ändern kann.
PHP:
<?php
$array = file("vorlage.txt"); // vorlage einlesen
$text = implode("\n", $array); // vorlage in ein array packen

$dateiname = "neue-datei.php"; // Name der Datei
$handler = fopen($dateiname , "a+"); // Datei erstellen,
fwrite($handler , $text); // Dateiinhalt in die Datei schreiben
fclose($handler); // Datei schließen
?>

Cheffchen
 
PERFEKT!!! :D
Ich habs hinbekommen. Vielen vielen Dank.

Doch schon steh ich vor einem neuen Problem was vielleicht nicht mit php zu tun hat.
Angenommen ich habe nun drei Dateien erstellt die jeweils mit dem Formular in meinem Menü auftauchen.
Nun hätte ich es gerne so, dass wenn ich drei Felder in Formular 1 ausfülle, via menü auf Formular 2 springe und dann wieder zurück auf Formular 1, dass dort die drei Felder immer noch ausgefüllt sind, also trotz des Neuladens der Seite. Gibt es da irgendeine Möglichkeit, die für einen PHP Neuling schnell realisierbar ist. Also ohne große Datenbanken etc.
 
Hallo,

ich glaube du bist jetzt falsch abgebogen.
Normal wäre so:
- eine php datei die aus dem formular besteht
- diese erstellt einzelne txt dateien für jeden feuerwehreinsatz die auch leer sein kann
- Das Menü passt sich der txt dateien an
- das formular liest die txt wieder ein und speichert eingaben in der entsprechenden datei.

es macht doch kein sinn das formular was nur einmal brauchst 100mal anzulegen und zu jedem formular eine eigene txt datei zu erstellen, da dies die gleichen funktionen brauch wie bei der version oben.

Cheffchen
 
ICh glaube auch. Und so wies aussieht in ne Sackgasse. :)

Ich glaube ich verstehe was du meinst. Nur wie kriege ich es hin, dass wenn mein Menü die vorhandenen TXT files ausliest, es diese aber in Form des Formulares anzeigt. Also nicht dann einfach die TXT öffnet.

Gruß
Björn
 
Hallo,

also wie die daten wieder in das formular bekommst ist einfacherer als du denkst.

Natrlich zum test die einsatz_1984984661.txt erst einmal per hand anlegen
mit etwas inhalt zb 3zeilen
Code:
Berlin
Müller
Durst gelöscht

PHP:
<?php 
$array = file("einsatz_1984984661.txt");// einsatz txt einlesen
echo'<form>
<input type="text" name="ort" value="'$array[0]'"><br>
<input type="text" name="leitung" value="'$array[1]'"><br>
<input type="text" name="einsatz" value="'$array[2]'">
</form>';

Cheffchen
 

Neueste Beiträge

Zurück
Oben