waardes uit DB in een JS popup box

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Reshad F

Reshad F

13/01/2012 11:02:33
Quote Anchor link
hallo ik wil graag hetgeen ik in een DB tabel heb staan weer kunnen geven in een popupbox van JS wanneer ik op een button klik,

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

PHP hulp

24/11/2024 20:45:52
 
Erwin H

Erwin H

13/01/2012 11:05:09
Quote Anchor link
Als je het makkelijk wilt doen kijk dan even naar dit topic: 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
 
Reshad F

Reshad F

13/01/2012 11:22:26
Quote Anchor link
dankjewel voor de snelle reactie!

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

Erwin H

13/01/2012 11:35:05
Quote Anchor link
Gebruik je JQuery?
 
Reshad F

Reshad F

13/01/2012 11:43:19
Quote Anchor link
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 :)
 
Erwin H

Erwin H

13/01/2012 12:04:02
Quote Anchor link
Dat zou kunnen :-)
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).
 
Reshad F

Reshad F

13/01/2012 12:48:11
Quote Anchor link
ik heb in mijn database een table met daarin een MENU die ik via een php script kan wijzigen, toevoegen en verwijderen etc... deze ziet er zo uit als je query zou opvragen

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

Kris Peeters

13/01/2012 12:56:27
Quote Anchor link
Voor alle duidelijkheid ...
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
 
Erwin H

Erwin H

13/01/2012 13:01:08
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo json_encode( $row );
?>


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

Reshad F

13/01/2012 13:05:57
Quote Anchor link
het hoeft in pricipe niet perse met ajax... maar ik wilde gewoon een alert box in eerste instantie omdat ik dit mooier vind..

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo json_encode( $row );
?>


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

Erwin H

13/01/2012 13:37:53
Quote Anchor link
Net wat jij wilt. Ik heb geloof ik geen SQL statement gegeven....
 
Reshad F

Reshad F

13/01/2012 13:50:06
Quote Anchor link
bedoel je zoiets??

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

?>
Gewijzigd op 13/01/2012 13:51:36 door Reshad F
 
Erwin H

Erwin H

13/01/2012 14:04:25
Quote Anchor link
Zoiets ja, met nog een paar aanpassingen.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>
 
Reshad F

Reshad F

13/01/2012 14:36:02
Quote Anchor link
dus het wordt zoiets...


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

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

Erwin H

13/01/2012 14:42:25
Quote Anchor link
Het haakje op 35 moet weg, maar ook die op regel 5. Dan kloppen de haakjes in elk geval volgens mij.
Verder ook niet "echo json_encode($row_menu);" maar "echo json_encode($totaal_menu);"
(Mijn fout, sorry)
 
Reshad F

Reshad F

13/01/2012 14:49:41
Quote Anchor link
ik krijg nog steeds een false alleen nu tussen [] .. declareer ik het wel goed?
 
Erwin H

Erwin H

13/01/2012 14:55:13
Quote Anchor link
Heb je row_menu in totaal_menu veranderd in de json_encode? Want dan zou je geen false moeten krijgen. Ofwel je krijgt een lege json string te zien, ofwel je hele menu.
Gewijzigd op 13/01/2012 14:55:23 door Erwin H
 
Reshad F

Reshad F

13/01/2012 14:56:41
Quote Anchor link
ja ik heb dit nu

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

    
?>
 
Erwin H

Erwin H

13/01/2012 15:01:19
Quote Anchor link
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.
 
Reshad F

Reshad F

13/01/2012 15:06:16
Quote Anchor link
ik krijg

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

Erwin H

13/01/2012 15:11:31
Quote Anchor link
hmm, dat is vreemd wat dat lijkt erop alsof er geen records uit je database komen. Terwijl je wel door die check heen komt.
Kan je het sql statement eens uitvoeren in phpmyadmin bijvoorbeeld, om te kijken hoeveel rijen er dan uitkomen?
 

Pagina: 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.