- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-08-2005, 10:48
andy-ol
 Registrierter Benutzer
Links : Onlinestatus : andy-ol ist offline
Registriert seit: Nov 2003
Beiträge: 17
andy-ol ist zur Zeit noch ein unbeschriebenes Blatt
Question Datensätze nach bestimmten Wort filtern

Hallo,
ich möchte aus einer csv-Datei nur bestimmte Datensätze ausgeben und in eine neue Datei schreiben:

name; vorname; plz; ort
schröder; franz; 13579; berlin
meyer; peter; 12345; hamburg
müller; ullli; 67890; berlin

zb. nur die Datensätze wo der Ort "berlin" ist.

Das schreiben aller Datensätze in eine neue Datei bekomme ich hin, allerdings hab ich keine Idee, wie ich nur bestimmte Datensätze rausfiltern kann. (Bin absoluter PHP-Einsteiger)

Kleiner Tipp wär super. Danke.
Mit Zitat antworten
  #2 (permalink)  
Alt 14-08-2005, 10:51
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Du könntest z.B

- Datei öffnen
- Zeilenweise auslesen
- Mit explode() die Zeile anhand -> ; <- auseinandernehmen
- WENN der letzte begriff beispielsweise Berlin ist den ganzen Datensatz in eine neue Datei schreiben....
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
  #3 (permalink)  
Alt 14-08-2005, 10:58
andy-ol
 Registrierter Benutzer
Links : Onlinestatus : andy-ol ist offline
Registriert seit: Nov 2003
Beiträge: 17
andy-ol ist zur Zeit noch ein unbeschriebenes Blatt
Standard

- Datei öffnen
- Zeilenweise auslesen
- Mit explode() die Zeile anhand -> ; <- auseinandernehmen

das klappt alles schon.
Aber mit welchem Befehl prüfe ich auf einen bestimmten Wert schreibe dann nur diesen Datensatz in einie Datei?

// CSV-Datei einlesen
$i = 0;
$fp = fopen ($ordner_daten."/".$csvfile, "r");
while (! feof ($fp)) {
$line[$i] = fgets($fp, 1000000);
$i++;
}

$fp = fopen ("test.html", "w");
// Start: Schleife Datendurchlauf
$anzds = 0;
$anz = $dsstop - $dsstart;
while ($anzds <= $anz) {

$datensatz = $line[$anzds + $dsstart]; // Zeilennummer des Datensatzes
$daten = explode (";", $datensatz); // Daten nach ; extrahieren

fwrite ($fp, $tpldata);
}
$anzds++;
}
fclose ($tplfile);
fclose ($fp);

so in etwas sieht meine Datei aus, nur noch etwas komplexer, da ich noch ein Template einlese aus dem ich dann die neue Datei erzeuge.
Mit Zitat antworten
  #4 (permalink)  
Alt 14-08-2005, 11:23
LGC
 Junior Member
Links : Onlinestatus : LGC ist offline
Registriert seit: Aug 2005
Beiträge: 95
LGC ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi!
Grundlegendes zu deiner Struktur.
Wenn du schon mit Dateien arbeitest, die du später durch den explode() jagst, würde ich dies nicht an Hand einer Zeile tun. Denn was machst du wenn du mal deine Datensätze um einge Daten wie Z.B Signaturen erweitern möchtest, und für einen Datensatz mehr als eine Zeile benötigst?

Deshalb mach dir einfach am besten 2 Markierungen. Eine für eine Spalte und eine für eine Zeile.

Beispiel:
name|||vorname|||plz|||ort###schröder|||franz|||13579|||berlin###meyer|||peter|||12345|||hamburg###. .......u.s.w.


Wenn du mit PHP einen Teil einer Datei ändern möchtest, gehst du am besten wie folgt vor:

1. Variablen definieren
$datei = " "; // String
$zeilenende = "###" //Was markiert das Zeilenende?
$spaltenende = "|||" //Was markiert das Spaltenende?

2. Zuerst solltest du die Datei einlesen
$datei = file_get_contents("Pfad_zur_Datei/Datei.Endung");

Jetzt hast du in $datei deinen String, der den Inhalt deiner Datei beinhaltet. Dann solltest du einfach einen beliebigen Wert auslesen können. Dazu eignet sich ganz gut eine Funktion!

Ich gehe in meinem Beispiel davon aus, dass du via URL 2 Angaben mitlieferst, die du ausgeben möchtest.

www.deineseite.de?zeile=0&spalte=1

So könntest du jeden belibigen Wert auslesen:

3. Aulesen der URL Daten
if(!is_numeric($_GET['zeile']) || !is_numeric($_GET['spalte'])) {
$zeile = 0;
$spalte = 0;
}

4. Funktion erstellen
function datensatz_ausgeben($zeile,$spalte,$datei) {
global $zeilenende, $spaltenende;
$zeilen = explode($zeilenende,$datei);
$spalten = explode($spaltenende,$zeilen["$zeile"]);
$rueckgabe = $spalten["$spalte"];
return $rueckgabe;
}

5. Datensatz auslesen und ausgeben
echo datensatz_ausgeben($zeile,$spalte,$datei);

Geändert von LGC (14-08-2005 um 11:27 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 14-08-2005, 11:35
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Hmm

PHP-Code:
// CSV-Datei einlesen
// $i = 0; Wozu ein Zähler?

$fp fopen ($ordner_daten."/".$csvfile"r");
while (! 
feof ($fp)) {
   
$line fgets($fp1000000); 
   
$temp explode(";",$line);
   if (
trim($temp[3]) == 'berlin'
   {
      
$line in deine neue Datei schreiben
   
}

Nur zum verstehen. Ausbauen musste selber
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
  #6 (permalink)  
Alt 14-08-2005, 11:38
LGC
 Junior Member
Links : Onlinestatus : LGC ist offline
Registriert seit: Aug 2005
Beiträge: 95
LGC ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Meine halt eben was bringt

$line = fgets($fp, 1000000);

wenn es hier ein Datensatz mal länger wird wie eine Spalte


...stimmts nacher nicht mehr mit dem Wert so genau...

man könnte ja auch:
$daten = explode('###',file_get_contents("Pfad_zur_Datei/Datei.Endung"));

$daten = explode('|||',$daten[' deine Zeile ']);

echo $daten['deine Spalte'];

Wäre auch hübsch und kurz!

Geändert von LGC (14-08-2005 um 11:42 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 14-08-2005, 11:43
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von LGC
.....was bringt

$line = fgets($fp, 1000000);

wenn es hier ein Datensatz mal länger wird wie eine Spalte

Nichts bringts

Ich denke das sollte der Poster selbst entscheiden.
Er möchte eine einfache CSV datei auslesen.. Nach mehr hat er nicht gefragt.
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
  #8 (permalink)  
Alt 14-08-2005, 11:48
LGC
 Junior Member
Links : Onlinestatus : LGC ist offline
Registriert seit: Aug 2005
Beiträge: 95
LGC ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja klar da hast du Recht!!

Ich meine es auch nur gut. Eine Lösung mit der Datenbank wäre ohne hin besser. Aber das ist ja wieder so eine dumme Angewohnheit von mir, immer einen Roman daraus zu schreiben.

Code halt liebend gerne!

Liebe Grüsse!
Mit Zitat antworten
  #9 (permalink)  
Alt 14-08-2005, 11:54
hhcm
 PHP Senior
Links : Onlinestatus : hhcm ist offline
Registriert seit: Jun 2005
Ort: Viersen, NRW
Beiträge: 1.829
hhcm ist zur Zeit noch ein unbeschriebenes Blatt
hhcm eine Nachricht über ICQ schicken hhcm eine Nachricht über Skype™ schicken
Standard

Lösung mit ner Datenbank?

Erst die CSV auslesen in eine DB schreiben und dann wieder zurück?
Soweit ich das aus dem erst Posting entnehmen kann möchte er scheinbar eine neue CSV erstellen. Kein Wort von Datenbank

Kann ja auch anders sein, aber das wird sich zeigen
__________________
gruss Chris

Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:06 Uhr.