zwei Fragen Formular und GET/POST

  • hmm ihr habt sicher recht mit was rechnet er genau.


    Ich werde am Nachmittag bzw. morgen mal genau schreiben bzw. zeigen was ich hier versuche zu machen :)

    Der Grund ist mir Html, css, php und Sql einwenig beizubringen und es zu lernen.


    Dazu mache ich eine Seite wo Mitarbeiter Ihre Arbeitszeiten eingeben. Mit einigen Angaben bzw. Fahrzeit, Mittag usw.

    Das speichere ich dann in einer SQL Datenbank.

    Genaueres folgt.

  • @Blickwindelkanone


    du hast ja in deinem Code den Wert fest vergeben


    $startzeit = strtotime("01:00:00");


    mit einer Stunde, der Code ist mir klar nur mein Wert ist ja nicht fix 1 Stunde sondern dieser Steht ja in der DB.

    Daher muss ich ja die Werte mal aus der DB holen dann soll er die 2 Rechnen.

    Wenn über SELECT mache kommen eben bei mir keine Halbenstunden raus sondern nur ganze Stunden.


    PHP
    <?php
    $sql = "SELECT XXX, XXX FROM XXX ORDER BY Datum";
    foreach ($pdo->query($sql) as $row){ 
    $Faan1 = $row['XXX'] - $row['XXX'];
    echo $Faan1;
    echo $row['Faan1']." <br /><hr />";
    }
    ?>

    Da kommt jetzt 1 Raus wäre aber eigentlich 0.5 oder 00:30:00.

    Und wenn ich das durch /60 mache kommmt irgendwas mit 0,166666 raus.

    Wenn ich das über strtotime mache kommt einfach als Ergebnis 0 raus ich denke weil ich keine Fixen werte habe.

    Hmm wie soll ich das nur besser Formulieren.

  • Mein Code war nur ein Beispiel, um dir den Sinn dahinter zu erklren.

    Denk dir einfach da andere Variabeln rein.


    Du holst die also die Zeiten aus der Tabelle, richtig?

    Dann musst du die Funktion strtotime() für die beidne Werte anwenden. Ansonsten kommt 0.0166667 raus.


    In deinem Fall


    Code
    $Faan1 = (strtotime($row['XXX']) - strtotime($row['XXX']))/60;

    Mehr dazu unter

    https://www.php.net/manual/de/function.strtotime.php


    Zum Test kannst du ja da mal feste Werte hinterlegen oder genaue Beispiele hier mal posten.

  • Super danke jetzt geht es in Minuten.


    Der Fehler war das ist das strtotime nicht auf beide Werte angewendet habe sondern auf das XXX alleine.


    Jetzt verstehe ich auch wie es funktionieren muss. Und ich einfach viel gezielter auch mit den Werten und was sie tun sollen Arbeiten muss.

  • Leider habe ich noch eine Frage.


    Dieser Code funtktioniert und macht was er soll:


    PHP
    <?php
    $sql = "SELECT Faab, ank FROM XXX ORDER BY Datum";
    foreach ($pdo->query($sql) as $row) {
    $Arb4 = (strtotime($row['ank']) - strtotime($row['Faab']))/60;
    echo $Arb4;
    echo $row['Arb4']." <br /><hr />";
    }
    ?>

    Denn wert Arb4 würde ich jetzt gerne in die DB schreiben lassen um Ihn dann weiter zu verarbeiten.


    Hab einen Wert mit Arb4 in der DB angelegt und dachte wenn ich nun mit.


    Code
    $sql = "INSERT INTO XXX (Arb4)
        VALUES ('Arb4')";

    schreibe dann kann ich auf den abgespeicherten Wert zugreifen.


    Nur leider macht er das nicht und schreibt nichts in die DB.

  • Code
    $sql = "INSERT INTO XXX (Arb4)
        VALUES ('Arb4')";


    Nur leider macht er das nicht und schreibt nichts in die DB.

    Daran wird es nicht liegen. Da unsere Glaskugeln auch Kurzarbeit haben, können wir leider nicht rein sehen, woran das liegen könnte. Da wirst du wohl oder übel mehr Quellcode zeigen müssen.

  • Mit dem Code von dir macht er wirklich nichts.

    Du musst dem Code auch sagen, was er damit machen soll.


    Code
     $sql = "INSERT INTO deinetabelle (wert1, wert2, wert3) VALUES (?,?,?)";
    $stmt= $pdo->prepare($sql);
    $stmt->execute([$wert1, $wert2, $wert3]);
  • Das man sieht was ich meine:Auswertung


    Das ist einfach für mich zum Üben dort sieht man die Stunden wenn jemand etwas einträgt die mir die Seite aus der DB ausließt.

    Dann kommen die Spalten mit den strtotime was nun ja funktioniert. und in der letzten Spalte sollte er mir alle Minuten zusammenzählen.

    ZB. erste Zeile wäre es dann 570 Min.

    Wenn ich es nach dem selben Prinzip wieder das strtotime mache nur mit + dann kommt einfach einer Riesen zahl raus.(179880000)

    Wenn ich die Werte direkt ohne strtotime mache sondern über den Wert einfach + mache kommt einfach 0 raus.

    Was ich mir denke klar ist weil in der DB ja die Werte ja nicht stehen.

  • Das wäre jetzt der Code von der Auswertung:


    Mein Ziel ist das Arb5 die Summe vom Faan1, Arb1, Arb2, Arb3 Arb4 macht und anzeigt.

  • m.scatello mir ist bewusst das dieser Code noch weit weg von Optimal und Gut ist.


    Ich habe mir das alles vom Html über CSS PHP und SQL nun in gut 3 Wochen alles selbst über Bücher Google oder Forum selbst beigebracht weil es mir Spass macht und ich es verstehen will. Darum ist das Aussehen oder der Code noch so weil ich gerne Probiere und es Verstehen möchte.

  • Ungetestet:

    Das dient jetzt nur zur Veranschaulichung, da musst du noch das ein oder andere anpassen.

  • das heißt ich kann mehrere Werte aus einer Tabelle ansprechen.

    Und dann aber auch verschieden Sachen mit den Werten machen und es muss nicht immer die selbe Aufgabe sein?

    Kann ich auch mehrere Tabelle auf einmal über SELECT ansprechen?

  • Ja, wenn du die Daten einmal ausgelesen hast, kannst du eigentlich alles damit machen.


    Kommt drauf an.

    Stehen diese logisch/inahltlich in einem Zusammenhang? Dann kannst du über Tabellen joinen (siehe Tabellen JOIN).

    Sind diese logisch bzw. inhaltlich nicht zusammenhängend, musst du mehrere Selects ausführen.

  • m.scatello das mit deinem Beispiel um es einfacher, lesbarer und übersichtlicher zu machen Funktioniert sehr gut.


    Und ich konnte da viel Lernen das ich es viel mehr zusammen packen kann.


    Nur löst es mein Problem nicht denn ich verstehe einfach nicht wie ich nun die Summen erstellen sollte.


    Als Bsp.: die 30 und 240 Minuten das ich die jetzt zusammen Zählen kann und in der letzten Spalte dann 270 stehen würde.


    Mir ist das Klar mit dem Strtotime aber das Ergebnis wird ja nicht in irgendeinem Wert ausgegeben auf diesen ich nun zugreifen könnte.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!