Database uitlezen en weergeven op website, met nieuwe commando's?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roland Janzzen

Roland Janzzen

25/09/2016 14:05:43
Quote Anchor link
Hallo,

Ik ben sinds lange tijd weer bezig met een MYSQL-database. Deze is gevuld met ongeveer 850 rijen aan data in drie kolommen (ID, Datum, Route). Qua omvang valt dat mee.

Wat is het probleem... De techniek staat niet stil en MySQL en PHP hebben nogal wat veranderingen gekregen in de loop der tijd. Zóveel dat de voorbeeld-script die ik op internet vind, niet meer werken. Commando's zijn deprecated of worden verwijderd in de eerst volgende versie van MySQL/PHP. Kortom; HELP!

Wat wil ik doen...
Ik heb dus ruim 850 rijen met data, zoiets als:

ID Datum Route
01 2016-03-12 41.3
02 2016-03-13 41.4
03 2016-03-14 41.5

Wat wil ik doen... Met een simpel scriptje wil ik een route invoeren.
Dus: 41.5.

Dan wil ik de database doorzoeken met als uitkomst:
- Hoe vaak komt die route in de database voor
- Wat zijn de laatste 5 datums waarom deze route gereden is

- En, ik wil ook op datum kunnen zoeken, dus welke route is er gereden op 2016-03-12

Wie kan me hiermee helpen?

Grafisch hoeft het er echt niet mooi uit te zien, gewoon een witte HTML-pagina is genoeg.
Ik krijg het alleen niet werken omdat ik constant met scripts bezig ben met verouderde commando's.
Een website met nieuwe script of voorbeelden, kan ik niet vinden.

Kan iemand me hiermee asjeblieft helpen?
Ik heb eindelijk de database gevuld met data van 5 jaar, alleen dat uitlezen (het belangrijkste in feite), dát lukt me dan weer niet...

Roland.

Toevoeging op 25/09/2016 20:01:17:

Zelfs de simpelste dingen werken niet... Iemand een idee???

Quote:
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
<?php

include ("connect.php");

 
if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {
 
  $sQuery = "SELECT Name FROM Routes WHERE ID = '" . mysql_real_escape_string ( $_POST[ 'q' ] ) . "'"; // naamvanjetabel vervangen door de naam van je tabel. D'oh
  $rResult = mysql_query ( $sQuery );
 
  if ( mysql_num_rows ( $rResult ) > 0 ) {
 
    $aResult = mysql_fetch_assoc ( $rResult );
    echo $aResult[ 'Route' ];
 
  }
 
}
else {
 
  echo '<form method="post" action="">';
  echo '<input type="text" name="q" />';
  echo '<input type="submit" name="submit" value="Zoek op!" />';
  echo '</form>';
 
}

 
?>
Gewijzigd op 25/09/2016 14:07:10 door Roland Janzzen
 
PHP hulp

PHP hulp

24/11/2024 01:37:06
 
- SanThe -

- SanThe -

25/09/2016 20:04:47
Quote Anchor link
Je echoot een Route terwijl je een Name ophaalt.
Bouw foutafhandeling in.
 
Johan de wit

johan de wit

25/09/2016 20:13:42
Quote Anchor link
Dat klopt velen tutorial zijn echt aan het worden ik heb ook moeite om een formulier te maken.
 
Roland Janzzen

Roland Janzzen

25/09/2016 21:05:40
Quote Anchor link
Bouw foutafhandeling in... zelf dát lukt me niet meer.
Terwijl ik best wat wist te maken in het verleden.
Nu blijft het continu een witte pagina zonder output...
 
Koen Hollander

Koen Hollander

25/09/2016 21:43:23
Quote Anchor link
Ik heb even een blik geworpen op je script.

Het is enorm leuk dat je aan de hand van handleidingen een applicatie wilt bouwen en je geeft ook terecht aan dat sommige uiterst gedateerd zijn. Daarom help ik je even een handje met dit script. Op regel 3 heb omvat je de de pagina connect.php met de functie include.

Echter wil ik je weg graag wijzen op dit citaat van php.net
Quote:
The include construct will emit a warning if it cannot find a file; this is different behavior from require, which will emit a fatal error.
waarin eigenlijk staat.

Als het gevraagde document niet bestaat gaat het script door, wel met een waarschuwing waar je de pagina aanroept. Maar met de "require" functie gaat het script niet door en stopt het keurig zodat de gebruikers niet vast zitten aan een half werkend script e.d.

Dan maak ik nu graag een sprong naar regel 14, hierin toon je op de pagina de inhoud van de array zoekend op key "Route" terwijl je in de query duidelijk een andere op haalt, de query haalt uitsluitend "Name" op. Zodoende zal Route ook niet in de array zitten.

Tot slot geef ik je graag wat leesvoer mee, waar je nog wel wat van kan leren :)

http://php.net/
http://php.net/manual/en/book.mysqli.php

De eerste is een uitstekend naslagwerk over PHP en de tweede is, in het zelfde naslagwerk een groot hoofdstuk over MySQLi wat nu een aardige standaard is. Mocht je over willen gaan naar een uitgebreidere engine is het ook leuk om te kijken naar de volgende.
http://php.net/manual/en/class.pdo.php

Veel succes!
 
Roland Janzzen

Roland Janzzen

26/09/2016 12:39:05
Quote Anchor link
Dank voor je reactie Koen, ik ga eens kijken.
De moed is me behoorlijk in de schoenen gezakt, ik ga het volgens mij niet vinden wat ik zoek.

De fout in het voorbeeldscript is er al uitgehaald en was al eerder opgemerkt. Desondanks krijg ik het niet voor elkaar. Of ik krijg foutmeldingen óf de pagina blijft blanco zonder enige output.

De meeste voorbeelden zijn alleen voor de oude situatie en nieuwe voorbeelden zijn nauwelijks te vinden en als ik ze vind, dan snap ik er geen hout van helaas.

Maar, in elk geval bedankt.

Roland.
 
- Ariën  -
Beheerder

- Ariën -

26/09/2016 12:41:26
Quote Anchor link
Een mooie tutorial over foutafhandeling vind je hier:

https://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/

Let er wel even op dat je dit wel naar MySQLi moet inbouwen, als je MySQLi gebruikt.
Nog mooier vind ik om een eigen class te maken die de MySQLi class extends, waarmee je direct de query-method overruled met ingebouwde foutafhandeling, met exceptions.

maar dat is wel een bruggetje te ver als je nog nooit met classes hebt gewerkt.
Gewijzigd op 26/09/2016 12:42:33 door - Ariën -
 



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.