waardes uit DB in een JS popup box

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Reshad F

Reshad F

13/01/2012 15:14:22
Quote Anchor link
ik doe SELECT * FROM menu en ik krijg dit

Toon Records 0 - 5 (6 totaal, Query duurde 0.0003 sec)
 
PHP hulp

PHP hulp

28/11/2024 16:11:42
 
Erwin H

Erwin H

13/01/2012 15:15:31
Quote Anchor link
Maar je ziet geen data?
 
Reshad F

Reshad F

13/01/2012 15:22:47
Quote Anchor link
ik kom weer na het uitvoeren in de table "menu" met alle menus' erin maar zonder dat ie ze pakt ... normaal zou het randje van de waardes oranje worden maar nu dus niet..

ik probeerde SELECT * FROM menu WHERE id > 0 en toen kreeg ik dat oranje omlijning wel om de ID's heen..
 
Erwin H

Erwin H

13/01/2012 15:26:03
Quote Anchor link
Bovenstaande begrijp ik niet helemaal (welke divs en kleuren?), maar ik kijk nog eens naar je script en ik zou voorstellen een paar dingen iets anders te doen:
Maak van dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.');
}

?>


eens dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.');
}

?>

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.
 
Reshad F

Reshad F

13/01/2012 15:35:39
Quote Anchor link
alles blijft precies het zelfde.. volgens mij gaat er iets fout met de array's

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
<?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);
}

?>


dit stukje dus
 
Erwin H

Erwin H

13/01/2012 15:47:42
Quote Anchor link
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....
 
Kris Peeters

Kris Peeters

13/01/2012 15:49:55
Quote Anchor link
klassieker :)


(is ons allemaal wel overkomen)
 
Reshad F

Reshad F

13/01/2012 16:47:49
Quote Anchor link
jaaa hij doet het :p daankkjewel

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?
 
Jurgen B

Jurgen B

13/01/2012 16:53:40
Quote Anchor link
XHTML en CSS ;) Met andere woorden, opmaak.
Gewijzigd op 13/01/2012 16:56:33 door Jurgen B
 
Erwin H

Erwin H

13/01/2012 16:56:37
Quote Anchor link
Dat is misschien lelijk, maar dat is dus een JSON gecodeerde string, precies wat ik wil :-)

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$.getJSON("http://www.iets.nl/iets.php", {param: "1"}, function(res){});

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
    });
  });
});


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
 
Reshad F

Reshad F

13/01/2012 17:11:09
Quote Anchor link
dus ik maak een knop

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


zou dit moeten werken? of doe ik iets fout weer
 
Erwin H

Erwin H

13/01/2012 17:14:02
Quote Anchor link
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 :-)
 
Reshad F

Reshad F

16/01/2012 14:39:16
Quote Anchor link
sorry ik was er het hele weekend niet vandaar nu pas weer een reactie..

ik heb dus een pagina ( overzicht.php ) en daar staat alleen dit in

<title>overzicht</title>
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
<?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);
}

    
?>


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?
 
Erwin H

Erwin H

16/01/2012 15:41:31
Quote Anchor link
Staat dit ook echt in je overzicht.php?
<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.
 
Reshad F

Reshad F

16/01/2012 15:58:27
Quote Anchor link
ohja dat kwam er vanzelf bij omdat ik de pagina een naam gaf ( werk met dreamweaver )

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..
 
Erwin H

Erwin H

16/01/2012 16:27:20
Quote Anchor link
Je javascript verwacht een JSON encoded string terug. Krijgt het iets anders dan kan het er niets mee doen. Als je dus een foutmelding teruggeeft in een normale string dan loopt dat mis. Maar zoals ik al zei, dat kunnen we later oplossen, is op dit moment niet het belangrijkste.

Stuur me anders inderdaad maar even een linkje, dat gaat waarschijnlijk iets sneller.
 
Reshad F

Reshad F

16/01/2012 16:50:35
Quote Anchor link
berichtje is naar je verstuurd. kijk even in je berichtenbox
 
Erwin H

Erwin H

16/01/2012 16:59:32
Quote Anchor link
Ik zag het en ik zie een fout (misschien nog meer, maar daar komen we vanzelf wel). Je hebt je url in de javascript functie niet tussen quotes staan. Aangezien het gewoon een string is, moet dat wel. Dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$.getJSON('overzicht.php', {}, function(res){
  //etc
});


Toevoeging op 16/01/2012 17:05:53:

En nu werkt het wel :-)
 
Reshad F

Reshad F

16/01/2012 17:08:20
Quote Anchor link
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 ?
 
Erwin H

Erwin H

16/01/2012 17:15:51
Quote Anchor link
Precies, die alert was er alleen om te controleren dat het werkt. Nu het het doet, kunnen we er iets moois van maken.

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$.each(res, function(i,data){
  //doe iets met data, een element uit het object res
});

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?
 

Pagina: « vorige 1 2 3 volgende »



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.