waar moet nu WHERE

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Arnaud feith

arnaud feith

16/11/2015 20:06:08
Quote Anchor link
Dit stuk hieronder werkt. Ik wil echter het result alleen van vandaag (WHERE TIME >CURRENT_DATE)

//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
 
PHP hulp

PHP hulp

22/12/2024 15:50:27
 
- Ariën  -
Beheerder

- Ariën -

16/11/2015 20:08:04
Quote Anchor link
Na je definiering van de tabel in FROM.
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 -
 
Arnaud feith

arnaud feith

16/11/2015 20:17:28
Quote Anchor link
Dankje, maar dat werkt niet dwz zoals ik dat deed.
Zou je nogmaals willen kijken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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?)"}';
?>
 
- Ariën  -
Beheerder

- Ariën -

16/11/2015 20:29:18
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php //kleurtjes tonen
$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().
 
Arnaud feith

arnaud feith

16/11/2015 20:43:20
Quote Anchor link
Nu komt er fout melding te staan Geen informatie gevonden. (tabel readings3 is leeg?) dat is die niet ook niet vandaag.
 
- Ariën  -
Beheerder

- Ariën -

16/11/2015 20:47:26
Quote Anchor link
Hmm... zorg eerst een dat je van die onnodige exit's af bent.
En controleer eerst of je query gelukt is, waarna je je data fetched.
Gewijzigd op 16/11/2015 20:50:54 door - Ariën -
 
Arnaud feith

arnaud feith

16/11/2015 20:54:44
Quote Anchor link
.....
//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
 
Johan K

Johan K

16/11/2015 22:46:11
Quote Anchor link
Allereerst, Ariën zegt niet voor niets dat je moet gaan kijken naar PDO of mysqli. Omdat mysql_connect, mysql_query, mysql_etc functies verwijdert gaan worden uit PHP. Aangezien je daar nog niet op heb gereageerd attendeer ik je hier nog eens op.

Qua structuur, kijk eerst of je query's lukken voordat je dingen gaat doen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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.
        }
    }


?>


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
 
Arnaud feith

arnaud feith

17/11/2015 17:44:41
Quote Anchor link
Bedankt voor het onderstrepen van PDO en MYSQLI.
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.
 
- Ariën  -
Beheerder

- Ariën -

17/11/2015 18:01:12
Quote Anchor link
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.
 
Arnaud feith

arnaud feith

18/11/2015 18:39:53
Quote Anchor link
Ander vraagje, zijn er misschien conversie programma's? (vraag zonder eerst google te hebben geraadpleegd) Ja dus net gevonden eens zien wat er gebeurd.
Gewijzigd op 18/11/2015 19:05:39 door arnaud feith
 
- Ariën  -
Beheerder

- Ariën -

18/11/2015 18:51:39
Quote Anchor link
Waarvoor?
 
Arnaud feith

arnaud feith

18/11/2015 19:06:45
Quote Anchor link
Om te zien wat er veranderd hoe ik me dat een beetje kan aan leren ,nadruk beetje.
 
- Ariën  -
Beheerder

- Ariën -

18/11/2015 19:08:56
Quote Anchor link
Wat wil je converteren?
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_query("SELECT... FROM... WHERE....");

wordt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysqli_query($con, "SELECT... FROM... WHERE....");


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 -
 
Arnaud feith

arnaud feith

18/11/2015 19:16:05
Quote Anchor link
Okee, ik ben bezig met een arduino deze leest kwh meters uit en schrijft naar database.
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.
 
- Ariën  -
Beheerder

- Ariën -

18/11/2015 19:21:10
Quote Anchor link
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.
 
Arnaud feith

arnaud feith

18/11/2015 19:26:56
Quote Anchor link
Eens bij hostingprovider vragen wat ze van plan zijn.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.