waardes uit DB in een JS popup box
ik heb alleen geen idee hoe ik dit moet doen.
ik dacht zelf aan iets met php erbij en dan de strings die ik krijg via de popupbox weergeven maar ik weet niet hoe ik moet beginnen.
als iemand me er mee kan helpen of tenminste een aanwijzing geven waarmee ik aan de slag kan.
bedankt alvast!
http://www.phphulp.nl/php/forum/topic/variabele-in-functie/81977/last/
Als je "mooier" wilt doen (en wat ingewikkelder) kan je kijken naar AJAX: http://www.w3schools.com/ajax/default.asp
Als je het makkelijk wilt doen kijk dan even naar dit topic: Als je "mooier" wilt doen (en wat ingewikkelder) kan je kijken naar AJAX: http://www.w3schools.com/ajax/default.asp
ik heb even gekeken naar beide manieren en de manier van
http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_database
lijkt me wel mooi alleen heb ik nooit met ajax gewerkt en weet ik dus niet hoe ik het ajax gedeelte moet veranderen om de desbetreffende values uit het tabel te krijgen
kan je mij hier misschien mee helpen?
Gebruik je JQuery?
ja dit gebruik ikk voor het dynamisch aanmaken van de textboxjes waar ik menu;s in moet vullen.. volgens mij was jij die me daarmee ook heel goed mee geholpen had :)
Maar ik vraag het omdat het dan een stuk eenvoudiger wordt om AJAX te gebruiken en ik er dan tenminste ook verstand van heb :-)
Maar om bij het begin te beginnen, wat is het precies dat je wilt laten zien. Hoe haal je dat uit je database en hoe ziet de data eruit (is het een veld, meerdere velden, HTML etc).
SELECT * FROM `menu` WHERE `id`, `titel`, `description`, `prijs`
dus er zit in table menu de ID de titel de description en de prijs.
ik wil nu een knop maken waarbij ik het menu in een popup box te zien krijg als ik op het reserveerpagina zit en een menu wil uitkiezen.. en daar moet ik de titel, description en de prijs te zien krijgen..
ik heb overigens ook een aparte pagina waar een overzicht van het menu al te zien is ( deze wordt al uit de db gehaald maar dit gebeurt met php ) dit heet menu.php...
ik heb nog voor het knop gedeelte wat ik nu wil maken helemaal niks geschreven omdat ik niet weet hoe ik dit moet aanpakken i.c.m. ajax/javascript
Spreek je over een echte popup (aparte window; wordt vaak geblokkeerd)?
Of wil je iets wat "op pupt", maar binnen je window?
(zoals je bv. hier ziet als je in het date veld klikt http://jqueryui.com/demos/datepicker/ )
Bij een echte popup, wordt een nieuw venster geopend; dat venster verwacht trouwens een url.
Dus aan ajax heb je hier niet veel.
In het tweede geval is ajax wel de juiste optie
Alleen je allerlaatste stap is iets anders, de output wegschrijven. Normaal zou je dat in een HTML formaat doen met echo etc. Nu kan dat ook, maar ik zou aanraden het in een JSON formaat te doen. JSON is niets anders dan een standaard formaat waarin data (inclusief arrays en objecten) kan worden uitgewisseld tussen verschillende aplicaties. Met php kan je dat heel simpel doen met de functie json_encode(). Als je dus je gegevens uit de database in een array hebt, schrijf je die array simpel weg met:
Als je het hele script hebt, run het gewoon eens in je browser (met een id als GET parameter) en zie wat je output op het scherm wordt.
de 2e link die je gaf zoals de datepicker kan ook... maar dan wil ik een button ipv een textvak waar als ik op klik de gegevens uit de DB uit het menu table weergegeven worden
Toevoeging op 13/01/2012 13:10:44:
Erwin H op 13/01/2012 13:01:08:
De eerste stap is dan een redelijk simpele, je hebt namelijk een php pagina nodig die je met AJAX kan aanroepen om een menu item op te vragen. Hierbij kan je alles op de normale manier doen, dus je geeft het id van het menu mee in een GET parameter, daarmee haal je het juiste menu op uit je database en het menu zet je in een associatieve array. Volgens mij hoef ik daar niet veel verder op in te gaan.
Alleen je allerlaatste stap is iets anders, de output wegschrijven. Normaal zou je dat in een HTML formaat doen met echo etc. Nu kan dat ook, maar ik zou aanraden het in een JSON formaat te doen. JSON is niets anders dan een standaard formaat waarin data (inclusief arrays en objecten) kan worden uitgewisseld tussen verschillende aplicaties. Met php kan je dat heel simpel doen met de functie json_encode(). Als je dus je gegevens uit de database in een array hebt, schrijf je die array simpel weg met:
Als je het hele script hebt, run het gewoon eens in je browser (met een id als GET parameter) en zie wat je output op het scherm wordt.
Alleen je allerlaatste stap is iets anders, de output wegschrijven. Normaal zou je dat in een HTML formaat doen met echo etc. Nu kan dat ook, maar ik zou aanraden het in een JSON formaat te doen. JSON is niets anders dan een standaard formaat waarin data (inclusief arrays en objecten) kan worden uitgewisseld tussen verschillende aplicaties. Met php kan je dat heel simpel doen met de functie json_encode(). Als je dus je gegevens uit de database in een array hebt, schrijf je die array simpel weg met:
Als je het hele script hebt, run het gewoon eens in je browser (met een id als GET parameter) en zie wat je output op het scherm wordt.
krijg ik hiermee alle menu's tegelijk uit de db te zien te krijgen? dus als een soort van menukaart..
Net wat jij wilt. Ik heb geloof ik geen SQL statement gegeven....
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
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
<?php
include ("connect.php");
if (isset($_POST['menuoverzicht'])) {
$sql_get_menu = "SELECT *
FROM menu";
# Check of query is gelukt
if (($result_get_menu = mysql_query($sql_get_menu)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_menu,mysql_error(),'Fout met het ophalen van het menu.');
}
elseif (mysql_num_rows($result_get_menu) == 0)
{
echo 'Er is geen menu';
}
else
{
$row_menu = mysql_fetch_assoc($result_get_menu);
echo json_encode($row_menu);
?>
include ("connect.php");
if (isset($_POST['menuoverzicht'])) {
$sql_get_menu = "SELECT *
FROM menu";
# Check of query is gelukt
if (($result_get_menu = mysql_query($sql_get_menu)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_menu,mysql_error(),'Fout met het ophalen van het menu.');
}
elseif (mysql_num_rows($result_get_menu) == 0)
{
echo 'Er is geen menu';
}
else
{
$row_menu = mysql_fetch_assoc($result_get_menu);
echo json_encode($row_menu);
?>
Gewijzigd op 13/01/2012 13:51:36 door Reshad F
Je checkt in het begin of er op een knop is geklikt. Dat is niet nodig als je het met een AJAX call doet. De klik op de knop wordt dan namelijk al in javascript afgehandeld en hoeft dus niet in de POST terecht te komen. Kan wel, maar dat zou overbodig zijn. Die if kan je dus weglaten.
Eventueel kan je wel een GET parameter meegeven (actie=get_menu bijvoorbeeld) zodat je op een later tijdstip meerdere acties in hetzelfde script kan afhandelen. Dat is echter aan jou.
Tweede opmerking is over het wegschrijven van je resultaten. Als je het hele menu wilt laten zien moet je dus ook alle rijen uit je query resultaat halen. Deze kan je vervolgens echter NIET een voor een wegschrijven, maar zal je allemaal tegelijkertijd moeten doen. Dat wegschrijven zal dus zoiets moeten worden:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$totaal_menu = array();
while ( $row_menu = mysql_fetch_assoc($result_get_menu) ){
$totaal_menu[] = $row_menu
}
echo json_encode($row_menu);
?>
$totaal_menu = array();
while ( $row_menu = mysql_fetch_assoc($result_get_menu) ){
$totaal_menu[] = $row_menu
}
echo json_encode($row_menu);
?>
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
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
<?php
include ("connect.php");
{
$sql_get_menu = "SELECT *
FROM menu";
# Check of query is gelukt
if (($result_get_menu = mysql_query($sql_get_menu)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_menu,mysql_error(),'Fout met het ophalen van het menu.');
}
elseif (mysql_num_rows($result_get_menu) == 0)
{
echo 'Er is geen menu';
}
else
{
$totaal_menu = array();
while ( $row_menu = mysql_fetch_assoc($result_get_menu));
{
$totaal_menu[] = $row_menu
}
echo json_encode($row_menu);
}
}
?>
include ("connect.php");
{
$sql_get_menu = "SELECT *
FROM menu";
# Check of query is gelukt
if (($result_get_menu = mysql_query($sql_get_menu)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_menu,mysql_error(),'Fout met het ophalen van het menu.');
}
elseif (mysql_num_rows($result_get_menu) == 0)
{
echo 'Er is geen menu';
}
else
{
$totaal_menu = array();
while ( $row_menu = mysql_fetch_assoc($result_get_menu));
{
$totaal_menu[] = $row_menu
}
echo json_encode($row_menu);
}
}
?>
maar ik krijg als foutmelding unexpected } en dat is die van boven de echo json_encode($row_menu); maar als ik die krulhaakje weghaal dan is de json_encode($row_menu); fout... wat doe ik nu verkeerd?
Toevoeging op 13/01/2012 14:41:17:
oh ik zie het al er moest een ; achter $totaal_menu[] = $row_menu ...
maar nu krijg ik dus geen error meer maar wel een false.. mis ik iets? of doe ik nog wat fout??
Gewijzigd op 13/01/2012 14:36:55 door Reshad F
Verder ook niet "echo json_encode($row_menu);" maar "echo json_encode($totaal_menu);"
(Mijn fout, sorry)
ik krijg nog steeds een false alleen nu tussen [] .. declareer ik het wel goed?
Gewijzigd op 13/01/2012 14:55:23 door Erwin H
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
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
<?php
include ("connect.php");
$sql_get_menu = "SELECT *
FROM menu";
# Check of query is gelukt
if (($result_get_menu = mysql_query($sql_get_menu)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_menu,mysql_error(),'Fout met het ophalen van het menu.');
}
elseif (mysql_num_rows($result_get_menu) == 0)
{
echo 'Er is geen menu';
}
else
{
$totaal_menu = array();
while ( $row_menu = mysql_fetch_assoc($result_get_menu));
{
$totaal_menu[] = $row_menu;
}
echo json_encode($totaal_menu);
}
?>
include ("connect.php");
$sql_get_menu = "SELECT *
FROM menu";
# Check of query is gelukt
if (($result_get_menu = mysql_query($sql_get_menu)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_menu,mysql_error(),'Fout met het ophalen van het menu.');
}
elseif (mysql_num_rows($result_get_menu) == 0)
{
echo 'Er is geen menu';
}
else
{
$totaal_menu = array();
while ( $row_menu = mysql_fetch_assoc($result_get_menu));
{
$totaal_menu[] = $row_menu;
}
echo json_encode($totaal_menu);
}
?>
Dan wordt het testen waar iets anders gebeurt dan wat we verwachten. Zet eens een print_r($row_menu) binnen de while loop. Dan kan je zien hoe vaak hij door die loop gaat en wat de waarde van row_menu dan is.
Array ( [0] => ) [false]
ik heb overigens van de print totaal_menu gemaakt omdat ik van row_menu niks kreeg
Gewijzigd op 13/01/2012 15:08:06 door Reshad F
Kan je het sql statement eens uitvoeren in phpmyadmin bijvoorbeeld, om te kijken hoeveel rijen er dan uitkomen?