Announcement

Collapse
No announcement yet.

While-Schleife überspringt den ersten Datensatz

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • While-Schleife überspringt den ersten Datensatz

    Ich baue mir in folgendem Script ein XML-Dokument zusammen.
    Leider überspringt meine While-Schleife den ersten Datensatz komplett.

    Könnt ihr mir helfen?!

    Hier der Code:

    $sql_2 = "SELECT Name, SUM(Minuten) AS MIN FROM Login_Daten WHERE Eingeloggt BETWEEN '".$date_hilfe."' AND '".$aktuell."' GROUP BY Name";
    $erg_gruppe = sqlsrv_query( $conn, $sql_2);
    if( $erg_gruppe === false){
    die( print_r( sqlsrv_errors(), true));
    }
    $wor = sqlsrv_fetch_array( $erg_gruppe, SQLSRV_FETCH_BOTH);

    while( $wor = sqlsrv_fetch_array( $erg_gruppe, SQLSRV_FETCH_ASSOC)) {

    $wor['Name'] = iconv('Windows-1252', 'UTF-8', $wor['Name']);
    $root->appendChild($Ebene2 = $dom->createElement("series"));
    $Ebene2->appendChild($dom->createElement("name", $wor['Name']));
    $Ebene2->appendChild($Ebene3 = $dom->createElement("data"));
    $wor['Name'] = iconv('UTF-8', 'Windows-1252', $wor['Name']);

    $minus = 0;

    for($zaehl = 1; $zaehl < 8; $zaehl++){

    $tag_eintrag = date("Y-m-d", mktime(0,0,0,$monat,$tag-$minus,$datum));


    $sql_3 = "SELECT Eingeloggt, SUM(Minuten) AS MIN FROM Login_Daten WHERE Name = '".$wor['Name']."' AND Eingeloggt = '".$tag_eintrag."' GROUP BY Eingeloggt";
    $erg_zaehl = sqlsrv_query( $conn, $sql_3);
    if( $erg_zaehl === false){
    die( print_r( sqlsrv_errors(), true));
    }
    $row_3 = sqlsrv_fetch_array( $erg_zaehl, SQLSRV_FETCH_BOTH);

    $tag_eintrag_2 = $tag_eintrag = date("N", mktime(0, 0, 0, $monat, $tag-$minus, $datum));

    if ($tag_eintrag_2 == 7 || $tag_eintrag_2 == 6)
    {
    $minus++;
    $zaehl--;
    }
    else{
    if( $row_3['MIN'] == ""){
    $Ebene3->appendChild($Ebene4 = $dom->createElement("Minuten", '0'));
    }
    else{
    $Ebene3->appendChild($Ebene4 = $dom->createElement("Minuten", $row_3['MIN']));
    }

    $minus++;
    }
    }



    sqlsrv_free_stmt( $erg_zaehl);
    }
    sqlsrv_free_stmt( $erg_gruppe);
    $dom->save("Diagramm_Hilfe/Woche.xml");
    Grüße xXSpikeXx

  • #2
    $wor = sqlsrv_fetch_array( $erg_gruppe, SQLSRV_FETCH_BOTH);

    while( $wor = sqlsrv_fetch_array( $erg_gruppe, SQLSRV_FETCH_ASSOC)) {

    Du greifst ja auch schon eine Zeile vorher diesen ab

    -> ggf. fussgesteuerte Schleife benutzen
    Christian

    Comment


    • #3
      verstehe ich grade nicht, das heißt ich muss in der while-Schleife..._BOTH reinschreiben?! klappt auch nicht ... habe ich grade auch entdeckt, aber ändert leider nichts

      Comment


      • #4
        ach nein jetzt verstehe ich deine Antwort xD

        Vielen Dank jetzt funktioniert es

        Comment


        • #5
          sqlsrv_fetch_array

          Returns the next available row of data as an associative array, a numeric array, or both (the default).

          D.h. beim Aufruf von $wor = sqlsrv_fetch_array( $erg_gruppe, SQLSRV_FETCH_BOTH); bekommst du die erste Zeile. Rufst du nun in der while-Schleife sqlsrv_fetch_array nochmal auf bekommst du eben die 2. Zeile. Also benutze eine fussgesteuerte Schleife
          Christian

          Comment


          • #6
            Danke

            ich habe das erste fetch_array einfach weggelassen

            Comment

            Working...
            X