Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] In letzte Spalte Addieren (php)

Einklappen

Neue Werbung 2019

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

  • [Erledigt] In letzte Spalte Addieren (php)

    Hallo zusammen,

    Ich habe folgendes Problem:
    Ich würde gerne 3 Zellen einer Zeile in die letzte Zelle Addieren. Am besten ein Beispiel:

    Zelle1 Zelle2 Zelle3 Total
    1 2 3 6

    Das Total soll Jeweils berechnet werden. Meine Tabelle sieht zurzeit so aus:
    PHP-Code:
    <td>'.$row["nachname"].'</td>
                     <
    td>'.$row["datum"].'</td
             <
    td>'.$row["arbeitsbeginn"].'</td
             <
    td>'.$row["mittagspause"].'</td>
                     <
    td>'.$row["arbeitsende"].'</td>
             <
    td>'.$row["projekt"].'</td>
             <
    td>'.$row["abwesend"].'</td>
             <
    td>'(.$row["arbeitsende"]. - .$row["mittagspause"]. - .$row["arbeitsbeginn"])'</td
    hierbei sollte in der letzten Spalte jeweis das ergebnis stehen. nur funktioniert es so nicht :s

    von dieser neu generierten Spalte muss ich anschließend die Gesamt summe errechnen.
    Kann mir jemand helfen?


  • #2
    in die letzte Zelle Addieren
    PHP-Code:
    <td>'(.$row["arbeitsende"]. - .$row["mittagspause"]. - .$row["arbeitsbeginn"])'</td
    Falsche Syntax.

    PHP-Code:
    $row["arbeitsende"] + $row["mittagspause"] + $row["arbeitsbeginn"
    LG
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Hallo danke für deine Aufmerksamkeit. Habe jedoch ein kleines Problem.
      Was ich Probiert habe:
      PHP-Code:
      <td>$row["arbeitsende"] - $row["mittagspause"] - $row["arbeitsbeginn"]</td>
      <
      td>'$row["arbeitsende"] - $row["mittagspause"] - $row["arbeitsbeginn"]'</td
      Will mir beides kein Resultat und keinen Fehler liefern :s

      Kommentar


      • #4
        Ich dachte du willst addieren? Was jetzt?

        Versuch mal so ...
        PHP-Code:
        <td>'.$row["arbeitsende"] - $row["mittagspause"] - $row["arbeitsbeginn"].'</td
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Wenn ich dies enitrage:
          PHP-Code:
          <td>'.$row["arbeitsende"] - $row["mittagspause"] - $row["arbeitsbeginn"].'</td
          erscheint kein Datensatz mehr :s

          Ups da habe ich ein Fehler gemacht, subtrahieren

          Kommentar


          • #6
            Hi schnibli,

            Erst mal wäre interessant zu wissen, in welchem format die variablen daher kommen (int -> wäre ein timestamp in sekunden, datetime, string)?
            schau dir mal dazu folgende funktionen an (die sollten dich weiter bringen):
            -) http://php.net/manual/de/function.mktime.php (http://php.net/manual/de/function.date.php)
            -) http://php.net/manual/de/function.strtotime.php

            dann noch "mittagspause" in sekunden umrechnen => richtig rechnen und fertig is.
            [siehe meine signatur. ]

            mfG APH

            komisch: Kaum macht man`s richtig funktioniert`s a scho.

            Kommentar


            • #7
              Deine Signatur ist nicht schlecht.

              Ich benütze Decimalzahlen Also 1.25 1.5 1.75 Um Da dies bei uns gewohnt ist daher sollte das rechnen ja auch einfacher gehen

              Kommentar


              • #8
                Wenns vorher gepasst, hat dann ist dieser Block syntaktisch auch korrekt, auch wenn der String irgendwo aus der Mitte rausgerissen wurde, also vorne und hinten nicht beendet.

                PHP-Code:
                <td>'.$row["nachname"].'</td>
                <
                td>'.$row["datum"].'</td
                <
                td>'.$row["arbeitsbeginn"].'</td
                <
                td>'.$row["mittagspause"].'</td>
                <
                td>'.$row["arbeitsende"].'</td>
                <
                td>'.$row["projekt"].'</td>
                <
                td>'.$row["abwesend"].'</td>
                <
                td>'.$row["arbeitsende"] - $row["mittagspause"] - $row["arbeitsbeginn"].'</td
                Wenn in den Vars was falsches drinnen steht, dann debugge es, lass es dir ausgeben und aktiviere mal error_reporting, das hier ganz zu Beginn des Scriptes schreiben:

                PHP-Code:
                error_reporting(-1);
                ini_set('display_errors'1); 
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Zitat von hausl Beitrag anzeigen
                  [...]

                  Wenn in den Vars was falsches drinnen steht, dann debugge es, lass es dir ausgeben und aktiviere mal error_reporting, das hier ganz zu Beginn des Scriptes schreiben:

                  PHP-Code:
                  error_reporting(-1);
                  ini_set('display_errors'1); 
                  mach mal
                  PHP-Code:
                  var_dump($row); 

                  komisch: Kaum macht man`s richtig funktioniert`s a scho.

                  Kommentar


                  • #10
                    So.

                    Ausgegeben wird ganz oben. 0-9 (Aber die Tabelle verschwindet)


                    Ausgabe var_dump:
                    Code:
                    Es wurden 2 Datensätze gefunden. 0array(11) { ["id_monteur"]=> string(1) "3" ["datum"]=> string(10) "2015-01-13" ["arbeitsbeginn"]=> string(4) "0.00" ["arbeitsende"]=> string(4) "0.00" ["mittagspause"]=> string(4) "0.00" ["nachname"]=> string(8) "De Palma" ["projekt"]=> string(0) "" ["abwesend"]=> string(1) "1" ["morgenessen"]=> string(1) "0" ["mittagsessen"]=> string(1) "0" ["abendessen"]=> string(1) "0" } -9array(11) { ["id_monteur"]=> string(1) "1" ["datum"]=> string(10) "2015-01-13" ["arbeitsbeginn"]=> string(4) "8.00" ["arbeitsende"]=> string(5) "12.00" ["mittagspause"]=> string(4) "1.00" ["nachname"]=> string(9) "Schneider" ["projekt"]=> string(4) "1234" ["abwesend"]=> string(1) "0" ["morgenessen"]=> string(1) "0" ["mittagsessen"]=> string(1) "0" ["abendessen"]=> string(1) "0" }
                    Oben zeigt er an das 2 Datensätze gefunen wurden aber diese werden nicht angezeigt... miteriös

                    Die ganze ausgabe:
                    Es wurden 2 Datensätze gefunden. 0-9
                    Monteur Datum Arbeitsbeginn Mittagszeit Arbeitsende Tätigkeit abwesend Morgenessen Mitagessen Abendessen Total
                    Stunden Gesamt: 0 Abwesenheit Gesamt: 0
                    Morgenessen Gesamt: 0 Mittagessen Gesamt: 0 Abendessen Gesamt: 0


                    Und ausgabe ohne diese zeile:
                    Es wurden 2 Datensätze gefunden.
                    Monteur Datum Arbeitsbeginn Mittagszeit Arbeitsende Tätigkeit abwesend Morgenessen Mitagessen Abendessen Total
                    test 2015-01-13 0.00 0.00 0.00 1
                    test1 2015-01-13 8.00 1.00 12.00 1234 0
                    Stunden Gesamt: 0 Abwesenheit Gesamt: 0
                    Morgenessen Gesamt: 0 Mittagessen Gesamt: 0 Abendessen Gesamt: 0

                    Kommentar


                    • #11
                      in welchem seltsamen format hast du arbeitsbeginn und arbeitsende (in der db - nehm mal an, die ergebnisse kommen aus einer db, da du von datensätzen sprichst) gespeichert?

                      2 möglichkeiten:
                      1. du speicherst in der db als unix-timestamp (integer ->sekunden) ab, oder
                      2. beginn und ende als datetime in der db und beim/vorm rechnen die funktion strtotime() anwenden

                      komisch: Kaum macht man`s richtig funktioniert`s a scho.

                      Kommentar


                      • #12
                        Wie gesagt wir Arbeiten mit Decimalen. 10.2 (also 2 nachkomastellen).
                        5 Stunden und 15 Min sind z.b. 5.25
                        Dies ist normal bei uns. und zum rechnen sollte 12.00-8.00-1.00 auch einfacher sein oder ?

                        Kommentar


                        • #13
                          Das ist die Debugausgabe leserlich
                          Code:
                          Es wurden 2 Datensätze gefunden.
                          
                          0
                          
                          array(11) {
                              ["id_monteur"]=> string(1) "3"
                              ["datum"]=> string(10) "2015-01-13"
                              ["arbeitsbeginn"]=> string(4) "0.00"
                              ["arbeitsende"]=> string(4) "0.00"
                              ["mittagspause"]=> string(4) "0.00"
                              ["nachname"]=> string(8) "De Palma"
                              ["projekt"]=> string(0) ""
                              ["abwesend"]=> string(1) "1"
                              ["morgenessen"]=> string(1) "0"
                              ["mittagsessen"]=> string(1) "0"
                              ["abendessen"]=> string(1) "0"
                          }
                          
                          -9
                          
                          array(11) {
                              ["id_monteur"]=> string(1) "1"
                              ["datum"]=> string(10) "2015-01-13"
                              ["arbeitsbeginn"]=> string(4) "8.00"
                              ["arbeitsende"]=> string(5) "12.00"
                              ["mittagspause"]=> string(4) "1.00"
                              ["nachname"]=> string(9) "Schneider"
                              ["projekt"]=> string(4) "1234"
                              ["abwesend"]=> string(1) "0"
                              ["morgenessen"]=> string(1) "0"
                              ["mittagsessen"]=> string(1) "0"
                              ["abendessen"]=> string(1) "0"
                          }
                          PHP-Code:
                          /*
                              ["arbeitsbeginn"]=> string(4) "8.00"
                              ["arbeitsende"]=> string(5) "12.00"
                              ["mittagspause"]=> string(4) "1.00"
                          */
                          echo "12.00" "1.00" "8.00"// 3 
                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            Dies ist der ganze Code:
                            PHP-Code:
                            <?php
                            error_reporting
                            (-1); 
                            ini_set('display_errors'1);
                            include(
                            'db_connect_i.inc.php');
                            $Summe 0
                            $sql "
                            SELECT `id_monteur`, `datum`, `arbeitsbeginn`, `arbeitsende`, `mittagspause`, `id_monteur`, `nachname`, `projekt`, `abwesend`
                            FROM (
                                    SELECT `id_monteur`, `datum`, `arbeitsbeginn`, `arbeitsende`, `mittagspause`, `projekt`, `abwesend`
                                    FROM `stunden`
                                    ORDER BY `id_monteur` DESC
                                ) AS Sortiert
                                   JOIN `monteur` USING(`id_monteur`)
                                   ORDER BY `nachname`
                            "
                            ;
                                            
                                
                            $erg $db->query ($sql) or die ("Fehlermeldung=".$db->error);
                             
                            $row_cnt $erg->num_rows;

                             
                                
                            printf("Es wurden %d Datensätze gefunden.\n"$row_cnt);
                                
                            echo
                            '<table id="myTable" class="tablesorter" rules="all">';

                            echo
                            "<thead>";
                            echo
                            "<tr><th>Monteur</th><th>Datum</th><th>Arbeitsbeginn</th><th>Mittagszeit</th><th>Arbeitsende</th><th>Tätigkeit</th><th>abwesend</th><th>Morgenessen</th><th>Mitagessen</th><th>Abendessen</th><th>Total</th></tr>";
                            echo
                            "</thead> ";
                            echo
                            "<tbody>";

                            while((
                            $row $erg->fetch_assoc()) !== Null){
                            //$Summe = $Summe + $row[''];  
                              
                            echo 
                                  
                            '<tr> 
                            <td>'
                            .$row["nachname"].'</td> 
                            <td>'
                            .$row["datum"].'</td>  
                            <td>'
                            .$row["arbeitsbeginn"].'</td>  
                            <td>'
                            .$row["mittagspause"].'</td> 
                            <td>'
                            .$row["arbeitsende"].'</td> 
                            <td>'
                            .$row["projekt"].'</td> 
                            <td>'
                            .$row["abwesend"].'</td> 
                            <td>'
                            .$row["arbeitsende"] - $row["mittagspause"] - $row["arbeitsbeginn"].'</td>  
                            </tr>'

                                
                            // var_dump($row);  
                            }
                            echo
                            "</tbody>";
                            echo
                            "</table>";
                            echo 
                            "Stunden Gesamt: "$Summe,  "     Abwesenheit Gesamt: "$Summe"<br />";  
                            echo 
                            "Morgenessen Gesamt: "$Summe,  "     Mittagessen Gesamt: "$Summe,  "     Abendessen Gesamt: "$Summe;
                            ?>
                            Die Echos unten kommen noch aber hat keinen Sinn solange der rest nicht läuft
                            die Spalten Morgenessen, Mittagessen und Abendessen ebenfalls da ich die fehlerquelle möglichst tief Halten möchte.

                            Kommentar


                            • #15
                              Zitat von schnibli Beitrag anzeigen
                              Wie gesagt wir Arbeiten mit Decimalen. 10.2 (also 2 nachkomastellen).
                              5 Stunden und 15 Min sind z.b. 5.25
                              Dies ist normal bei uns. und zum rechnen sollte 12.00-8.00-1.00 auch einfacher sein oder ?
                              da muss ich dich leider enttäuschen:
                              denn so wie ich das sehe, sind beginn und ende uhrzeiten und mittagspause eine stundenangabe - das ist als würdest du äpfel mit birnen addieren, subtrahieren, was auch immer ...
                              so wird das nix - daher mein vorschlag: siehe mein posting bezüglich date/time funktionen.

                              kleiner tipp am rande: das var_dump gehört außerhalb der while-schleife.

                              mfG

                              komisch: Kaum macht man`s richtig funktioniert`s a scho.

                              Kommentar

                              Lädt...
                              X