Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Daten per PHP in CSV-Datei speichern

Einklappen

Neue Werbung 2019

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

  • Andre3000
    hat ein Thema erstellt [Erledigt] Daten per PHP in CSV-Datei speichern.

    [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 ?

  • nikosch
    antwortet
    Dann hast Du in Excel den falschen Separator gewählt.

    Einen Kommentar schreiben:


  • Andre3000
    antwortet
    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?

    Einen Kommentar schreiben:


  • chorn
    antwortet
    Steht in der Doku die dir wolf29 gepostet hat.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Andre3000
    antwortet
    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

    Einen Kommentar schreiben:


  • cetalian
    antwortet
    ...

    Einen Kommentar schreiben:


  • cetalian
    antwortet
    [OT]
    [MAN]switch[/MAN]
    [/OT]

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Wieso sollte man das tun?

    Einen Kommentar schreiben:


  • Andre3000
    antwortet
    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 "," ?

    Einen Kommentar schreiben:


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

    Wolf29

    Einen Kommentar schreiben:


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

    Array ( [0] => Array )

    Einen Kommentar schreiben:


  • wolf29
    antwortet
    Als Ansatzpunkt für Dich:

    PHP: fputcsv - Manual

    Wofl29

    Einen Kommentar schreiben:

Lädt...
X