Die Frage lautet eher: Was rechnet er?
Je nach Nutzen, könnte man es evtl. auch anders lösen?
Die Frage lautet eher: Was rechnet er?
Je nach Nutzen, könnte man es evtl. auch anders lösen?
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.
OK, kannst gerne mal deinen Ansatz zeigen.
Mit den oben genannten Infos würde ich aber alle Prüfungen und Berechnungen vor der Eingabe in die Datenbank abfackeln und dann erst auf die Datenbank schreiben.
@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
$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
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
$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.
schreibe dann kann ich auf den abgespeicherten Wert zugreifen.
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.
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.
Zeig mal bitte den Code. Das kommt mir alles sehr spanisch vor jetzt, wie du die Werte ausliest und dann addierst.
Dein generierter HTML-Code ist kaputt: https://validator.w3.org/nu/?d…ce.at%2Fneuphp%2FAusw.php
m.scatello danke für den Hinweis die Fehler wurden Behoben.
Das wäre jetzt der Code von der Auswertung:
<!doctype html>
<html lang="de">
<head>
<title>Auswertung Mitarbeiter</title>
<!-- <meta name="Mitarbeiter" content="width=device-width, initial-scale=1.0"> -->
<meta charset="UTF-8">
<link href="CSS/style4.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<?php include("DB.php") ?>
<div id="Mitarbeiter">
<h1>Auswertung Mitarbeiter</h1>
</div>
<div id="X0">
<br>
<div id=Mit1>Mitarbeiter: </div><br>
<table id="X2">
<tr>
<th class="X3">Datum:</th>
<th class="X3">Ort:</th>
<th class="X3">Fahrz.:</th>
<th class="X3">Arbeitsz.:</th>
<th class="X3">Mittagsp:</th>
<th class="X3">Arbeitsz.:</th>
<th class="X3">Fahrz.:</th>
<th class="X3">Ank. Fir:</th>
<th class="X3">SUK:</th>
<th class="X3">Faz.:</th>
<th class="X3">AM:</th>
<th class="X3">MA:</th>
<th class="X3">AF:</th>
<th class="X3">FA:</th>
<th class="X3">SU:</th>
</tr>
<tr>
<th class="X1"><?php
$pdo = new PDO('mysql:host=XXXX;dbname=XXX', 'XXXX', 'XXXX');
$sql = "SELECT Datum FROM KaupaChristoph ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
echo $row['Datum']." <br /><hr />";
}
?></th>
<th class="X1"><?php
$sql = "SELECT Ort FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
echo $row['Ort']." <br /><hr />";
}
?></th>
<th class="X1"><?php
$sql = "SELECT Faan FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
echo $row['Faan']." <br /><hr />";
}
?></th>
<th class="X1"><?php
$sql = "SELECT Arbeitszeit1 FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
echo $row['Arbeitszeit1']." <br /><hr />";
}
?></th>
<th class="X1"><?php
$sql = "SELECT Mittag FROM KaupaChristoph ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
echo $row['Mittag']." <br /><hr />";
}
?></th>
<th class="X1"><?php
$sql = "SELECT Arbeitszeit2 FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
echo $row['Arbeitszeit2']." <br /><hr />";
}
?></th>
<th class="X1"><?php
$sql = "SELECT Faab FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
echo $row['Faab']." <br /><hr />";
}
?></th>
<th class="X1"><?php
$sql = "SELECT ank FROM KaupaChristoph ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
echo $row['ank']." <br /><hr />";
}
?></th>
<th class="X1"><?php
$sql = "SELECT Sonder FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
echo $row['Sonder']." <br /><hr />";
}
?></th>
<th class="X1">
<?php
$sql = "SELECT Faan, Arbeitszeit1 FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
$Faan1 = (strtotime($row['Arbeitszeit1']) - strtotime($row['Faan']))/60;
echo $Faan1;
echo $row['Faan1']." <br /><hr />";
}
?>
</th>
<th class="X1">
<?php
$sql = "SELECT Mittag, Arbeitszeit1 FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
$Arb1 = (strtotime($row['Mittag']) - strtotime($row['Arbeitszeit1']))/60;
echo $Arb1;
echo $row['Arb1']." <br /><hr />";
}
?>
</th>
<th class="X1">
<?php
$sql = "SELECT Mittag, Arbeitszeit2 FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
$Arb2 = (strtotime($row['Arbeitszeit2']) - strtotime($row['Mittag']))/60;
echo $Arb2;
echo $row['Arb2']." <br /><hr />";
}
?>
</th>
<th class="X1">
<?php
$sql = "SELECT Faab, Arbeitszeit2 FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
$Arb3 = (strtotime($row['Faab']) - strtotime($row['Arbeitszeit2']))/60;
echo $Arb3;
echo $row['Arb3']." <br /><hr />";
}
?>
</th>
<th class="X1">
<?php
$sql = "SELECT Faab, ank FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
$Arb4 = (strtotime($row['ank']) - strtotime($row['Faab']))/60;
echo $Arb4;
echo $row['Arb4']." <br /><hr />";
}
?>
</th>
<th class="X1">
<?php
$sql = "SELECT Arb4, Arb3 FROM YYY ORDER BY Datum";
foreach ($pdo->query($sql) as $row) {
$Arb5 = $row['Arb4'] + $row['Arb3'];
echo $Arb5;
echo $row['Arb5']." <br /><hr />";
}
?>
</th>
</table>
</div>
</body>
</html>
Alles anzeigen
Mein Ziel ist das Arb5 die Summe vom Faan1, Arb1, Arb2, Arb3 Arb4 macht und anzeigt.
Was für ein grausamer Quellcode! Was sollen die ganzen Select's und Schleifen? Das kann man mit einem Select und einer Schleife erledigen
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:
$sql = "SELECT
`Datum`,
`Ort`,
`Arbeitszeit1`,
`Arbeitszeit2`,
`Mittag`,
`Faab`,
`ank`,
`Sonder`,
`Faan`
FROM
`KaupaChristoph`
ORDER BY
`Datum`";
foreach ($pdo->query($sql) as $row)
{
echo "<tr>
<td>" . $row['Datum'] . "</td>
<td>" . $row['Faan'] . "</td>
<td>" . $row['Arbeitszeit1'] . "</td>
<td>" . $row['Mittag'] . "</td>
<td>" . $row['Arbeitszeit2'] . "</td>
<td>" . $row['Faab'] . "</td>
<td>" . $row['ank'] . "</td>
<td>" . ((strtotime($row['Arbeitszeit1']) - strtotime($row['Faan']))/60) . "</td>
<td>" . ((strtotime($row['Mittag']) - strtotime($row['Arbeitszeit1']))/60) . "</td>
<td>" . ((strtotime($row['Arbeitszeit2']) - strtotime($row['Mittag']))/60) . "</td>
<td>" . ((strtotime($row['Faab']) - strtotime($row['Arbeitszeit2']))/60) . "</td>
<td>" . ((strtotime($row['ank']) - strtotime($row['Faab']))/60) . "</td>
</tr>\n";
}
Alles anzeigen
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.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.