zongo: mein php-script leitet Daten nicht korrekt in die Zieldatei weit

Hallo miteinander!

Ich bin gerade dabei, einen Fragebogen, den wir im Studium benutzt haben, online zu stellen. Er enthält sowohl offene Fragen (also Textfelder, in die Leute etwas schreiben können), Auswahllisten und Checkboxen. Hier kurz das hmtl-script dazu:

<form action="auswertung.php" method="get"
enctype="text/plain">

<DIV class="sub_headline">Teil A</DIV>
Was machen Sie, um deutsche Wörter zu lernen?

<TABLE class="questionnaire">
  <TR>
    <td class="questionnaire">1. Schreiben Sie deutsche Wörter ein paar Mal auf, um sie zu lernen? </td>
            <td class="questionnaire"><select name="A1" size="1">
                <option selected>Ihre Antwort ...</option>
                <option value="1">nie oder sehr wenig</option>
                <option value="2">wenig</option>
                <option value="3">mal wenig, mal viel</option>
                <option value="4">viel</option>
                <option value="5">sehr viel</option>
            </select></td>
        </tr>
        <tr>
            <td class="questionnaire">2. Sprechen Sie deutsche Wörter ein paar Mal aus, um sie zu lernen?</td>
            <td class="questionnaire"><select name="A2" size="1">
                <option selected>Ihre Antwort ...</option>
                <option value="1">nie oder sehr wenig</option>
                <option value="2">wenig</option>
                <option value="3">mal wenig, mal viel</option>
                <option value="4">viel</option>
                <option value="5">sehr viel</option>
            </select></td>
        </tr>
  <tr>
            <td class="questionnaire">3. Was machen Sie (noch), um ein deutsches Wort zu lernen? Denken Sie an einen Satz mit diesem Wort?</td>
            <td class="questionnaire"><select name="A3" size="1">
                <option selected>Ihre Antwort ...</option>
                <option value="1">nie oder sehr wenig</option>
                <option value="2">wenig</option>
                <option value="3">mal wenig, mal viel</option>
                <option value="4">viel</option>
                <option value="5">sehr viel</option>
            </select></td>
        </tr>
         <tr>
            <td class="questionnaire">4. Denken Sie darüber nach, wo und wann man dieses Wort sagen kann??</td>
            <td class="questionnaire"><select name="A4" size="1">
                <option selected>Ihre Antwort ...</option>
                <option value="1">nie oder sehr wenig</option>
                <option value="2">wenig</option>
                <option value="3">mal wenig, mal viel</option>
                <option value="4">viel</option>
                <option value="5">sehr viel</option>
            </select></td>
        </tr>
         <tr>
            <td class="questionnaire">5. Denken Sie bei einem deutschen Wort für eine Sache darüber nach, ob dieses Wort ein Maskulinum, Femininum oder Neutrum ist?</td>
            <td class="questionnaire"><select name="A5" size="1">
                <option selected>Ihre Antwort ...</option>
                <option value="1">nie oder sehr wenig</option>
                <option value="2">wenig</option>
                <option value="3">mal wenig, mal viel</option>
                <option value="4">viel</option>
                <option value="5">sehr viel</option>
            </select></td>
        </tr>
</table>

<p> 6. Machen Sie (noch) etwas Anderes, um deutsche Wörter zu lernen? Bitte schreiben Sie ihre Antwort hier!<br>
<textarea name="A6" cols="50" rows="10"></textarea>
</p>

<p> 7. Warum lernen Sie Deutsch? Hier können Sie mehr als eine Antwort ankreuzen.:</p>
  <p>
    <input type="checkbox" name="A71" value="1"> weil Deutsch schön ist<br>
    <input type="checkbox" name="A72" value="1"> weil ich mit deutschen Menschen sprechen möchte<br>
    <input type="checkbox" name="A73" value="1"> weil ich in Deutschland lebe<br>
    <input type="checkbox" name="A74" value="1"> weil ich gern Deutsch lerne
</p>

<p> 8. Gibt es noch einen weiteren Grund, wieso Sie Deutsch lernen?<br>
<textarea name="A75" cols="50" rows="10"></textarea>
</p>

</table>

<DIV class="paragraph">
<input type="submit" name="submit" value="Abschicken">
</DIV>

