Door
Jan Westdijk
op 25-05-2018 20:46
gewijzigd op 25-05-2018 22:36
3.936 views
Ik wil zowel de max.Temp als de max.Vocht uit de tabel "weerdata" halen met het tijdstip, ik heb nu 2 sql statements achter elkaar gezet.
Maar de Query wordt niet uitgevoerd, wat doe ik niet goed? Ik krijg de tekst "Er zijn geen resultaten gevonden"
Onderstaand de code:
$sql = "SELECT Temp, Datumentijd FROM weerdata ORDER BY Temp DESC LIMIT 1; SELECT Vocht, Datumentijd FROM weerdata ORDER BY Vocht DESC LIMIT 1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "<table><tr><th></th><th></th><th>Datum en tijd</th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>Temperatuur</td><td>".$row["Temp"]."°C</td><td>".$row["Datumentijd"].</td></tr>";
echo "<tr><td>Vochtigheid</td><td>".$row["Vocht"]."%</td><td>".$row["Datumentijd"]."</td></tr>";
}
echo "</table>";
} else {
echo "Er zijn geen resultaten gevonden";
}
Selecteer de laatste datum uit de tabel
$sql = "SELECT * FROM weerdata ORDER BY Datumtijd DESC LIMIT 1”;
Daarna kun je de velden uit de tabel $row[“Temp”] en $row[“Vocht”] tonen, gebruiken.
Vergeef mijn “ gebruik hier jouw apostrofe-teken.
Je kunt niet twee statements tegelijk uitvoeren. Maak er dus gewoon 2 losse statements van:
$sql_temp = "SELECT Temp, Datumentijd FROM weerdata ORDER BY Temp DESC LIMIT 1";
$sql_vocht = "SELECT Vocht, Datumentijd FROM weerdata ORDER BY Vocht DESC LIMIT 1";
$result_temp = $conn->query($sql_temp);
$result_vocht = $conn->query($sql_vocht);
//enz, t/m $row_temp en $row_vocht en die dan in de juiste <tr> gebruiken
Die while(...) heeft daar overigens geen zin omdat je toch een limit 1 hebt gedaan. Er is dus altijd maar 1 row (en je hebt al gecontroleerd of er überhaupt rows zijn).
Kan je jouw code tussen code-tags zetten?
Zie ook de Veelgestelde Vragen.
[size=xsmall]Toevoeging op 25/05/2018 22:39:47:[/size]
Een query geeft enkel een resource en als het fout gaat een false-boolean, en geen array met data. Je zult $result_temp->fetch_assoc() moeten gebruiken.
Ik wil een tabel maken met in iedere <tr> een andere weerdata, dus een <tr> met de max. Temp en tijdstip.
Een <tr> met max. Vocht en tijdstip.
Een <tr> met max. Luchtdruk en tijdstip, enz...
Volgens mij is het de bedoeling om de max. temp + tijdstip boven water te krijgen, en de max. vocht + tijdstip. Die hoeven niet perse op hetzelfde tijdstip te vallen (lijkt me). Je kunt dat wel in een enkel statement knutselen (omdat het kan, niet omdat het handig is), maar het lijkt me makkelijker om er gewoon 2 aparte dingen van te maken.
echo "<table><tr><th></th><th></th><th>Datum en tijd</th></tr>";
$sql_temp = "SELECT Temp, Datumentijd FROM weerdata ORDER BY Temp DESC LIMIT 1";
$result_temp = $conn->query($sql_temp);
if ($result_temp->num_rows > 0) {
$row_temp = $result_temp->fetch_assoc();
echo "<tr><td>Temperatuur</td><td>".$row_temp["Temp"]."°C</td><td>".$row_temp["Datumentijd"]."</td></tr>";
}
$sql_vocht = "SELECT Vocht, Datumentijd FROM weerdata ORDER BY Vocht DESC LIMIT 1";
$result_vocht = $conn->query($sql_vocht);
if ($result_vocht->num_rows > 0) {
$row_vocht = $result_vocht->fetch_assoc();
echo "<tr><td>Vochtigheid</td><td>".$row_vocht["Vocht"]."%</td><td>".$row_vocht["Datumentijd"]."</td></tr>";
}
echo "</table>";
Bedankt Rob, dit klopt wat je zegt. Dit voorbeeld werkt en kan ik gebruiken ook voor de andere weerdata zoals: Windsnelheid en neerslag.
Dan heb ik nog een vraag, de Datumentijd wordt nu weergegeven als: YYYY-MM-DD hh:mm:ss
In de database tabel heeft de kolom "Datumentijd" de waarde "datetime"
Is het mogelijk om bijvoorbeeld alleen MM-DD eruit te halen als datum bij een max. temp.