Ankündigung

Einklappen
Keine Ankündigung bisher.

Rangliste mit bestimmter anzahl an Zeilen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rangliste mit bestimmter anzahl an Zeilen

    Hallo,

    ich kenne mich mit PHP fast gar nicht aus.
    Ich versuche eine Rangliste die in einer csv Datei ist auszugeben.

    das ist mir auch durch suchen auf verschiedenen Seiten gelungen:

    PHP-Code:
    <?php

    $fp
    =@fopen("rangliste.csv""r" ) or die ("Kann Datei nicht lesen.");


    while (
    $line=fgets($fp,1024)) {

    echo 
    "<tr>";

    $array explode(";",$line);
    echo 
    "<td width=50><center>".$array[1]."</td><td><center>".$array[2]."</td><td width=50><center>".$array[5]."</td>";

    echo 
    "</tr>";


    }

    fclose($fp);

    ?>
    Dieser code tut auch was er soll, alles prima.
    Nun möchte ich das er mir aber nur die ersten 10 dieser Rangliste ausgibt.


    Ich schätze mal ich muß folgende Zeile abändern:
    while ($line=fgets($fp,1024))

    Nur wie? Bitte um Hilfe.
    Danke

  • #2
    Würde ich mit nem for-loop machen.
    Die mysql_* Erweiterung ist veraltet!
    Besser: mysqli_* oder (noch besser) PDO

    Kommentar


    • #3
      danke nameless,

      for ($i = 1; $i <= 10; $i++)

      hab ich schon versucht, kann sein das ich es aber einfeach nicht verstanden habe wo ich das genau hinschreiben muß.

      habs vor die while schleife gemacht... kein unterschied
      habs nach der while schleife gemacht.. kein unterschied

      habs nach der tabelle gemacht ... auch kein unterschied

      Bitte um hilfe

      Kommentar


      • #4
        du musst die while Schleife damit ersetzen und das $line=fgets($fp,1024) dann in die for Schleife.
        Die mysql_* Erweiterung ist veraltet!
        Besser: mysqli_* oder (noch besser) PDO

        Kommentar


        • #5
          Hallo nochmal,

          jetzt gibt er mir nur eine zeile aus???

          PHP-Code:
          <?php

          $fp
          =@fopen("rangliste.csv""r" ) or die ("Kann Datei nicht lesen.");
          for (
          $i 1$i <= 10$i++)
          $line=fgets($fp,1024);
           
          {

          echo 
          "<tr>";

          $array explode(";",$line);  
          echo 
          "<td width=50><center>".$array[1]."</td><td><center>".$array[2]."</td><td width=50><center>".$array[5]."</td>";

          echo 
          "</tr>";


          }

          fclose($fp);

          ?>
          wer kann mir den zeigen wie ich das reinbasteln soll.
          Danke für die Hilfe schon mal

          Kommentar


          • #6
            Schau dir mal an wie die Syntax von for Schleifen aussieht.
            Zwischen die Bedingungs-Klammern und die geschweiften Klammern kommt kein Code.
            Du musst es innerhalb der geschweiften Klammern ausführen, dann wird es 10 mal ausgeführt.
            Die mysql_* Erweiterung ist veraltet!
            Besser: mysqli_* oder (noch besser) PDO

            Kommentar


            • #7
              Jetzt hab ich solange rungespielt und geändert, es geht einfach nicht.

              hab wieder den originalcode eingegeben den ich vorhin hier gepostet hatte.
              der geht jetzt auch nicht mehr...
              so ein sch....

              Kommentar


              • #8
                PHP-Code:
                <?php

                          $fp
                =@fopen("rangliste.csv""r" ) or die ("Kann Datei nicht lesen.");


                                for (
                $i 1$i <= 10$i++)  {
                                    
                                    
                $line=fgets($fp1024);

                                    echo 
                "<tr>";

                                    
                $array explode(";",$line);
                                    echo 
                "<td width=50><center>".$array[1]."</td><td><center>".$array[2]."</td><td width=50><center>".$array[5]."</td>";

                                    echo 
                "</tr>";

                 
                                }

                           
                fclose($fp);

                  
                ?>
                so gehts!

                Vielen Dank !

                Kommentar


                • #9
                  Zitat von Chicco Beitrag anzeigen
                  PHP-Code:
                  <?php

                            $fp
                  =@fopen("rangliste.csv""r" ) or die ("Kann Datei nicht lesen.");


                                  for (
                  $i 1$i <= 10$i++)  {
                                      
                                      
                  $line=fgets($fp1024);
                                      

                    ?>
                  so gehts!
                  Hi,

                  Nein das täuscht! Du prüfst nicht ob fgets(…) wirklich etwas zurück liefert. (Das Dateiende kann auch vor dem ende der for Schleife erreicht sein)

                  Erweitere doch einfach den Bedingungsteil der Schleife, dazu isser doch da:

                  PHP-Code:
                  for ( $i 0; ( $i 10 ) && ( $line fgets$fp1024 ) ); $i++ ) 
                  gruß, Ulf
                  PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                  Kommentar


                  • #10
                    Danke Ulfikado,

                    für Deinen Einwand.
                    Allerdings ist in der Rangliste immer min. 10 Plätze drin.
                    Werde natürlich den Code korrigieren.

                    Da ich mich wie gesagt nicht mit PHP auskenne bin ich um jeden Tipp froh.

                    Wenn wir schon dabei sind.
                    Ich liefere die daten (rangliste) über eine excel-tabelle (csv)
                    gibt es eine einfach möglichkeit die datei online zu erweitern und die punkte quasi online einzutragen.

                    Ich denke die möglichkeit gibts es ganz sicher, die frage ist ob ein kompletter PHP-Anfänger das hinbekommt?

                    Kommentar


                    • #11
                      Zitat von Chicco Beitrag anzeigen
                      Allerdings ist in der Rangliste immer min. 10 Plätze drin.
                      Das ist halt der Soll-Zustand. Der IST-Zustand kann davon für gewöhlich immer abweichen wenn ein oder mehrere Faktoren dagegen arbeiten. Da du keine Bugs beim erzeugen der CSV mit Excel ausschließen kannst und sich auch anderweitig Fehler einschleichen können ist Deine Variante nicht erstrebenswert.

                      Zitat von Chicco Beitrag anzeigen
                      Werde natürlich den Code korrigieren.
                      Brav

                      Zitat von Chicco Beitrag anzeigen
                      Da ich mich wie gesagt nicht mit PHP auskenne bin ich um jeden Tipp froh.
                      Bei mir und sicher auch vielen anderen war das früher so: Wenn ich ne Frage zu PHP hatte => Da ist das PHP-Manual, steht alles drin was Du wissen willst.

                      Das ist heute dank noch umfangreicherer Dokumentation und besseren Suchmöglichkeiten sogar noch wesentlich einfacher.

                      Zitat von Chicco Beitrag anzeigen
                      Ich liefere die daten (rangliste) über eine excel-tabelle (csv)
                      *NitpickMode=ON*
                      CSV hat nix mit ner Excel-tabelle zu tun. Du hast die CSV-Datei aus einer Excel-Tabelle exportiert. Das CSV-Format existiert unabhängig von Excel.
                      *NitpickMode=OFF*

                      Zitat von Chicco Beitrag anzeigen
                      gibt es eine einfach möglichkeit die datei online zu erweitern und die punkte quasi online einzutragen.
                      Wenn Du erweitern möchtest, im Sinne von Anhängen an eine bestehende Datei, dann offne die Datei einfach zum schreiben so das der Pointer ans Ende der Datei gesetzt wird. Das macht man für gewöhnlich in dem man fopen(…) mit dem Modus 'a' nutzt (Siehe Dokumentation: http://php.net/manual/de/function.fopen.php)

                      dann kannst Du einfach mit fputcsv() eine neuen Datensatz ans Ende der Datei schreiben. (http://php.net/manual/de/function.fputcsv.php)

                      Schau Dir einfach die Beispiele und Nutzerkommentare mit an.

                      Wenn Du Datensätze irgendwo mittendrin einfügen oder ersetzen willst must Du erst die Datei einlesen und dann die Datei komplett mit den neuen Daten überschreiben.

                      Wollte ich das letzte mal schon sagen: fgetcsv() dürfte beim Einlesen hier eher das von Die gewünschte tun als ein simples fgets was Du händisch und fehleranfällig weiterverarbeiten musst. (http://php.net/manual/de/function.fgetcsv.php)

                      Gruß, Ulf
                      PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                      Kommentar


                      • #12
                        Spricht denn was gegen eine while?
                        Nur so aus interesse, hab das bisher immer so in der Art gemacht.
                        PHP-Code:
                              $handle fopen("rangliste.csv""r");
                              if (
                        $handle)
                              {
                                 while ((
                        $line fgetcsv($handle1024";")) !== false
                                 {
                                     
                        $lines[] = $line;
                                 }
                                 
                        fclose($handle);
                              } 
                        Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

                        Kommentar


                        • #13
                          Man kann es mit while lösen, da es allerdings um eine festgelegte Anzahl an Durchläufen geht müsstest du die Iterationen mitzählen und entsprechend reagieren. => mehr Raum für Fehler
                          Bei einer For-Schleife kann man die Abbruchbedingung direkt definieren und sie ist deshalb die bessere Wahl, für diesen Fall.
                          [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                          [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                          Kommentar


                          • #14
                            Zitat von Moewe Beitrag anzeigen
                            Spricht denn was gegen eine while?
                            Nicht zwingend nein! allerdings willst Du ja ohnehin einen Zähler nutzen und da ist for() durchaus die logischere Wahl.

                            PHP-Code:
                            for ( $i 0; ( $i 10 ) && ( false !== ( $row fgetcsv$fp1024';' ) ) ); ++$i )
                            {
                               
                            // …

                            Aber für manche ist das möglicher Weise die unübersichtlichere weswegen whilie() auch durchaus ne alternative sein kann.

                            PHP-Code:
                            $i 0;
                            while ( ( 
                            $i 10 ) && ( false !== ( $row fgetcsv$fp1024';' ) ) ) )
                            {
                               
                            // …
                               
                            ++$i;

                            Gruß, Ulf
                            PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                            Kommentar


                            • #15
                              Das ist beides beschissen weil unleserlich...
                              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                              Kommentar

                              Lädt...
                              X