waardes uit DB in een JS popup box
Pagina: « vorige 1 2 3 volgende »
Toon Records 0 - 5 (6 totaal, Query duurde 0.0003 sec)
Maar je ziet geen data?
ik probeerde SELECT * FROM menu WHERE id > 0 en toen kreeg ik dat oranje omlijning wel om de ID's heen..
Maak van dit:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
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.');
}
?>
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.');
}
?>
eens dit:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$result_get_menu = mysql_query($sql_get_menu);
if ( $result_get_menu === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_menu,mysql_error(),'Fout met het ophalen van het menu.');
}
?>
$result_get_menu = mysql_query($sql_get_menu);
if ( $result_get_menu === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_get_menu,mysql_error(),'Fout met het ophalen van het menu.');
}
?>
Geeft dat een foutmelding? Want ik heb ergens het idee dat er iets niet goed gaat met je query alleen dat het er niet uit komt door de manier hoe je het opschrijft.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$totaal_menu = array();
while ( $row_menu = mysql_fetch_assoc($result_get_menu));
{
$totaal_menu[] = $row_menu;
print_r($totaal_menu);
}
echo json_encode($totaal_menu);
}
?>
$totaal_menu = array();
while ( $row_menu = mysql_fetch_assoc($result_get_menu));
{
$totaal_menu[] = $row_menu;
print_r($totaal_menu);
}
echo json_encode($totaal_menu);
}
?>
dit stukje dus
Ja natuurlijk gaat het daar fout..... er staat een ; achter je while loop. Haal die eens weg en het loopt als een trein denk ik....
(is ons allemaal wel overkomen)
ik krijg nu[{"id":"1","titel":"Kreeft menu","description":"Vooraf krijgt u een tomatensoep, als hoofdgerecht een overheerlijke kreeft met rijst en appelmoes en als nagerecht een dame blanche","prijs":"25,00"},{"id":"2","titel":"Biefstuk Menu","description":null,"prijs":"27,50"} etc... etc...
maar dit is dus heel lelijk waar zou ik dit mee anders kunnen laten zien?
Gewijzigd op 13/01/2012 16:56:33 door Jurgen B
Volgende stap is om dit nu vanuit javascript te laden en er daar iets leuks mee te doen.
Om een AJAX call te maken met JQuery heb je verschillende functies, degeen die ik eigenlijk altijd gebruik is de simpelste: $.getJSON. Deze gebruik je als volgt:
De functie heeft dus drie parameters; de url, een map met parameters en een callback functie die wordt aangeroepen de AJAX call is uitgevoerd. De url moet je zelf even invullen, de parameter map heb je nu niet nodig want je hebt geen parameters (kan je gewoon {} invullen).
Om de functie aante roepen in de button onclick handler kan je dit gebruiken:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$(document).ready(function(){
$("#button_id").click(function(e){
e.preventDefault(); //om er voor te zorgen dat er geen submit gedaan wordt
$.getJSON(url, {}, function(res){
alert(res[0].titel);
});
});
});
$("#button_id").click(function(e){
e.preventDefault(); //om er voor te zorgen dat er geen submit gedaan wordt
$.getJSON(url, {}, function(res){
alert(res[0].titel);
});
});
});
Enige wat we nu dan even doen is de titel van je eerste gerecht laten zien in een alert. Uiteraard kan er nog veel meer, maar om te laten zien dat het werkt.
Gewijzigd op 13/01/2012 16:58:38 door Erwin H
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<input type='button' value='menu bekijken' id='overzicht'>
en zet de funtie in een script tag
<script type="text/javascript">
$(document).ready(function(){
$("#overzicht").click(function(e){
e.preventDefault(); //om er voor te zorgen dat er geen submit gedaan wordt
$.getJSON(url, {}, function(res){
alert(res[0].titel);
});
});
});
</script>
en zet de funtie in een script tag
<script type="text/javascript">
$(document).ready(function(){
$("#overzicht").click(function(e){
e.preventDefault(); //om er voor te zorgen dat er geen submit gedaan wordt
$.getJSON(url, {}, function(res){
alert(res[0].titel);
});
});
});
</script>
zou dit moeten werken? of doe ik iets fout weer
Enige nog je url invullen, dus de url van de php pagina die we net hebben gemaakt. Voor de rest zou het zo moeten werken.... maar je weet nooit :-)
ik heb dus een pagina ( overzicht.php ) en daar staat alleen dit in
<title>overzicht</title>
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 WHERE id > 0";
$result_get_menu = mysql_query($sql_get_menu);
if ( $result_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 WHERE id > 0";
$result_get_menu = mysql_query($sql_get_menu);
if ( $result_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);
}
?>
en dan heb ik het script hierboven met als url overzicht.php en de button die erbij hoort maar als ik op de knop klik dan gebeurt er niets!
ben ik iets vergeten?
<title>overzicht</title>
Dat moet je namelijk niet hebben. In dat geval krijg je geen juiste JSON terug en zal javascript niet goed ermee om kunnen gaan.
de enige output die je moet hebben is:
echo json_encode($totaal_menu);
Overigens zal je later ook je foutmeldingen daar nog op aan moeten passen, maar dat is van latere zorg.
wat bedoel je met alleen de echo json_encode($totaal_menu); als output hebben voor de rest?? ( moet ik daarbij de foutmeldingen etc die er nu ingebouwd zijn weghalen?? )
hij doet het overigens nog steeds niet ( nadat ik de titel weggehaald heb uit overzicht.php) en als je een werkend voorbeeld wil hebben hiervan kan ik je een ip adressje pm;men zodat je mee kan kijken..
Stuur me anders inderdaad maar even een linkje, dat gaat waarschijnlijk iets sneller.
berichtje is naar je verstuurd. kijk even in je berichtenbox
Toevoeging op 16/01/2012 17:05:53:
En nu werkt het wel :-)
aahh it works! ik krijg nu als output: kreeft menu. maar dit komt waarschijnlijk doordat ik alleen alert(res[0].titel); heb staan. hoe kan ik dit nu heel mooi weergeven voor alle menu's ?
Maar zoals je uit het voorbeeld kunt halen kan je vrij simpel met de data werken die je terugkrijgt uit je AJAX call. "res" is nu een javascript object waar je doorheen kunt lopen. Er zijn verschillende manieren voor, ik gebruik meestal het volgende:
Dit is feitelijk gewoon een loopje dat door het hele object loopt en voor elk element de anonieme callback aanroept waarin je iets kan doen met dat element.
Nu is alleen de vraag, wat wil je doen, hoe wil je het tonen? Heb je al een HTML voorbeeld (template) waarin je het menu wilt tonen?