Daten aus Textdatein in Auswahlliste

  • Hallo Forum,

    ich bin absoluter PHP-Anfänger und habe mir die folgenden Scripte aus
    verschiedenen Quelle zusammengebastelt...
    Hier mein Problem: Mit dem 1. Script (hab nur einen Auszug hier reingestellt)
    werden Auswahllisten mit Daten aus einer Textdatei gefüllt. Wenn man die Seite
    aufruft, stehen die Daten dann ich in den Listen drin.

    Wenn ich dann mit dem "senden" Knopf das 2. Script ausführe, kommt immer die
    Meldung, dass nicht alle Felder ausgefüllt wurden, obwohl alle ausgefüllt waren.
    Wenn ich die Auswahllisten von Hand in eine HTM-Datei schreibe, dann funktioniert
    das 2. Script ??

    Ich bin absolut ratlos und würde mich sehr über etwas Hilfe freuen

    Danke Jörg


    **************** tip_1.php ************************

    <h3 class="Sh2"><a class="an" name="a1"> Tages-Tipp abgeben</a></h3> </p>

    <h5 class="Sh2"><a class="an" name="a1"> für die 1. Etappe am So 02.07.: Strasbourg - Strasbourg (183 km)</a></h5> </p>


    <form name="form1" method="GET" action="liste1.php">
    <font face="arial" size=2 color=black>


    Den Tagestipp bis spätestens 12:00 h am Tag der Etappe abschicken.

    Dazu einfach den Fahrer aus der Liste wählen, Spielername und Email

    eintragen und "Abschicken" drücken. Wenn ihr mehrmals für eine

    Etappe getippt habt, wird der letzte Tipp gewertet. Viel Erfolg!

    </p></font>


    <table>
    <tr>
    <td colspan="2"><hr noshade size="1"></td>
    </tr><tr><td align="right"><font face="arial" size=2 color=black>Spielername :</font></td><td><input type="text" size="30" name="name"></td>
    </tr><tr>
    <td align="right"><font face="arial" size=2 color=black>Email-Adresse :</font></td><td><input type="text" size="30" name="mail"></td>
    </tr><tr>

    <td colspan="2"><hr noshade size="1"></td>
    </tr><tr>

    <td align="right"><font face="arial" size=2 >1. Platz :</font></td><td>
    <select name="p5" size="1">

    <?php
    $datei = fopen('beispiel.txt','r');
    ?>

    <?php
    while (!feof($datei))
    {
    $zeile = fgets($datei,1024);
    echo $zeile.'
    ';
    } ?>

    <?php
    fclose($datei);
    ?>

    <option> ----------------------------------------------
    </select>
    </td>
    </tr><tr>


    ********************** liste1.php *****************************

    <HTML>
    <HEAD>
    <TITLE>Downloadliste</TITLE>
    </HEAD>

    <?php
    $timestamp = time();


    $datum = date("d.m.Y",$timestamp);
    $uhrzeit = date("H:i",$timestamp);

    $zeit="$datum $uhrzeit";


    $name = $_GET['name'];
    $mail = $_GET['mail'];
    $p1 = $_GET['p1'];
    $p2 = $_GET['p2'];
    $p3 = $_GET['p3'];
    $p4 = $_GET['p4'];
    $p5 = $_GET['p5'];


    if( isset($name)&& isset($mail)&& isset($p1)&& isset($p2)&& isset($p3)&& isset($p4)&& isset($p5) && $name!="" && $mail!="" && $p1!="" && $p2!="" && $p3!="" && $p4!="" && $p5!=""){
    $datei="namen1.txt";
    $zeiger=fopen($datei,"r+");
    $alt=fread($zeiger,filesize($datei));
    $meinung="$name $zeit $p1 $p2 $p3 $p4 $p5 $mail ";
    rewind($zeiger);
    fputs($zeiger,"$meinung \n $alt");
    fclose($zeiger);

    }
    else{
    echo "Sie haben nicht alle Felder ausgefüllt !";
    }
    ?>


    <BODY bgcolor="#FFFFFF">
    <TABLE width="95%" border="1" cellpadding="2" cellspacing="0">
    <TR>
    <TD width="12%">Spieler</TD>
    <TD width="12%">Datum</TD>
    <TD width="12%">Uhrzeit</TD>
    <TD width="12%">Platz 1</TD>
    <TD width="12%">Platz 2</TD>
    <TD width="12%">Platz 3</TD>
    <TD width="12%">Platz 4</TD>
    <TD width="12%">Platz 5</TD>

    </TR>

    <?php

    $datei = fopen("namen1.txt", "r") ;
    while (!feof($datei)) {
    $zeile = fgets($datei, 512) ;
    $eintrag = explode(" ", trim($zeile)) ;
    // Auslesen jetzt abgeschlossen,
    // es folgt das Einsetzen in die Tabelle
    ?>

    <TR>
    <TD><?php echo $eintrag[0]; ?></TD>
    <TD><?php echo $eintrag[1]; ?></TD>
    <TD><?php echo $eintrag[2]; ?></TD>
    <TD><?php echo $eintrag[3]; ?></TD>
    <TD><?php echo $eintrag[4]; ?></TD>
    <TD><?php echo $eintrag[5]; ?></TD>
    <TD><?php echo $eintrag[6]; ?></TD>
    <TD><?php echo $eintrag[7]; ?></TD>

    </TR>

    <?php
    } // Ende der while-Schleife
    fclose($datei) ;?>

    </TABLE>


    </BODY>
    </HTML>

  • Hallo GreenRover,
    wahrscheinlich bin ich zu dumm für diese Welt, aber weder deine
    Antwort ("... codetags benutzt...") noch dein Link haben mir weiter
    helfen können. Muss ich wohl woanderes weiter suchen...
    Trotzdem Danke für deine (versuchte) Hilfe
    Jörg

  • Moin!

    1. Code-Tags sind BB-Codes , welche Quelltext in Postings lesbar machen. Ein Klick auf das Wörtchen "Code" über dem Textfenster leitet den Tag ein, ein 2. Klick beendet das ganze dann wieder. Du kannst es natürlich auch von Hand schreiben. Es steht dann

    Code
    Quelltext

    in deinem Posting und so sieht es danach aus:

    2. Wenn der Fehler im 1. Script auftaucht, frage ich mich, warum du gerade von dem Script nur einen Auszug postest. Für die Fehlersuche benötigen wir das komplette Script, besser auch noch zusätzlich die URL.

    3. warum schließt du PHP im Quelltext und öffnest es sofort wieder?

    das

    kannst du besser auch so schreiben:

    PHP
    <?php
    $datei = fopen('beispiel.txt','r');
    while (!feof($datei))
    {
    $zeile = fgets($datei,1024);
    echo $zeile.'
    ';
    } 
    fclose($datei);
    ?>

    G.a.d.M.

    Ronald

  • Ok, dann hier nochmal komplett:

    *** tip_1.php ***


    und

    *** liste1.php ***

    in der textdatei (beispiel.txt) steht:

    <option>Acosta,García_036</option>
    <option>Aerts,Mario_042</option>
    <option>Albasini,Michael_112</option>
    <option>Armstrong,Lance_001</option>
    <option>Arrieta,José_032</option>
    <option>Arroyo,David_033</option>
    <option>Arvesen,Kurt-Asle_022</option>
    <option>Astarloza,Mikel_202</option>
    <option>Augé,Stéphane_122</option>
    <option>Azevedo,Jose_002</option>
    <option>Backstedt,Magnus_113</option>
    <option>Basso,Ivan_021</option>
    <option>Becke,Daniel_034</option>
    <option>Beloki,Joseba_092</option>
    <option>Beltran,Manuel_003</option>
    <option>Bénéteau,Walter_142</option>


    das ganze ist zu finden unter:

    http://www.tourspiel.de/tippen.htm

    für die

    1. Etappe am So 02.07.: Strasbourg - Strasbourg (183 km)


    schonmal vielen dank im voraus

  • So, da sind verdammt viele Fehler drinnen.

    Zunächst mal die ursächlichen:

    1. die 5 Select-Felder im Eingabeformular haben alle den Namen "p5", dadurch fehlt dir dann in der Auswertung (liste1.php) die Werte für p1 bis p4. Sobald du das korrigiert hast sollte der Fehler mit den nicht ausgefüllten Feldern weg sein.

    Allerdings bin ich mir nicht sicher ob der String für eine GET-Übertragung nicht zu lang wird. Ich würde statdessen eine POST-Übertragung wählen.
    Änder mal in deinem Eingabeformular den Form-Tag von "get" auf "post" um:

    Code
    <form name="form1" method="post" action="liste1.php">

    Als nächsten Schritt mußt du dann auch noch in der liste1.php eine kleine Änderung vornehmen.
    Das hier:

    Code
    $name = $_GET["name"];
    $mail = $_GET["mail"];
    $p1 = $_GET["p1"];
    $p2 = $_GET["p2"];
    $p3 = $_GET["p3"];
    $p4 = $_GET["p4"];
    $p5 = $_GET["p5"];

    ersetzt du bitte durch

    Code
    extract($_POST]


    Dann sollte es eigentlich alles laufen.

    Was noch unsinnig ist:

    Code
    if( isset($name)&& isset($mail)&& isset($p1)&& isset($p2)&& isset($p3)&& isset($p4)&& isset($p5) && $name!="" && $mail!="" && $p1!="" && $p2!="" && $p3!="" && $p4!="" && $p5!=""){


    Du überprüfst zuerst, ob alle Variablen vorhanden sind. Traust du deinem eigenen Eingabeformular nicht? Du hast dort doch die Variablen definiert, warum sollten sie also nicht vorhanden sein?
    Im zweiten Schritt prüfst du, ob die Variablen Inhalte haben. Das ist bei Name und Mail sinnvoll, aber die p1 - p5 haben immer Inhalte, da du das ja im Formular so vorgibst.

    Einfacher (mit dem selben Ergebnis):

    Code
    if($name && $mail) {

    Damit wird das ganze dann schon übersichtlicher und verständlicher. Mit dem rest habe ich mich derweil nicht beschäftigt, aber irgendwo steckt da noch ein dicker Hund drinne, bzw. mag es auch daran liegen, daß ich die erforderlichen Dateien nicht auf meinem PC habe. Jedenfalls bläht sich mein Browser bei deinem Script auf über 300MB Arbeitsspeicherverbrauch auf. Ich hab jetzt aber weder Zeit noch Lust die Ursache zu suchen.

    G.a.d.M.

    Ronald