Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Daten per PHP in CSV-Datei speichern

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

  • [Erledigt] Daten per PHP in CSV-Datei speichern

    Hallo PHP User,

    hab mal wieder ein Problem.

    Dieses mal möchte ich Daten aus PHP in eine CSV Datei schreiben.
    Und zwar möchte ich genau diese Ausgabe (das rot markierte) in eine CSV packen.



    Mein Quelltext, der diese Tabelle erstellt ist folgender:
    PHP-Code:

    <meta http-equiv="Content-Type" content="text/html; charset=iso8859-1">
    <link rel="icon" href="../../pictures/favicon.ico" type="image/ico">
    <?php
    $mysqluser 
    'admin';
    $mysqlpasswd '1223454';
    $mysqlhost 'localhost';
    $database 'azubi_data_csv';

    $bewertung $_GET['action'];

    mysql_connect ($mysqlhost$mysqluser$mysqlpasswd) or die('ERROR!'); 
    mysql_select_db ($database);
    if(isset(
    $_POST['beruf']))
    {
    if ( 
    $_POST['beruf'] == "Industriekaufleute/KS-IB/KS-AC" )
            {
                
    $beruf "IK_IB_AC";
            }
        if ( 
    $_POST['beruf'] == "Informatikberufe/KS-WI" )
                {
                    
    $beruf "IF_WI";
                }
            if ( 
    $_POST['beruf'] == "Verfahrensmechaniker/-in" )
                    {
                        
    $beruf "VM";
                    }
                if ( 
    $_POST['beruf'] == "Werkzeugmechaniker/-in" )
                        {
                            
    $beruf "WM";
                        }
                    if ( 
    $_POST['beruf'] == "Mechatroniker/Elektroniker/KS-ET" )
                            {
                                
    $beruf "MT_ET";
                            }
                        if ( 
    $_POST['beruf'] == "Zerspanungsmechaniker/-in" )
                                {
                                    
    $beruf "ZM";
                                }
                            if ( 
    $_POST['beruf'] == "Industriemechaniker/-in" )
                                    {
                                        
    $beruf "IM";
                                    }
                                if ( 
    $_POST['beruf'] == "Kombistudenten - WING/MB" )
                                        {
                                            
    $beruf "WI_MB";
                                        }
                                    if ( 
    $_POST['beruf'] == "Umschueler" )
                                            {
                                                
    $beruf "US";
                                            }
    }
    else
    {
    $beruf $_GET['action2'];
    }

    //Macht den ersten Buchstaben groß                                        
    $str $bewertung;
    $str ucfirst($str);

    echo (
    '
    <html>
    <head>
    <title>BBS | Auswertung - '
    .$str.'</title>
    <link rel="stylesheet" type="text/css" href="../../data/style.css">
    <script src="../../data/script.js" type="text/javascript"></script>
    <form action="exportcsv.php" method="post" name="auswertung_tab">
    </head>
    <body>
    <center>
    <a href="tab_auswertung.php?action=erklaerung&action2='
    .$beruf.'">Erklaerung</a>
    <a href="tab_auswertung.php?action=lernerfolg&action2='
    .$beruf.'">Lernerfolg</a>
    <a href="tab_auswertung.php?action=betreuung&action2='
    .$beruf.'">Beurteilung</a>
    <a href="tab_auswertung.php?action=gesamteinsch&action2='
    .$beruf.'">Gesamteinschätzung</a>
    <a href="tab_gut.php">Gut</a>
    <a href="tab_schlecht.php">Schlecht</a>
    </center>
    <br>
    '
    );
    if ( 
    $beruf == "IK_IB_AC" )
            {
                
    $beruf_ausgabe "Industriekaufleute/KS-IB/KS-AC";
            }
        if ( 
    $beruf == "IF_WI" )
                {
                    
    $beruf_ausgabe "Informatikberufe/KS-WI";
                }
            if ( 
    $beruf == "VM" )
                    {
                        
    $beruf_ausgabe "Verfahrensmechaniker/-in";
                    }
                if ( 
    $beruf == "WM" )
                        {
                            
    $beruf_ausgabe "Werkzeugmechaniker/-in";
                        }
                    if ( 
    $beruf == "MT_ET" )
                            {
                                
    $beruf_ausgabe "Mechatroniker/Elektroniker/KS-ET";
                            }
                        if ( 
    $beruf == "ZM" )
                                {
                                    
    $beruf_ausgabe "Zerspanungsmechaniker/-in";
                                }
                            if ( 
    $beruf == "IM" )
                                    {
                                        
    $beruf_ausgabe "Industriemechaniker/-in";
                                    }
                                if ( 
    $beruf == "WI_MB" )
                                        {
                                            
    $beruf_ausgabe "Kombistudenten - WING/MB";
                                        }
                                    if ( 
    $beruf == "US" )
                                            {
                                                
    $beruf_ausgabe "Umschueler";
                                            }

    echo(
    '
    <center><strong><u>'
    .$beruf_ausgabe.' <br> '.$str.'</u></strong><br><br></center>
    <table>

    '
    );


    //Erstellen eines Arrays der PI-Nummern
    $result=mysql_query("SELECT pinr FROM auszubildende where beruf = '".$beruf."'");
    $anzahl_pinr mysql_num_rows($result);

    while(
    $row mysql_fetch_array($result))
    {
    $pinr[] = $row['pinr']; 
    }

    //Erstellen eines Arrays der Prüfungszeiten
    $result2 mysql_query("SELECT distinct pruefungszeit FROM auszubildende where beruf = '".$beruf."'");
    $anzahl_jahr 0;

    while(
    $row2 mysql_fetch_array($result2))
    {
        
    $abschluss[] = $row2['pruefungszeit']; 
        
    $anzahl_jahr $anzahl_jahr 1;
    }

    //Erstellen eines Arrays der Kennungen
    $result3 mysql_query("SELECT distinct kennung FROM csvdaten order by kennung asc");
    $anzahl_abteilung 0;

    while(
    $row3 mysql_fetch_array($result3))
    {
    $abteilung[] = $row3['kennung'];
    $anzahl_abteilung $anzahl_abteilung 1;
    }
     
    // Arrayausgabe zur Überprüfung der Arrays

    /* print_r ($pinr);

    echo ('<br>');

    print_r ($abschluss);

    echo ('<br>');

    print_r ($abteilung);  */
     
    echo('<table align="center"><tr>');

    //Erstellt die Spalte "Bereich" ( nur bei technischen Berufen )
    if ($beruf == "US" || $beruf == "VM" || $beruf == "WM" || $beruf == "MT_ET" || $beruf == "IM" || $beruf == "ZM" || $beruf == "WI_MB" || $beruf == "US" )
        {
            echo (
    '
            <td rowspan="2"><strong>Bereich:</strong></td>
            '
    );
        } 

    //Erstellt die Spalte "Abteilung"
    echo ('<td rowspan="2"><strong>Abteilung:</strong></td>');

    //Schreibt die Jahrgänge als Überschrift
    for($count 0$count $anzahl_jahr$count++)
    {
        
        echo (
    '
        <td><strong>'
    .$abschluss[$count].'</strong></td>
        '
    );
    }

    echo (
    '</tr><tr>');

    //Schreibt "Ø / Personen" unter die Jahrgänge
    for($count 0$count $anzahl_jahr$count++)
    {
        echo (
    '
        <td align="center">Ø / Personen</td>
        '
    );
    }

    echo (
    '</tr>');

    $check 0;
    for(
    $count 0$count $anzahl_abteilung$count++)
    {

        
    //Zeilenüberschrift
        
    echo ('
        <tr>
        '
    );
        
        
    //Schreibt die Bereiche in eine Spalte ( nur bei technischen Berufen )
        
    if ($beruf == "US" || $beruf == "VM" || $beruf == "WM" || $beruf == "MT_ET" || $beruf == "IM" || $beruf == "ZM" || $beruf == "WI_MB" || $beruf == "US" )
        {
            
    $tresult mysql_query("SELECT bereich FROM csvdaten WHERE kennung = '".$abteilung[$count]."'");
            
    $row =  mysql_fetch_array($tresult);
            echo
            (
    '
                <td>'
    .$row['bereich'].'</td>
            '
    );
            
        }
        
        
    //Schreibt die Abteilungen in eine Spalte
        
    echo
        (
    '
            <td>'
    .$abteilung[$count].'</td>
        '
    );
        
            
    //Schreibt die Durchschnittsbewertungen + Personenzahl in die entsprechenden Spalten
            
    for($count2 0$count2 $anzahl_jahr$count2++)
            {

                echo 
                (
    '
                    <td align="center"> 
                '
    );
                
                
    $avg 0;
                
    $merker 0;
                
                
                
    //Array leeren
                
    $pinr_select = array();

                
    $result4 mysql_query("SELECT pinr FROM auszubildende where beruf = '".$beruf."' and pruefungszeit = '".$abschluss[$count2]."'order by pinr asc");
                
    $anzahl_pinr_select mysql_num_rows($result4);
                
                
    //Neuer PI-Nummer Array wird erstellt
                
    while($row4 mysql_fetch_array($result4))
                {
                    
    $pinr_select[] = $row4['pinr']; 
                }
                
                
    //Der Durchschnittswert der Bewertung "Erklaerung" wird berechnet
                
    for($count3 0$count3 $anzahl_pinr_select$count3++)
                {
                        
    $result5 mysql_query("SELECT $bewertung FROM csvdaten where pinr = '".$pinr_select[$count3]."' and kennung = '".$abteilung[$count]."'");
                    
                            while(
    $row5 mysql_fetch_array($result5))
                                {
                                    
    $merker $merker 1;
                                    
    $pruef $row5[$bewertung];
                                    if( 
    $pruef != "")
                                    {
                                        
    $avg $avg $row5[$bewertung];
                                    }
                                    else
                                    {
                                    
    $check 1;
                                    }
                                }
                                                            
                }
                
                
    $avg $avg $merker;
                
    $avg round($avg2);
            
                
                
                
                

                
                
    //Ausgabe Durchschnittswert / Personenzahl
                
    echo 
                (
    '
                    '
    .$avg.' / '.$merker.'<br>
                '
    );
                
                echo 
                (
    '
                    </td>
                '
    );
            
            }


        echo(
    '
        </tr>
        '
    );
    }

    echo (
    '
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td><input type="submit" name="subber" value="Export"></td>
    </table>
    '
    );
    if (
    $check == 1)
    {
    echo(
    '<center><font color="#FF0000"><b>Eine oder mehrere Bewertungen wurden noch nicht durchgeführt!<br>
    Das Ergebnis ist somit noch nicht Aussagefähig!</b></font></center>'
    );
    }



    echo (
    '
    </form>
    </body>
    </html>'
    );
    mysql_close();
    ?>
    Das Problem ist, dass ich diese Tabelle nicht einfach auslese sondern filtere/berechne und dann erst in eine Tabelle schreibe mit vielen Variablen.

    1.Ich hab überhaupt keinen Anfang gefunden, wie ich überhaupt irgendwas in eine CSV schreibe.
    2.Wie verbinde ich meine variablen ($avg, $merker, $abteilung[$count],$bereich) korrekt ?


  • #2
    Als Ansatzpunkt für Dich:

    PHP: fputcsv - Manual

    Wofl29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Irgendwie klappt die Übergabe der Arrays nicht in die exportcsv.php
      Habs mit Hidden input type versucht, ich bekomme aber nur:

      Array ( [0] => Array )

      Kommentar


      • #4
        Wie sieht dein Quellcode aus? Hast Du gesehen, wie in dem Beispiel auf php.net das Array aufgebaut ist?

        Wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          ok übergabe klappt, eintragungen auch
          danke erstmal ^^

          ehm wie kann ich denn jetzt einem string sagen, dass wenn er in csv mit "," eingelesen wird nen zeilenumbruch macht anstatt dem "," ?

          Kommentar


          • #6
            Wieso sollte man das tun?
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              [OT]
              [MAN]switch[/MAN]
              [/OT]

              Kommentar


              • #8
                ...

                Kommentar


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Wieso sollte man das tun?
                  damit ich in der CSV geordnete Spalten habe?

                  ich möchte einfach, dass anstatt ein ,(komma) ein Zeilenumbruch (vll mit \n) oder so gesetzt wird, so dass z.B.

                  Spalte A (CSV-Excel)
                  0
                  1
                  2
                  3
                  4
                  5

                  und nicht
                  0,1,2,3,4,5

                  Kommentar


                  • #10
                    Das macht aber keinen Sinn, weil in CSV (comma sperated) eben Spalten (nicht Zeilen!) durch Kommata getrennt werden.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Steht in der Doku die dir wolf29 gepostet hat.
                      You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

                      Kommentar


                      • #12
                        Zitat von nikosch Beitrag anzeigen
                        Das macht aber keinen Sinn, weil in CSV (comma sperated) eben Spalten (nicht Zeilen!) durch Kommata getrennt werden.
                        ja richtig ist mir schon bewusst

                        EDIT:
                        Hatte nen Fehler hab anstatt ";" "," benutzt damit kommt excel anscheinend nicht klar
                        jetzt gehts soweit


                        gibt es denn ne möglichkeit diese seperierung zu formatieren?

                        Kommentar


                        • #13
                          Dann hast Du in Excel den falschen Separator gewählt.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar

                          Lädt...
                          X