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"]."&deg;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";
}
Dit zou ik persoonlijk niet met een SQL-functie doen. Dit zou namelijk inhouden dat je de query elke keer inhoudelijk zou moeten aanpassen wanneer je besluit dat je je datums anders wilt formatteren (en dit kan misschien ook afhangen van wie de site bekijkt).

Je kunt de datum nog op elk moment voor het weergeven (aan de PHP-zijde) formatteren, dit zou ik niet al in SQL vastleggen. In zekere zin is het ook belangrijker dat je de gewenste informatie selecteert en ophaalt, en niet zozeer hoe deze er uitziet. Natuurlijk haal je de informatie in de meest ideale situatie op zoals je deze gaat gebruiken, maar dat hoeft niet per se. Maar in dat geval, als het uiterlijk wel kan verkeren, wil je waarschijnlijk niet op voorhand vastleggen hoe deze er (precies) uitziet, vooral niet als deze over tijd zou kunnen veranderen. Idealiter verander je dit voorkomen dan in een andere of hogere laag in je applicatie, en niet rechtstreeks in de query.

Er zijn legio mogelijkheden om datums en tijden te formatteren, zo is daar de DateTime klasse, maar je zou ook gewoon de date() functie kunnen gebruiken.

En sorry dat ik dit zo zeg, maar je bent al met een geavanceerd onderwerp als databases bezig, maar bent nog niet bekend met een (simpel(er)) onderwerp als datumformattering? :/
Thomas van den Heuvel op 26/05/2018 10:05:42

Dit zou ik persoonlijk niet met een SQL-functie doen. Dit zou namelijk inhouden dat je de query elke keer inhoudelijk zou moeten aanpassen wanneer je besluit dat je je datums anders wilt formatteren (en dit kan misschien ook afhangen van wie de site bekijkt).

Persoonlijk zou ik er wel voor kiezen. Je kan die formattering eventueel ook in een config-file opslaan, of als preference voor gebruikers. Of je het bij MySQL of PHP legt zal naar mijn idee niet uitmaken. Het is net wat je persoonlijk lekkerder vindt werken.
Ik probeer te leren waarvan ik mee bezig ben, ik waardeer jullie reacties. Ben zelf een beginner met PHP en MYSQL.
De Datetime kolom uit de databse gebruik ik ook voor diverse grafieken, ik kan ervoor kiezen om aparte kolommen te maken in de tabel en deze dan gebruiken in de SELECT queries voor de html-tabellen in de website.

Dit project is voor mij een groot test project, ik probeer ook nog om Wordpress te gebruiken, maar zoals jullie wel zullen weten, is direct php-en niet mogelijk, en maak ik dus ook nog functies aan in het functions.php bestand van Wordpress om dan met shortcodes de boel te tonen op de website.
- Ariën - op 26/05/2018 10:21:27
Het is net wat je persoonlijk lekkerder vindt werken.

Ja en nee, het betreft presentatie van data, dan zou je ook verwachten dat dat, net zoals het escapen van output enzo, in de presentatie-laag (of i.i.g. vlak voor weergave) wordt geregeld.

Je kunt het inderdaad op meerdere plaatsen regelen, maar het "finalizen" van output gebeurt wat mij betreft niet al in de database.

EDIT Dit is in zekere zin ook de "beste" meest logische plaats, zodat, als je dit wilt wijzingen niet naar template > php code > databaselaag > query een formattering hoeft terug te zoeken maar dat dit direct staat op (of vlakbij) de plek waar je dit (ook zou) verwacht(en).

Regel het waar je wilt, maar zorg dat je hier consistent in bent en argumenten hebt voor de gekozen aanpak.

Reageren