</form>

Habe das ganze bei mir mal online gestellt, sah soweit auch alles super aus.
Das Formular verweist auf die Datei auswertung.php. Die sieht wie folgt aus:

<?php
$filename = 'info.txt';
$somecontent = "A1: ". $_POST["A1"]." A2: ". $_POST["A2"]." A3: ". $_POST["A3"]." A4: ". $_POST["A4"]." A5: ". $_POST["A5"]." A6: ". $_POST["A6"]." A71: ". $_POST["A71"]." A72: ". $_POST["A72"]." A73: ". $_POST["A73"]." A74: ". $_POST["A74"]." A75: ". $_POST["A75"]."\n";

if (is_writable($filename)) {

if (!$handle = fopen($filename, "a")) {
         print "Kann die Datei $filename nicht öffnen";
         exit;
   }

if (!fwrite($handle, $somecontent)) {
       print "Kann in die Datei $filename nicht schreiben";
       exit;
   }

print "Fertig, in Datei $filename wurde $somecontent geschrieben";

fclose($handle);

} else {
   print "Die Datei $filename ist nicht schreibbar";
}
?>

Die Antworten, die die Teilnehmer der Umfrageaktion geben, sollen also in die Datei info.txt gespeichert werden. In der Theorie sähe das dann so aus:

A1: 1 A2: 5 A3: 2 A4: 5 A5: 3 A6: ich lese deutsche Bücher A71: 1 A71:   A73: 1 A74:   A75: weil ich in Deutschland studieren möchte

Was aber tatsächlich in der info.txt steht ist folgendes:

A1: A2: A3: A4: A5: A6: A71: A72: A73: A74: A75:

Es wird also keine einzige Eingabe der Umfrageteilnehmer in der info.txt gespeichert.

Wo habe ich da den Fehler drin? Sitze jetzt schon seit Tagen vor diesem Problem und komme nicht weiter.

Mit freundlichem Gruß
zongo

  1. <form action="auswertung.php" method="get"
    enctype="text/plain">

    hier wählst du als Übertragung die get-Methode.

    <?php
    $filename = 'info.txt';
    $somecontent = "A1: ". $_POST["A1"]." A2: ". $_POST["A2"]." A3: ". $_POST["A3"]." A4: ". $_POST["A4"]." A5: ". $_POST["A5"]." A6: ". $_POST["A6"]." A71: ". $_POST["A71"]." A72: ". $_POST["A72"]." A73: ". $_POST["A73"]." A74: ". $_POST["A74"]." A75: ". $_POST["A75"]."\n";

    und hier sprichst du die post-Variablen an. Das Funktioniert nicht. Ändere in dem Formular die Methode auf post.

    1. Habe das Formular zu "method=post" korrigiert.

      Leider hat sich dadurch nicht am Speichern in der info.txt geändert.

      Habe danach das Formular wieder zurück auf "method=get" geändert und die php zu

      $somecontent = "A1: ". $_GET["A1"]." A2: ". $_GET["A2"]." A3: ". $_GET["A3"]." A4: ". $_GET["A4"]." A5: ". $_GET["A5"]." A6: ". $_GET["A6"]." A71: ". $_GET["A71"]." A72: ". $_GET["A72"]." A73: ". $_GET["A73"]." A74: ". $_GET["A74"]." A75: ". $_GET["A75"]."\n"

      Danach wurde die gegebenen Antworten dann in der info.txt gespeichert.

      Vielen Dank für den Hinweis.

      Nun klappt es endlich.

      Hurra!

      1. Moin!

        Habe das Formular zu "method=post" korrigiert.

        Leider hat sich dadurch nicht am Speichern in der info.txt geändert.

        Logisch - enctype="text/plain" ist falsch. Verträgt sich nicht mit PHP.

        - Sven Rautenberg

  2. Moin

    Es wird also keine einzige Eingabe der Umfrageteilnehmer in der info.txt gespeichert.

    Wo habe ich da den Fehler drin? Sitze jetzt schon seit Tagen vor diesem Problem und komme nicht weiter.

    was wird angezeigt wenn diu mal print_r($_POST) ausgibst?

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
    ### Henry L. Mencken ###
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
    ## Viktor Frankl ###
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)