mysql>csv>excel und Zeilenumbruch

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

  • #16
    Hi,

    kein Problem bei der Sache, habe eine Fehlermeldung falsch gedeutet. Das Problem scheint in meiner str_replace () zu liegen: Die ersetzt ja nur Zeichen, aber ich möchte ganze Werte ersetzen.

    Beispiel:

    PHP-Code:
    $suchfeld ="230";
    $search = array ( 2,   4,  30130230);
    $replace =array (1020,  35,   40,  50);
    $erg str_replace ($search$replace$suchfeld); 
    Führt offenbar dazu, dass bei Suchfeld 230 nicht die 230 einfach durch die 50 ersetzt wird, sondern erstmal direkt die 2 als erste Ziffer durch die 10 und die 30 durch die 35 ersetzt wird? Ergebnis 1035 statt 50.

    Wie kann ich denn die kompletten Einzelwerte der Arrays berücksichtigen und nicht nur Zeichen?
    array_replace () kann meine PHP Version noch nicht. :-(

    Kommentar


    • #17
      Führt offenbar dazu, dass bei Suchfeld 230 nicht die 230 einfach durch die 50 ersetzt wird, sondern erstmal direkt die 2 als erste Ziffer durch die 10 und die 30 durch die 35 ersetzt wird? Ergebnis 1035 statt 50.
      Dreh die Reihenfolge mal um. Dann könnte das Problem aber immer noch auftauchen.

      Aber du hast doch in $prod_kat die einzelnen Kategorien in einem Array gespeichert. Warum arbeitest du nicht damit, sondern direkt auf dem String???

      Kommentar


      • #18
        Stimmt, manchmal sieht man den Wald vor Bäumen nicht. Kann ja wirklich ganz einfach die array-Werte austauschen statt da im array Zeichenersetzungen vorzunehmen. Dies hier klappt jetzt:

        PHP-Code:
        foreach ( $prod_kat as $prod  ){
        for ( 
        $i 0$i count($search); $i++){

        if( 
        $prod == $search[$i] ){
        $kat_intern $replace[$i];
        }
        }


        Danke für die Tipps
        Zuletzt geändert von Kabbelwasser; 23.03.2011, 19:17. Grund: klammern falsch

        Kommentar


        • #19
          Export in CSV Datei aus MySQL DB

          Hallo an die Programmierer Gemeinde
          Ich verwende das Script für den Export der Daten aus der MySQL DB:
          http://www.php-resource.de/forum/php...tml#post587672

          Jetzt habe ich ein Problem das ich nicht lösen kann (hab auf Google schon gesucht nur nichts gefunden, also es gibt da Ansätze nur bin ich in PHP noch nicht so FIT)

          Ich möchte die Inhalte aus der DB in die CSV exportieren (was auch sehr gut funktioniert) , nur weiss ich nicht wie ich das Script erweitern soll / muss damit mir beim generieren der CSV Datei auch noch die Spaltenüberschriften generiert werden.

          Spaltenüberschriften die generiert werden sollen und vor dem Inhalt aus der DB in der ersten Zeile eingefügt werden müssen:

          - Vorname
          - Nachname
          - Email
          - Telefon
          - Begleitung

          Ich bedanke mich bereits jetzt bei jedem der mir dabei helfen kann oder mir das Script erweitern kann.

          Didier

          Kommentar


          • #20
            Einfach die Variable $Export nicht mit "" vorbelegen, sondern gleich mit dem, was in der ersten Zeile stehen soll ...?
            (Du willst ja offenbar nur statische Überschriften reinsetzen.)
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              Zitat von wahsaga Beitrag anzeigen
              Einfach die Variable $Export nicht mit "" vorbelegen, sondern gleich mit dem, was in der ersten Zeile stehen soll ...?
              (Du willst ja offenbar nur statische Überschriften reinsetzen.)
              Hi wahsaga
              Erst danke ich Dir mal für deine Antwort. Ich stelle Dir untenstehend mal meinen angepassten Code rein damit Du da mal drüber kannst.

              PHP-Code:
              <?php

                    $DatabaseHost 
              "";
                    
              $DatabaseUser "";
                    
              $DatabasePassword "";
                    
              $Database "";
                    
              $Table "";       

                    
              header('Content-Type: text/x-csv');
                    
              header('Expires: ' gmdate('D, d M Y H:i:s') . ' GMT');
                    
              header('Content-Disposition: attachment; filename=teilnehmer.csv');
                    
              header('Pragma: no-cache');
                     
                    
              $DatabasePointer mysql_connect($DatabaseHost$DatabaseUser$DatabasePassword);
                    
              mysql_select_db($Database$DatabasePointer);
                    
              $ResultPointer mysql_query("SELECT Nachname, Vorname, Email, Telefon, Begleitung FROM $Table");

                    for(
              $i 0$Export "Vorname, Nachname, Email, Telefon, Begleitung"$i mysql_num_rows($ResultPointer); $i++)
                    
                    {
                        
              $Daten mysql_fetch_object($ResultPointer);
                        
              $Spalte[] = str_replace("\"""\"\""$Daten->Vorname);
                        
              $Spalte[] = str_replace("\"""\"\""$Daten->Nachname);
                        
              $Spalte[] = str_replace("\"""\"\""$Daten->Email);
                        
              $Spalte[] = str_replace("\"""\"\""$Daten->Telefon);
                    
              $Spalte[] = str_replace("\"""\"\""$Daten->Begleitung);
                        
                        for(
              $j 0$j count($Spalte); $j++)
                    {
                        
              $Export .= "\"" $Spalte[$j] . "\"";

                        if(
              $j != count($Spalte)-1)

                    {
                        
              $Export .= ";";

                    }

                    }

                        
              $Export .= "\r\n";
               
                        
              $Spalte "";
                    }
                    
                    echo
              $Export;
                    
                    
              ?>
              Jetzt ist es so, das wenn ich bei folgender Zeile Code eben wie Du siehst Vorname, Nachname usw. einfüge dann steht in der exportierten CSV dann in Zeile A1 (Vorname, Nachname, Email, Telefon, Begleitung "Didier")

              PHP-Code:
              for($i 0$Export "Vorname, Nachname, Email, Telefon, Begleitung"$i mysql_num_rows($ResultPointer); $i++) 
              Und in den folgenden Zeilen steht das jeweilige hinter dem Gleichheitszeichen:
              B1 = Federer
              C1 = meine Email
              D1 = meine Telefonnummer
              E1 = Anzahl Begleiter

              Es soll aber wie folgt stehen nach dem Export:
              A1 Spaltenüberschrift = Vorname
              B1 Spaltenüberschrift = Nachname
              C1 Spaltenüberschrift = Email
              D1 Spaltenüberschrft = Telefon
              E1 Spaltenüberschrift = Begleitung

              und dann erst ab Zeile A2 wie folgt:
              A2 = mein Vorname
              B2 = mein Nachname
              C2 = meine Email
              D2 = meine Telefonnummer
              E1 = anzahl Begleitungen

              Ich hoffe das Du mir sagen kannst wo ich jetzt was ergänzen, ändern oder eben erweitern muss



              Grüsse aus der Schweiz
              Didier

              Kommentar


              • #22
                K.A., ob das jetzt wirklich dein Problem ist (die Beschreibung ist für mich reichlich undurchsichtig) - dass die Überschriftenzeile auch mit einem Zeilenumbruch abgeschlossen werden sollte, ist aber wohl eigentlich selbstverständlich ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #23
                  Zitat von wahsaga Beitrag anzeigen
                  K.A., ob das jetzt wirklich dein Problem ist (die Beschreibung ist für mich reichlich undurchsichtig) - dass die Überschriftenzeile auch mit einem Zeilenumbruch abgeschlossen werden sollte, ist aber wohl eigentlich selbstverständlich ...
                  Hab es vielleicht schon ein wenig undurchsichtig geschrieben (um es einfacher auszudrücken, wenn ich den obigen Code verwende wird es folgendermassen ausgegeben in der Zeile A1)

                  Vorname, Nachname, Email, Telefon, Begleitung "Didier"

                  B1 -> Federer
                  C1 -> meine Email Adresse
                  D1 -> meine Telefonnummer
                  E1 -> Anzahl Begleitungen

                  B1 bis E1 stehen ja für die Zeilen in Excel

                  Ausgegeben werden sollte es aber so
                  Vorname | Nachname | Email | Telefon | Begleitung
                  Didier | Federer | meine Mail | meine Telefonnummer | 10

                  Wo habe ich da jetzt den Fehler drin, sprich was muss ich noch hinzufügen das es stimmt ????

                  Grüsse
                  Didier

                  Kommentar


                  • #24
                    Der springe Punkt gehört über die Kommata, mit denen du die Werte in deiner Überschriften-Zeile getrennt hast.

                    (Ein Komma mit einem Punkt drüber ist was? Genau ...)
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #25
                      Zitat von wahsaga Beitrag anzeigen
                      Der springe Punkt gehört über die Kommata, mit denen du die Werte in deiner Überschriften-Zeile getrennt hast.

                      (Ein Komma mit einem Punkt drüber ist was? Genau ...)
                      könnte das vielleicht ein Semikolon sein (also anstatt das normale Komma einfach ein Semikolon) ????

                      Kommentar


                      • #26
                        kannst Du mir noch sagen wo ich das setzen muss:

                        , != ;

                        Sorry das ich so deppet frag aber stehe glaube ich gerade ein wenig auf dem Schlauch...

                        Kommentar


                        • #27
                          Statt den Kommata Semikolons ...
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #28
                            Warum verwendest du nicht einfach fputcsv()?

                            PHP: fputcsv - Manual

                            Kommentar


                            • #29
                              Hallo Leute
                              Danke nochmals für eure Denkanstösse. Ich hab das ganze jetzt ein wenig überarbeitet mit meinem Kumpel und es ist auch ein weniger Code bei gleichbleibender Funktion:

                              PHP-Code:
                              <?php

                              $DatabaseHost 
                              "localhost";
                              $DatabaseUser "root";
                              $DatabasePassword "";
                              $Database "";
                              $Table "";       

                              header('Content-Type: text/x-csv');
                              header('Expires: ' gmdate('D, d M Y H:i:s') . ' GMT');
                              header('Content-Disposition: attachment; filename=teilnehmer.csv');
                              header('Pragma: no-cache');

                              $DatabasePointer mysql_connect($DatabaseHost$DatabaseUser$DatabasePassword);
                              mysql_select_db($Database$DatabasePointer);
                              $ResultPointer mysql_query("SELECT Nachname, Vorname, Email, Telefon, Begleitung FROM $Table");

                              for(
                              $i 0$Export "\"Vorname\";\"Nachname\";\"Email\";\"Telefon\";\"Begleitung\"\r\n"$i mysql_num_rows($ResultPointer); $i++) {
                                  
                              $Daten mysql_fetch_array($ResultPointer);
                                  
                                  
                              $fields mysql_num_fields($ResultPointer);

                                  for (
                              $x 0$x $fields$x++) {
                                      
                              $Export .= "\"" str_replace("\"""\"\""$Daten[$x]) . "\"";

                                      if(
                              $x $fields-1) {
                                          
                              $Export .= ";";
                                      }
                                  }

                                  
                              $Export .= "\r\n";
                              }

                              echo 
                              $Export;
                              ?>
                              Das mit den Spaltenüberschriften war ja eigentlich ganz einfach

                              alter Code ohne Spaltenüberschriften:
                              PHP-Code:
                              for($i 0$Export ""$i mysql_num_rows($ResultPointer); $i++) 
                              neuer Code der die Spaltenüberschriften in den ersten Zeilen setzt:
                              PHP-Code:
                              for($i 0$Export "\"Vorname\";\"Nachname\";\"Email\";\"Telefon\";\"Begleitung\"\r\n"$i mysql_num_rows($ResultPointer); $i++) 
                              neuer Code für die Zeilen/Spalten Ausgabe der DB:
                              PHP-Code:
                              $fields mysql_num_fields($ResultPointer);

                                  for (
                              $x 0$x $fields$x++) {
                                      
                              $Export .= "\"" str_replace("\"""\"\""$Daten[$x]) . "\"";

                                      if(
                              $x $fields-1) { 
                              Der obenstehend Code hat den Vorteil das man nicht jede Spalte separat aufführen muss wie beim alten Code.

                              Und danke nochmals für eure Hilfe.

                              Kommentar

                              Lädt...
                              X