tabellen zeilen zählen

  • Hallo,
    Das sind meinen ersten versuchen in PHP und
    möchte jede Zeile in einer Tabelle hochzählen und bekomme diese Fehlermeldung:


    Notice: Undefined variable: nummer in C:\xampp\htdocs\linksammlung.php on line 9!


    Die Zeilen werden zwar gezählt und trotzdem ist etwas nicht in Ordnung.


    <?php


    $fd=fopen("linksammlung.txt", "r");


    echo"<table border=\"1\">";


    while ($inhalt= fgets($fd, 4096))
    {
    list($url, $beschreibung) = explode("|", $inhalt);
    $nummer++;


    echo "<tr>";
    echo " <td>";
    echo " $nummer";
    echo " </td>";
    echo " <td>";
    echo " <a href=\"$url\"> $url </a>";
    echo " </td>";
    echo " <td>";
    echo " $beschreibung ";
    echo " </td>";
    echo " </tr>";


    }
    echo " </table>";
    ?>


    Danke

  • Willkommen im Forum


    bitte nutze BBCode

    Code
    1. [code=php]hier kommt der Code rein

    [/code]



    du bekommst da eine Notiz, quasi einen Hinweis.
    das ist kein Fehler sondern halt ein Hinweis.


    dieser sagt in diesen Fall aus, dass die variable "nummer" nicht gesetzt ist.


    setze bitte VOR der schleife $Nummer auf 1 und es dürfte funktionieren.




    Gruß
    phip

  • Nummer auf 1 setzen wird nicht funktionieren, da erst hochgezählt wird und dann die Nummer ausgegeben (somit würde die Zählung bei 2 anfangen).
    Ich würde empfehlen, die Nummer erst nach dem Ausgeben zu erhöhen, das macht mehr Sinn. Dann vorher auf 1 setzen und alles ist gut :)


    Eine Variable kann übrigens auch durchaus in Anführungszeichen stehen.. Ist zwar vielleicht nicht die schönste Variante, aber durchaus möglich.

  • Für diese Art der Schleife gibt es auch eine eigene Schleife: die for-Schleife. Bei dir würde das dann so aussehen:

    PHP
    1. <span class="syntaxdefault"><?php<br /><br />$fd</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">fopen</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"linksammlung.txt"</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"r"</span><span class="syntaxkeyword">);<br /><br />echo</span><span class="syntaxstring">"<table border=\"1\">"</span><span class="syntaxkeyword">;<br /><br />for (</span><span class="syntaxdefault">$nummer </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">1</span><span class="syntaxkeyword">; </span><span class="syntaxdefault">$inhalt</span><span class="syntaxkeyword">= </span><span class="syntaxdefault">fgets</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$fd</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">4096</span><span class="syntaxkeyword">); </span><span class="syntaxdefault">$nummer</span><span class="syntaxkeyword">++)<br />{<br />list(</span><span class="syntaxdefault">$url</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$beschreibung</span><span class="syntaxkeyword">) = </span><span class="syntaxdefault">explode</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"|"</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$inhalt</span><span class="syntaxkeyword">);<br /><br />echo </span><span class="syntaxstring">"<tr>"</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" <td>"</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" $nummer"</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" </td>"</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" <td>"</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" <a href=\"$url\"> $url </a>"</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" </td>"</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" <td>"</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" $beschreibung "</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" </td>"</span><span class="syntaxkeyword">;<br />echo </span><span class="syntaxstring">" </tr>"</span><span class="syntaxkeyword">;<br /><br />}<br />echo </span><span class="syntaxstring">" </table>"</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">?></span>


    Der erste Teil der Schleife ($nummer = 0) wird am Anfang einmal ausgeführt, der zweite Teil ($inhalt= fgets($fd, 4096)) ist wie bei der while-Schleife die Abbruchbedingung und $nummer++ wird nach jedem Schleifendurchlauf ausgeführt.
    (siehe PHP-Kurs)