Schleife

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

  • Schleife

    Hallo zusammen,

    ich hab heute mal wieder ein kleines Problem.
    ich lese aus einer DB mit fogendem Code Zeiten aus einer DB aus. Nun will ich die Stunden in einer Schleife addieren. kann mir da jemand helfen wie ich das mache ???

    Danke

    Hier der Code:

    while($line = @mysql_fetch_object($workquery)) {
    echo '<tr>';
    echo '<td width="15" bgcolor="#e7e7e7" align="right">'.$counter.'</td>';
    echo '<td width="50" bgcolor="#ffffff">'.$line->datum.'</td>';
    echo '<td width="80" bgcolor="#ffffff">'.$line->projektnr. '</td>';
    echo '<td width="300" bgcolor="#ffffff">'.$line->taetigkeit.'</td>';
    echo '<td width="40" bgcolor="#ffffff">'.$line->von.'</td>';
    echo '<td width="40" bgcolor="#ffffff">'.$line->bis.'</td>';
    echo '<td width="40" bgcolor="#ffffff">'.$line->pause.'</td>';
    echo '<td width="40" bgcolor="#e7e7e7">'.$line->stunden.'</td>';
    echo '</tr>';

    $counter++;

  • #2
    PHP-Code:
    <?php
    $counter 
    0;
    while(
    $cResult mysql_fetch_array($cResultSet))
    {
    ?>
    <tr>
    <td>Stunden: <? echo $counter; ?></td>
    <td>Name: <? echo $cResult['NAME']; ?></td>
    <td>Nachname: <? echo $cResult['NNAME']; ?></td>
    </tr>
    <?

    $counter++;
    }
    ?>
    wäre eine idee wobei ich im moment nicht weiss was du erreichen willst wenn du nen counter zählen willst musst du diesem natürlich vor der schleife einen Startwert geben !

    Kommentar


    • #3
      der counter wird vor der schleife schon initialisiert.

      ich bekomme Stundenwerte aus der Datenbank und will diese Stunden aufsummieren. Wie kann ich das Problem lösen ? So dass ich dann anschließend die Gesamtstunden habe

      Kommentar


      • #4
        $cResult['STUNDE']++; ?! müsste dir helfen .... :P einfach 1. Stunde drauf ...

        Kommentar


        • #5
          nee, der counter ist lediglich dafür da, dass er die einzelnen Zeilen der Datensätze aus der DB nummeriert, ich will die Summer der Stunden welche aus n Datensätzen kommen.
          z.B.

          ID : Stunden : Gesamt
          ---------------------------------
          1 : 02:30:00 : 02:30:00
          2 : 00:30:00 : 03:00:00
          3 : 12:15:00 : 15:15:00

          Es geht mit also um die Spalte Gesamt, wie ich die erstellen kann

          Kommentar


          • #6
            PHP-Code:
            <?php
            $timestamp  
            0;

            $stunden     = Array();
            $stunden[]     = "02:30:00";
            $stunden[]     = "00:30:00";
            $stunden[]     = "12:15:00";

            // Durchlaufe die Stunden
            foreach ( $stunden as $key=>$val ) {
                
            // Zerlege den Stunden-String
                
            $tmp explode(":",$val);
                
            // Rechne die drei Einheiten in Sekunden um, und addiere
                // die Sekunden in der variablen $timestamp
                
            $timestamp += $tmp[2] + $tmp[1] * 60 $tmp[0] * 3600;
            }

            // Nun hast Du die Sekunden, und kannst sie mit der date() funktion weiterverarbeiten
            echo date("H:i:s",$timestamp-3600); // GMT + 1 Stunde
            ?>

            Kommentar


            • #7
              danke fiderallalla,
              das war genau das was ich gesucht habe, nur habe ich noch ein kleines Problem. Wie mache ich es wenn die Stunden >als 24 sind, dass es trotzdem dann weiterzählt ?

              Kommentar


              • #8
                Original geschrieben von mgoertz
                danke fiderallalla,
                das war genau das was ich gesucht habe, nur habe ich noch ein kleines Problem. Wie mache ich es wenn die Stunden >als 24 sind, dass es trotzdem dann weiterzählt ?
                Hmm? Es zählt doch weiter!? Du wolltest eine Aufsummierung, und mit dem Script erhälst Du z. B. 55:22:00.

                Falls Du Tage extra ausgewiesen haben möchtest, musst Du den Formatierungsstring, welcher der date() Funktion übergeben wird, anpassen.

                RTFM - Hier steht alles was Du brauchst:
                http://www.php.net/manual/en/function.date.php



                7-/anz

                Kommentar


                • #9
                  sorry aber bei mir fängt er nach 24 wieder bei null an
                  hier der Code wie ich ihn implementiert habe :

                  $workquery = mysql_query("SELECT date_format(datum, '%d.%m.%Y') as datum, projektnr, taetigkeit, von, bis, pause, stunden FROM oda_work WHERE name= '$uname' and monat= '$monat' and jahr= '$jahr'") or print('Kann die Projekte nicht ausw&auml;hlen!');
                  $counter = 1;
                  $timestamp = 0;
                  $stunden = Array();
                  while($line = mysql_fetch_object($workquery)) {
                  echo '<tr>';
                  echo '<td width="30" bgcolor="#e7e7e7" align="right">'.$counter.'</td>';
                  echo '<td width="50" bgcolor="#ffffff">'.$line->datum.'</td>';
                  echo '<td width="40" bgcolor="#ffffff">'.$line->projektnr.'</td>';
                  echo '<td width="300" bgcolor="#ffffff">'.$line->taetigkeit.'</td>';
                  echo '<td width="40" bgcolor="#ffffff">'.$line->von.'</td>';
                  echo '<td width="40" bgcolor="#ffffff">'.$line->bis.'</td>';
                  echo '<td width="40" bgcolor="#ffffff">'.$line->pause.'</td>';
                  echo '<td width="40" bgcolor="#e7e7e7">'.$line->stunden.'</td>';
                  echo '</td>';
                  echo '</tr>';
                  $stunden[] = $line->stunden;
                  $counter++;
                  }

                  // Durchlaufe die Stunden
                  foreach ( $stunden as $key=>$val ) {
                  // Zerlege den Stunden-String
                  $tmp = explode(":",$val);
                  // Rechne die drei Einheiten in Sekunden um, und addiere
                  // die Sekunden in der variablen $timestamp
                  $timestamp += $tmp[2] + $tmp[1] * 60 + $tmp[0] * 3600;
                  }

                  // Nun hast Du die Sekunden, und kannst sie mit der date() funktion weiterverarbeiten
                  echo date("d H:i:s",$timestamp-3600); // GMT + 1 Stunde

                  ?>

                  Kommentar


                  • #10
                    Original geschrieben von mgoertz
                    sorry aber bei mir fängt er nach 24 wieder bei null an
                    ...
                    echo date("d H:i:s",$timestamp-3600); // GMT + 1 Stunde
                    neneneee - es wird weiter hochgezählt, wie Du jedoch richtig bemerkt (und korrigiert) hast, wurde die nächst höhere Einheit nicht ausgegeben.

                    TIP: verwende nicht endformatierte Zeitangaben, sondern versuche immer in Timestamps zu arbeiten (und diese auch in der DB zu speichern). Das erspart Dir die hin- und herkonvertiererei, und ist vor allem bei Zeit und Datumsberechnungen _immer_ hilfreich!

                    7-/anz

                    Kommentar


                    • #11
                      kann ich jetzt irgendwie per Abfrage hergehen und die Tage abfragen und das in 24 Stunden umrechnen und dann dazuzählen ?
                      Wenn ja, wie mache ich das ?

                      Kommentar


                      • #12
                        So, fehler: d = Day of the Month, was im $timestamp verwendet wird ist jedoch kein gültiger Timestamp per se.

                        $stunden = floor($timestamp/3600);
                        $minuten = floor(($timestamp - $stunden*3600)/60);
                        $sekunden = floor($timestamp-$stunden*3600-$minuten*60);

                        print $stunden;
                        print ":";
                        print $minuten;
                        print ":";
                        print $sekunden;

                        funkt.

                        7-/anz

                        Kommentar

                        Lädt...
                        X