waar moet nu WHERE
//identify last row
$count = mysql_num_rows(mysql_query("SELECT * FROM readings3")); //gives number of rows
$result = mysql_query("SELECT * FROM readings3 LIMIT ". ($count-1).", 1 ") ; //gives number of last row
if(!$result)
{
echo '{"status":"failure","error":"query mislukt"}';
exit;
}
Wie helpt me met plaatsen van WHERE time> current_date
Zie ook de syntax op deze pagina: https://dev.mysql.com/doc/refman/5.6/en/select.html
PS: De MySQL-functies zijn binnenkort uit PHP verwijderd. Verdiep je liever in de MySQLi- of PDO-functies..
Gewijzigd op 16/11/2015 20:09:16 door - Ariën -
Zou je nogmaals willen kijken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
// laat de browsers weten dat we JSON data terugsturen
header('Content-Type: application/json');
// Start MySQL Connection
/* Verbinding met de MySQL database maken.*/
$db = mysql_connect("******", "******","*****") or die (mysql_error());
/* Selecteer de database waarop de query gedraaid moet worden.*/
mysql_select_db("******", $db);
if (!$db) {
echo '{"status":"failure","error":"' . mysql_error() . '"}'; // geef ook foutmeldingen terug in JSON
exit;
}
//identify last row
$count = mysql_num_rows(mysql_query("SELECT * FROM readings3")); //gives number of rows
$result = mysql_query("SELECT * FROM readings3 LIMIT ". ($count-1).", 1 ") ; //gives number of last row
if(!$result)
{
echo '{"status":"failure","error":"query mislukt"}';
exit;
}
// omdat er maar één rij opgevraagd wordt is een IF logischer dan een WHILE
if($row = mysql_fetch_array($result)) {
echo '{"status":"success","sum":' . $row['sum'] . '}';
exit;
}
echo '{"status":"failure","error":"Geen informatie gevonden. (tabel readings3 is leeg?)"}';
?>
// laat de browsers weten dat we JSON data terugsturen
header('Content-Type: application/json');
// Start MySQL Connection
/* Verbinding met de MySQL database maken.*/
$db = mysql_connect("******", "******","*****") or die (mysql_error());
/* Selecteer de database waarop de query gedraaid moet worden.*/
mysql_select_db("******", $db);
if (!$db) {
echo '{"status":"failure","error":"' . mysql_error() . '"}'; // geef ook foutmeldingen terug in JSON
exit;
}
//identify last row
$count = mysql_num_rows(mysql_query("SELECT * FROM readings3")); //gives number of rows
$result = mysql_query("SELECT * FROM readings3 LIMIT ". ($count-1).", 1 ") ; //gives number of last row
if(!$result)
{
echo '{"status":"failure","error":"query mislukt"}';
exit;
}
// omdat er maar één rij opgevraagd wordt is een IF logischer dan een WHILE
if($row = mysql_fetch_array($result)) {
echo '{"status":"success","sum":' . $row['sum'] . '}';
exit;
}
echo '{"status":"failure","error":"Geen informatie gevonden. (tabel readings3 is leeg?)"}';
?>
Code (php)
1
2
3
2
3
<?php //kleurtjes tonen
$result = mysql_query("SELECT * FROM readings3 WHERE `time` > CURRENT_DATE() LIMIT ". ($count-1).", 1 ") ;
?>
$result = mysql_query("SELECT * FROM readings3 WHERE `time` > CURRENT_DATE() LIMIT ". ($count-1).", 1 ") ;
?>
Zorg ook voor goede foutafhandeling die aangeeft wat er fout gaat met mysql_error().
Nu komt er fout melding te staan Geen informatie gevonden. (tabel readings3 is leeg?) dat is die niet ook niet vandaag.
En controleer eerst of je query gelukt is, waarna je je data fetched.
Gewijzigd op 16/11/2015 20:50:54 door - Ariën -
//identify last row
$count = mysql_num_rows(mysql_query("SELECT * FROM readings3 WHERE `time` > CURRENT_DATE()")); //gives number of rows
$result = mysql_query("SELECT * FROM readings3 WHERE `time` > CURRENT_DATE() LIMIT ". ($count-1).", 1 ") ;
if(!$result)
{
echo '{"status":"failure","error":"query mislukt"}';
exit;
}
....
Zo werkt het wel, echter zit het ()probleem ergens anders. Heeft met het vullen van de tabel te maken .
Daar wordt de kolom al opgetelt, dus moet de teller dus resetten.
Bedankt voor de moeite
Gewijzigd op 16/11/2015 20:56:45 door arnaud feith
Qua structuur, kijk eerst of je query's lukken voordat je dingen gaat doen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
function jsonfy($status, $data){
return json_encode(['status' => $status, $data]);
}
// laat de browsers weten dat we JSON data terugsturen
header('Content-Type: application/json');
// Start MySQL Connection
/* Verbinding met de MySQL database maken.*/
$db = mysqli_connect("******", "******","*****");
if (!$db) {
echo jsonfy('failure', ['error' => mysqli_error()]);
} else {
if(mysqli_select_db("******", $db)){
if($rsl = mysqli_query("SELECT * FROM readings3")){
$count = mysqli_num_rows($rsl);
if($count > 1 ){
if($rsl = mysqli_query("SELECT * FROM readings3 LIMIT ". ($count-1).", 1 ")){
if($row = mysqli_fetch_array($rsl)){
echo jsonfy('success', ['sum' => $row['sum']]);
} else {
// whoops, empty row? How could this be!!
echo jsonfy('failure', ['error' => 'Geen informatie gevonden. (tabel readings3 is leeg?)']);
}
} else {
echo jsonfy('failure', ['error' => 'query mislukt']);
}
} else {
echo jsonfy('failure', ['error' => 'Tabel is leeg of heeft maar 1 row']);
}
}
} else {
// Could not select database.
}
}
?>
function jsonfy($status, $data){
return json_encode(['status' => $status, $data]);
}
// laat de browsers weten dat we JSON data terugsturen
header('Content-Type: application/json');
// Start MySQL Connection
/* Verbinding met de MySQL database maken.*/
$db = mysqli_connect("******", "******","*****");
if (!$db) {
echo jsonfy('failure', ['error' => mysqli_error()]);
} else {
if(mysqli_select_db("******", $db)){
if($rsl = mysqli_query("SELECT * FROM readings3")){
$count = mysqli_num_rows($rsl);
if($count > 1 ){
if($rsl = mysqli_query("SELECT * FROM readings3 LIMIT ". ($count-1).", 1 ")){
if($row = mysqli_fetch_array($rsl)){
echo jsonfy('success', ['sum' => $row['sum']]);
} else {
// whoops, empty row? How could this be!!
echo jsonfy('failure', ['error' => 'Geen informatie gevonden. (tabel readings3 is leeg?)']);
}
} else {
echo jsonfy('failure', ['error' => 'query mislukt']);
}
} else {
echo jsonfy('failure', ['error' => 'Tabel is leeg of heeft maar 1 row']);
}
}
} else {
// Could not select database.
}
}
?>
Deze code is ongetest, en aangezien ik niet werk met mysqli durf ik niet met zekerheid te zeggen of alle mysql functies gewoon een i erachter kunnen hebben ja of nee.
Maar waar het hier vooral om ging is dat je een bepaalde structuur aan moet houden en die en exit alleen gebruiken als het echt nodig is.
In jouw code staat er aan het begin bij jouw database verbinding, Als het niet lukt, stop script. Daaronder ga je pas kijken of $db niet leeg is, en zo wel een foutmelding proberen uit te printen terwijl het script allang al gestopt is.
Daarbij moet je uitkijken met JSON code hard-coded in jouw script te zetten, nergens voor nodig. Het maakt het onoverzichtelijk en je hoeft maar een te commatje vergeten en het werkt meteen niet meer. Ik heb er maar een simpel functie voor geschreven en dacht dat het hier mee zou werken, maar alles ongetest..
Gewijzigd op 16/11/2015 22:58:45 door Johan K
Daar heb ik al helemaal geen kaas van gegeten.
Komt wellicht nog.
Zoals ik hierboven al schreef werkt het script wel echter wil ik een aanpassing doen.
Maar dat moet dan wel voor dat het de database ingeslingerd wordt , zag ik aan de waarde.
Bedankt voor de snelle reacties.
Ik zou wel haast maken met de overstap naar MySQLi. Want in PHP 7 zullen de oude functies die jij gebruikt niet meer werken. Het zal nog enkele jaren zijn dat PHP 5.4 en PHP 5.5 (PHP6 bestaat niet) ondersteund worden, en dan is het echt over en uit met die functies.
Gewijzigd op 18/11/2015 19:05:39 door arnaud feith
Waarvoor?
Om te zien wat er veranderd hoe ik me dat een beetje kan aan leren ,nadruk beetje.
Want op zich zijn MySQL-functies zo herschreven naar MySQLi-functies. MySQL als opslag blijft verder gewoon MySQL, en daar verandert weinig aan.
In de meeste gevallen is het gewoon het toevoegen van een 'i' en het toevoegen van een connectie-parameter:
wordt:
Je kan ook de Object Oriented versie van MySQLI gebruiken. Maar voor beginners raad ik mijn manier aan als je het even snel wilt toepassen.
Gewijzigd op 18/11/2015 19:12:04 door - Ariën -
Met kopieren en plakken kom ik een eind.
Verder heb ik het niet echt veel nodig, maar moet wel werken.
Er zijn veel voorbeelden die staan allemaal met sql.
Zal er eens naar zoeken wat ze allemaal van plan zijn al 10jaar.
Je kan ook de oude functies gebruiken, maar bij een update van PHP naar versie 7 (die bijna een officiële release heeft) zullen die functies allemaal niet meer werken.
Eens bij hostingprovider vragen wat ze van plan zijn.