Ankündigung

Einklappen
Keine Ankündigung bisher.

CSV Daten alphabetisch ausgeben

Einklappen

Neue Werbung 2019

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

  • CSV Daten alphabetisch ausgeben

    Hallo Leuts.
    Ich hab mal wieder ne Frage.
    Und zwar gehts um folgendes:

    Ich lese aus einer csv-Datei mit Hilfe von [man]fgetcsv()[/man]
    Daten aus.

    Wie kann ich jetzt diese Daten alphabetisch anzeigen lassen?

    Also so:

    A:
    Alfred
    Anton
    ...

    B:
    Berta
    Barbara
    ...

    C:
    Cäsar usw.

    Hoffe ihr könnt mir helfen.

    Mfg

  • #2
    fgetcsv() liest eine Zeile aus, was willst Du alphabetisch ausgeben? wie sieht deine csv datei aus?

    Kommentar


    • #3
      In meiner Datei stehen Namen und Vornamen und anderes Zeugs.

      Ich will die Namen alphabetisch anzeigen. Also wie oben beschrieben
      Die Namen unter z.B. A müssen aber nicht sortiert sein.

      Halt unter A alle Namen die mit A beginnen
      unter B alle die mit B beginnen
      ...
      unter Z alle die mit Z beginnen

      Kommentar


      • #4
        benutze file() und sort() und zur Ausgabe explode()

        Kommentar


        • #5
          Am besten wäre natürlich eine Datenbank statt einer CSV-Datei

          Kommentar


          • #6
            Mit der Datenbank das stimmt, aber ich muß es leider über die csv-Datei machen

            Also ich lese die Datei über file() ein.
            Danach mach ich ein sort().

            Somit ist das Array sortiert von A bis Z

            Aber wie trenne ich das ganze?
            Im Array steht ja dann z.B. Mustermann;Max;1234

            Kommentar


            • #7
              nun HPR hat nicht umsonst noch eine dritte Funktion genannt

              Kommentar


              • #8
                Mal noch was anderes.
                Mit sort sortiere ich ja den Array.
                Der erste Wert im Array sind ja die Spaltennamen.
                Wie lasse ich die denn weg?

                Und als zweites:

                Wie kann ich nach Namen sortieren, wenn die 1. Spalte eine lfd-Nummer ist?

                Kommentar


                • #9
                  Zu eins:

                  PHP-Code:
                  $ueberschriften $datei[0];
                  unset(
                  $datei[0]);
                  // sort... 

                  Kommentar


                  • #10
                    zu zweitens:
                    Zitat von pfump Beitrag anzeigen
                    In meiner Datei stehen Namen und Vornamen und anderes Zeugs.
                    lern mal ne anständige BEschreibung zu deinen Problemen zu formulieren, das ist echte Zeitverschwendung..

                    Kommentar


                    • #11
                      Weiß nich was es da nicht zu verstehen gibt?

                      In der Datei stehen Name, Vorname und weitere Spalten.
                      Diese sind aber für das Problem nicht relevant!

                      Das Zweitens bezieht sich darauf wie man das ganze realisiert,
                      wenn als 1. Spalte nicht der Name, sondern eine ID steht!

                      Ist eigentlich nicht schwer zu verstehen find ich

                      Kommentar


                      • #12
                        Du kannst dir eine Tabelle basteln, die es dir erlaubt deine Daten beliebig ordnen zu lassen. Hatte dieses Thema auch mal in diesem Thread behandelt. Dort wird beschrieben, wie du Daten in einer Tabelle ausgibst und diese Daten durch einen Klick auf den jeweiligen Spaltenkopf, nach dieser Spalte alphabetisch sortieren kannst. Zum auslesen von CSV-Dateien habe ich vor ewigkeiten mal eine Klasse geschrieben. Könnte vielleicht ganz hilfreich sein. Ich habe sie immer gerne genutzt. Kann dir leider nicht sagen, ob das die aktuellste Version ist.
                        MfG, Andy

                        PHP-Code:
                        <?php
                        error_reporting
                        (E_ALL);

                        /***
                        * Class CsvHandler

                        * The CsvHandler class enables reading lines
                        * from csv-files. Furtehermore you are able to
                        * read the complete file into an array.

                        * @package CsvHandler
                        * @version 0.3
                        * @author Andreas Wilhelm <Andreas2209@web.de>
                        * @copyright Andreas Wilhelm 
                        **/  
                        class CsvHandler
                        {
                            
                        // private class variables
                            
                        private $file;
                            private 
                        $fp;
                            private 
                        $data;

                            
                        /**
                            * create() - Creates a new csv-file
                            *
                            * @access: public
                            * @param Str $path
                            * @return NONE
                            */
                            
                        public function create($path)
                            {
                                
                        // create file
                                
                        if( !file_exists($path) )
                                {
                                    
                        file_put_contents($path'');
                                }
                                
                                else
                                {
                                    throw new 
                        Exception("{$path} already exists.");
                                }
                            }

                            
                        /**
                            * open() - Opens csv-file (default: reading)
                            *
                            * @access: public
                            * @param Str $file
                            * @param Int $cols
                            * @param Str $mod
                            * @return NONE
                            */
                            
                        public function open($file$cols$mod 'r')
                            {
                                
                        // set path to file
                                
                        $this->file $file;
                                
                                
                        // open file
                                
                        $this->fp fopen($this->file$mod);
                                
                                
                        // check result
                                
                        if( !$this->fp )
                                {
                                    throw new 
                        Exception("Could not open {$file}.");
                                }
                                
                                
                        // read data from file into an array
                                
                        $this->data $this->read($cols);
                            }

                            
                        /**
                            * lock() - Locks csv-file (default: LOCK_SH)
                            *
                            * @access: public
                            * @param Str $mod
                            * @return NONE
                            */
                            
                        public function lock($mod LOCK_SH)
                            {
                                
                        // check result
                                
                        if( !flock($this->fp$mod) )
                                {
                                    throw new 
                        Exception('Could not lock file.');
                                }
                            }

                            
                        /**
                            * getLine() - Reads a line of csv-file
                            *
                            * @access: public
                            * @param Int $cols
                            * @return Array
                            */
                            
                        public function getLine($cols)
                            {
                                
                        // read line into an array
                                
                        $line fgetcsv($this->fp4096);
                                
                                
                        // check result
                                
                        if(!$line)
                                {
                                    throw new 
                        Exception('Could not read line.');
                                }
                                
                                
                        // check num of fields
                                
                        if(count($line) != $cols)
                                {
                                    throw new 
                        Exception('Line has a invalid format.');
                                }
                                
                                
                        //return line-array
                                
                        return $line;
                            }

                            
                        /**
                            * setLine() - Writes a line into csv-file
                            *
                            * @access: public
                            * @param Arr $fields
                            * @return NONE
                            */
                            
                        public function setLine($fields)
                            {
                                
                        // write line into file
                                
                        $line fputcsv($this->fp4096);
                                
                                
                        // check result
                                
                        if(!$line)
                                {
                                    throw new 
                        Exception('Could not write line.');
                                }
                            }

                            
                        /**
                            * add() - Adds a new line to csv-file
                            *
                            * @access: public
                            * @param Arr $fields
                            * @return NONE
                            */
                            
                        public function add($fields)
                            {
                                
                        // add new line to data-array
                                
                        array_push($this->data$fields);
                            }

                            
                        /**
                            * read() - Reads the whole csv-file
                            *
                            * @access: public
                            * @param Int $cols
                            * @return Array
                            */
                            
                        public function read($cols)
                            {
                                
                        // get the whole data
                                
                        while( !feof )
                                {
                                    
                        $data $this->getLine($cols);
                                }
                                
                                
                        // return data-array
                                
                        return $data;
                            }

                            
                        /**
                            * edit() - Edits an entry in the csv-file
                            *
                            * @access: public
                            * @param Int $row
                            * @param Int $col
                            * @param Int $value
                            * @return Array
                            */
                            
                        public function edit($row$col$value)
                            {
                                
                        //check number of rows
                                
                        if( $row count($this->data) )
                                {
                                    throw new 
                        Exception("Line {$row} does not exist.");
                                }
                                
                                
                        // check num of fields
                                
                        if( $col count($this->data[$row-1]) )
                                {
                                    throw new 
                        Exception("Column {$col} does not exist.");
                                }
                                
                                
                        // edit field
                                
                        $this->data[$row-1][$col-1] = $value;
                            }

                            
                        /**
                            * save() - Saves whole data-array to file
                            *
                            * @access: public
                            * @return NONE
                            */
                            
                        public function save()
                            {
                                
                        // close csv-file
                                
                        $this->close();
                            } 

                            
                        /**
                            * close() - Closes csv-file
                            *
                            * @access: public
                            * @return NONE
                            */
                            
                        public function close()
                            {
                                
                        fclose($this->fp);
                            } 
                        }

                        try
                        {
                            
                        $fp = new CsvHandler('test.csv');
                            
                        $fp->open();
                            
                        $fp->lock();
                            
                        $reply $fp->getLine(4);
                            
                        print_r($reply);
                            
                        $fp->close();    
                        }

                        catch(
                        Exception $e)
                        {
                            echo 
                        "Error:<br />";
                            echo 
                        "<b>" $e->getLine() . "</b>" ": " $e->getMessage() . "<br />";
                        }    
                            
                        ?>

                        Kommentar


                        • #13
                          @ #Avendo:

                          Danke für die Hilfe.
                          Mal sehen was ich damit alles erreichen kann

                          Meld mich auf jeden Fall wenn ich ERgebnisse habe.

                          Kommentar


                          • #14
                            Also ich hab dein Code-Beispiel mal getestet indem
                            ich die test.csv mit meiner csv-Datei ausgetauscht habe.

                            Leider funktionierts nicht. Folgende Fehlermeldung:

                            Code:
                            Warning:  Missing argument 1 for CsvHandler::open(), called in D:\Webserver\Apache\Web\csvklasse.php on line 220 and defined in D:\Webserver\Apache\Web\csvklasse.php on line 53
                            
                            Warning:  Missing argument 2 for CsvHandler::open(), called in D:\Webserver\Apache\Web\csvklasse.php on line 220 and defined in D:\Webserver\Apache\Web\csvklasse.php on line 53
                            
                            Notice:  Undefined variable: file in D:\Webserver\Apache\Web\csvklasse.php on line 56
                            
                            Notice:  Undefined variable: file in D:\Webserver\Apache\Web\csvklasse.php on line 64
                            Error:
                            64: Could not open .

                            Kommentar


                            • #15
                              In der Fehlermeldung steht doch bereits wo dein Fehler liegt. Du hast einfach open() aufgerufen. Diese Methode erwartet allerdings 2 Parameter.
                              1. Filename
                              2. Spaltenanzahl
                              3. Öffnungsoption (optional)

                              Dein Aufruf ist also falsch. Das sollte ungefähr so aussehen:
                              PHP-Code:
                              <?php

                              try
                              {
                                 
                              // include Class
                                 
                              require_once('CsvHandler.php');

                                 
                              // instance class
                                 
                              $csv = new CsvHandler();

                                 
                              // open csv-file
                                 
                              $csv->open('test.csv'4'a');

                                 
                              // lock file for others
                                 
                              $csv->lock();

                                 
                              // new data
                                 
                              $data = array("Max""Mustermann"13"Auf dem Hahn");

                                 
                              // add new entry
                                 
                              $csv->add($data);

                                 
                              // read line from file
                                 
                              $line $csv->getLine(4);

                                 
                              // output line-array
                                 
                              print_r($line);

                                 
                              // save changes
                                 
                              $csv->save();
                              }

                              catch(
                              Exception $e)
                              {
                                  echo 
                              $e->getMessage();
                              }

                              ?>
                              Ich sehe allerdings gerade, dass diese Klasse noch ein paar Fehler birgt. Werde diese möglichst bald beheben.
                              MfG, Andy

                              Kommentar

                              Lädt...
                              X