php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.12.2008, 14:04  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

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
pfump ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.12.2008, 12:43  
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

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 />";
}    
    
?>
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline  
Alt 14.12.2008, 13:39  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

@ #Avendo:

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

Meld mich auf jeden Fall wenn ich ERgebnisse habe.
pfump ist offline  
Alt 14.12.2008, 17:07  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

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 .
pfump ist offline  
Alt 15.12.2008, 19:15  
Erfahrener Benutzer
 
Registriert seit: 06.09.2008
Beiträge: 189
#Avedo befindet sich auf einem aufstrebenden Ast
Standard

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
__________________
I'm so tired of slitting the throats of people calling me a violent psychopath.
#Avedo ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Daten nur an bestimmten Tag ausgeben? Onemillion PHP Tipps 2008 2 07.12.2008 16:12
Ausgeben der DB Daten nicht an richtiger Stelle Kein Genie PHP Tipps 2008 4 11.06.2008 10:55
Daten als Rotation ausgeben superskunk PHP Tipps 2008 16 24.05.2008 21:15
Ordnerstruktur alphabetisch sortiert als XML ausgeben lindner PHP Tipps 2008 7 15.10.2007 18:50
Es werden zuviel Daten ausgeben Kein Genie PHP Tipps 2006 5 12.11.2006 12:37
Daten in neuer Seite ausgeben PHP Tipps 2006 5 20.02.2006 21:47
Mehrere Daten ausgeben Sonja PHP Tipps 2005-2 11 10.08.2005 14:52
Inhalte alphabetisch in 3 Spalten ausgeben PHP Tipps 2005-2 2 11.07.2005 15:17
Mysql: Daten nach Anfangsbuchstaben Sortiert Ausgeben PHP Tipps 2005-2 5 09.07.2005 15:56
daten ausgeben + ändern möchtegernchegga PHP Tipps 2005-2 10 04.06.2005 14:48
Daten mit Masql ausgeben ohne while PHP Tipps 2005 25 22.05.2005 01:25
Daten aus DB gruppiert ausgeben?! medico PHP Tipps 2005 9 07.01.2005 09:38
[Erledigt] Daten in einem Formular ausgeben und ändern PHP Tipps 2004-2 7 07.12.2004 17:22
Daten ausgeben PHP Tipps 2004 3 25.08.2004 14:14
daten in umgekehrter reihenfolge ausgeben, ohne order by Datenbanken 3 31.07.2004 18:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
csvhandler, find alphabetisch ausgeben, php csv alphabetisch sortierne, php fgetcsv() alphabetisch, php cvs tabelle auslesen und alphabetisch, csv php sortiert ausgeben, csv alphabetisch ordnen, php csv sortieren code, alphabetische liste spaltenweise ausgeben, php result ausgeben alphabetisch, csv daten sortiert ausgeben php, php csv auslesen \ohne while\, php csv ausgeben, php sortiert csv, php csv-file sortiert ausgeben, csv nach spalten sortieren, php csv 2. spalte sortieren, class.csvhandler.php, php csv count lines, csv tabellen alphabetisch sortieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum