tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
465
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sasser1981 sasser1981 ist offline Rookie
    Registriert seit
    Nov 2011
    Beiträge
    9
    Hallo liebe Community,

    ich trete erneut mit einem Problem an euch, in der Hoffnung, das mir geholfen werden, oder mir ein Denkanstoss gegeben werden kann.

    Folgendes:

    Ich habe eine CSV Datei, die mehrere Daten erhält.
    Nun soll der User auf der Seite eine PLZ eingeben können, und
    alle ergebnisse (ganze zeile) der CSV Datei, die diese PLZ enhält, soll
    als neue CSV datei erstellt werden.

    Beispiel:

    Die CSV:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    ID,Name,Alter,Wohnort,PLZ,Status,WeitereDaten,WeitereDaten
    ,user1,12,zuHause,15645,bla,,bla
    ,user2,22,beiMama,12345,bla,,bla
    ,user3,45,beiOma,12345,bla,,bla
    ,user4,13,unterDerBrücke,12345,bla,,bla
    ,user5,15,zuHause,15645,bla,,bla
    ,user6,24,zuHause,12345,bla,,bla
    ,user7,23,BeiFreundin,15645,bla,,bla
    ,user8,10,zuHause,12345,bla,,bla

    Der User/Kunde gibt nun auf der Seite in einem Suchfeld die PLZ ein:
    15645

    Als Ergebnis soll er eine neue Herunterladbare Datei bekommen,
    mit dem Inhalt:

    Code :
    1
    2
    3
    4
    
    ID,Name,Alter,Wohnort,PLZ,Status,WeitereDaten,WeitereDaten
    ,user1,12,zuHause,15645,bla,,bla
    ,user5,15,zuHause,15645,bla,,bla
    ,user7,23,BeiFreundin,15645,bla,,bla

    Wie kann man soetwas OHNE MYSQL realisieren?
    Mir raucht seit tagen der Kopf, da ich nie vorher mit CSV dateien gearbeitet habe...


    Also die Datei öffenen und Daten ausgeben mit fgetcsv(); bekomme ich hin...
    Suchen mit in_array() scheint mir nicht komfortabel, da ich immer nur die PLZ ausgegeben bekomme...
    Ich brauche aber die ganze Zeile...

    Wer kann helfen?
    Geändert von sasser1981 (09.11.11 um 11:49 Uhr) Grund: BBCODE
     

  2. #2
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    Hey,

    also an dem Punkt, wo du gegen die Plz pruefst, musst Du einfach die komplette Zeile wieder zusammen bauen und in einen Buffer speichern. Den Buffer haengst du dann an deine neue Datei an (fwrite).

    Quasi so, pseudocode:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    $fh = fopen('neue-datei.csv');
    while ( ($data = fgetcsv...)){
       if( $data[3] == $_POST['plz'] ) {
           $line = implode(',', $data);
           fwrite( $fh, $line );
       }
    }
    fclose( $fh );
    sendFile( 'neue-Datei.csv' );
    Geändert von MArc (09.11.11 um 12:50 Uhr)
     
    Kryn.cms - einfach anders.

    "When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)

  3. #3
    sasser1981 sasser1981 ist offline Rookie
    Registriert seit
    Nov 2011
    Beiträge
    9
    Ok, das hilft mir beim erstellen der datei weiter...
    Aber wie realisiere ich die Suche, die ja alle Zeilen wiedergeben soll... ?

    ich habe gelesen das in_array() auch nicht sonderlich empfehlenswert sein soll...?!
     

  4. #4
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    Nun, die Zeile "if( $data[3] == $_POST['plz'] ) {" ist ja bereits die Suche Denn mit dieser Condition werden nur Zeilen in die neue Datei geschrieben, die als Postleitzahl eben den Wert haben, den der User im Formular eingetippt hat. Leider ist das bei CSV so, dass man jede Zeile durchgehen muss, um dann zu entscheiden, ob jene Zeile angezeigt (oder in deinem Fall abgespeichert) werden soll.
     
    Kryn.cms - einfach anders.

    "When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)

  5. #5
    sasser1981 sasser1981 ist offline Rookie
    Registriert seit
    Nov 2011
    Beiträge
    9
    also muss ich qusi sagen

    if( $data[33] == $_POST['plz'] ) { }
    if( $data[65] == $_POST['plz'] ) { }
    if( $data[97] == $_POST['plz'] ) { }
    etc

    ok... das hilft auch weiter...


    Aber ein letztes:
    Wie kann ich denn die Anzahl der zeilen bestimmen?
    Denn dann würde ich sagen ich mach ne schleife...
    i=33 (erste Plz)
    und dann eine schleife i+32 (jede weitere plz)

    if( $data[$i] == $_POST['plz'] ) { }
    bis halt zur letzten Zeile...




    Code :
    1
    2
    3
    4
    5
    
    $zeilen=500;
    for ($i=33; $i < $zeilen; $i+=32)
    {
      echo "data[".$i."];";
    }

    Geht er auch so die letzte zeile durch? ich bin mir net sicher...
    schon oder****?
    Geändert von sasser1981 (09.11.11 um 14:21 Uhr)
     

  6. #6
    sasser1981 sasser1981 ist offline Rookie
    Registriert seit
    Nov 2011
    Beiträge
    9
    Vielen Dank =) Habs hinbekommen =)
    Der Tipp mit "Leider ist das bei CSV so, dass man jede Zeile durchgehen muss,"
    hats gebracht und die anzahl der zeilen habe ich mit

    $Zeilen = count(file("$file"));

    bestimmt...

    Danke!
     

  7. #7
    sasser1981 sasser1981 ist offline Rookie
    Registriert seit
    Nov 2011
    Beiträge
    9
    Sry für mehrfachpost, aber ich brauche noch nen denkanstoss...

    Ich soll nun, eine CSV (dient als Datenbank)
    Mit einer anderen CSV (kundendaten) abgleichen und dann alle
    kunden aus die in beiden CSV vorhanden sind als neue CSV speichern.
    Das ohne such eingabe. Einfach per klick


    Beispiel

    Datenbank.csv
    stadt,plz,daten,daten,daten,daten,daten
    berlin,12345,daten,daten,daten,daten,daten
    hamburg,23456,daten,daten,daten,daten,daten
    frankfurt,34567,daten,daten,daten,daten,daten
    Potsdam,45678,daten,daten,daten,daten,daten

    Kunden.csv
    Name,stadt,plz,daten,daten,daten,daten,daten
    Heinz,berlin,12345,daten,daten,daten,daten,daten
    Peter,berlin,12345,daten,daten,daten,daten,daten
    Jutta,berlin,12345,daten,daten,daten,daten,daten
    Bernd,hamburg,23456,daten,daten,daten,daten,daten
    Siggi,Erfurt,11125,daten,daten,daten,daten,daten
    Bart,hamburg,23456,daten,daten,daten,daten,daten
    Kai,frankfurt,34567,daten,daten,daten,daten,daten
    Markus,Potsdam,45678,daten,daten,daten,daten,daten
    Klaus,Potsdam,45678,daten,daten,daten,daten,daten


    Ergibnis

    Potsdam_CSV.csv
    Markus,Potsdam,45678,daten,daten,daten,daten,daten
    Klaus,Potsdam,45678,daten,daten,daten,daten,daten

    Berlin_CSV.csv
    Heinz,berlin,12345,daten,daten,daten,daten,daten
    Peter,berlin,12345,daten,daten,daten,daten,daten
    Jutta,berlin,12345,daten,daten,daten,daten,daten

    hamburg_CSV.csv
    Bernd,hamburg,23456,daten,daten,daten,daten,daten
    Bart,hamburg,23456,daten,daten,daten,daten,daten

    frankfurt_CSV.csv
    Kai,frankfurt,34567,daten,daten,daten,daten,daten

    SIGGI DARF NIRGENDS AUFTAUCHEN, DA SEINE PLZ NICHT IN DER DATENBANK.CSV STEHT!
    Siggi,Erfurt,11125,daten,daten,daten,daten,daten




    Mein Ansatz ****t leider nicht

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
      while (($data = fgetcsv($opencsv, $Zeilen, ";")) !== FALSE) #Datenbank
      { 
          $pruef = $data[1];
          
          foreach($pruef as $check)
          {
               while (($Kundendata = fgetcsv($opencsv_kunden, 2064, ",")) !== FALSE)
               {
     
                 if($check==$Kundendata[3]) 
                {


    Bitte um Denkanstoss =(
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 17.05.09, 11:41
  2. Antworten: 3
    Letzter Beitrag: 10.09.06, 06:00
  3. Antworten: 3
    Letzter Beitrag: 08.09.06, 10:07
  4. [c]Datei Durchsuchen/Ausgeben
    Von sascha ak opi im Forum C/C++
    Antworten: 22
    Letzter Beitrag: 19.07.06, 09:01
  5. Access Datenbank durchsuchen und Ergebnisse ausgeben
    Von der_byte_b0zZ im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 18.07.05, 17:07

Stichworte