met Ajax variabele naar php overbrengen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4

Thomas van den Heuvel

Thomas van den Heuvel

10/05/2020 17:31:23
Quote Anchor link
Frits van Leeuwen op 10/05/2020 17:21:45:
Ik ben weer een stap verder. Ik moest regel 4 veranderen in

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
var idnr = Number( $(this).attr('id').substr(5));


Dit kan makkelijker? Stop het id in een apart data-attribuut, data-id ofzo.

Daarnaast, waarvoor heb je dit specifieke id nodig? Waar gebruik je dit voor? Volgens mij hebben de velden/rijen geen individuele id's nodig. Om het huidige element te selecteren die reageert op een klikactie kun je simpelweg $(this) gebruiken?
 
PHP hulp

PHP hulp

03/12/2024 20:21:36
 
Frits van Leeuwen

Frits van Leeuwen

10/05/2020 20:07:50
Quote Anchor link
Dat was eigenlijk al lange tijd mijn vraag.
Is dan $.(this).(id) wat ik dan moet gebruiken om 1 record te pakken? Ik moet dan wel ajax gebruiken als ik het goed begrijp. Ik kan op die manier toch niet het net zichtbaar gemaakte formulier vullen?
Ik begin langzaam een beter beeld op de werking (van alles) te krijgen.
Als ik een selectie gebruik waarbij ik slechts enkele velden van de selectie gebruik, Kan ik dan de niet getoonde velden overhalen zonder ajax? Ik dacht juist dat dat dus niet kon. En dat ik de id moest gebruiken om 1 record binnen te halen en die vervolgens over te pompen naar het formulier om het daar te kunnen wijzigen.
 
Frits van Leeuwen

Frits van Leeuwen

12/05/2020 22:57:08
Quote Anchor link
Een ander idee dat ik nu begin te krijgen is dat ik alle output van de action_get via JSON opmaak stuur.
Dat houd in dat ik dan mijn eerder gegenereerde lijst ombouw. Ik bedoel dat ik de (HTML)lijst nu in action_get.php opbouw, en dat ik dit dan doe in de succes van ajax.
Mijn idee daarbij is dat ik in data van ajax een code gebruik die ik dan in action_get.php herken en op basis daarvan een volledige query kan kiezen voor de juist output. Dit puur voor de veiligheid waar ik voortdurend op gewezen wordt.

Ik begin JSON te begrijpen en er is ook een duidelijke uitleg van de datastructuur er van. Maar eerst wil ik de JSON output kunnen gebruiken. Dus ik probeer nu 1 record naar een formulier te sturen door het gebruik van jquery.
In het formulier hebben alle velden een id.

Ik dacht zelf aan zoiets als dit:

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
succes : function( data )
                    {
                        //data downloaded so we call parseJSON function
                        //and pass downloaded data
                        var json = $.parseJSON(data);
                           
                        //var result = JSON.parse(data);
                        //var result = jQuery.parseJSON(data);
                        $('#fidnr').val(json.menu_id);
                        $('#fwaarde').val(json.menu_waarde);
                        $('#fsubvan').val(json.menu_sub_van);
                        $('#ftekst').val(json.menu_tekst);
                        $('#flink').val(json.menu_link);
                    }




Toevoeging op 12/05/2020 22:59:34:

Frits van Leeuwen op 12/05/2020 22:57:08:
Een ander idee dat ik nu begin te krijgen is dat ik alle output van de action_get via JSON opmaak stuur.
Dat houd in dat ik dan mijn eerder gegenereerde lijst ombouw. Ik bedoel dat ik de (HTML)lijst nu in action_get.php opbouw, en dat ik dit dan doe in de succes van ajax.
Mijn idee daarbij is dat ik in data van ajax een code gebruik die ik dan in action_get.php herken en op basis daarvan een volledige query kan kiezen voor de juist output. Dit puur voor de veiligheid waar ik voortdurend op gewezen wordt.

Ik begin JSON te begrijpen en er is ook een duidelijke uitleg van de datastructuur er van. Maar eerst wil ik de JSON output kunnen gebruiken. Dus ik probeer nu 1 record naar een formulier te sturen door het gebruik van jquery.
De JASON output is bijvoorbeeld dit:
{ menu_id :8 , menu_tekst :Over Geldboom , menu_waarde :9 , menu_sub_van :0 , menu_link :overgeldboom.php , menu_reg_date :2020-04-25 16:51:11 }"

In het formulier hebben alle velden een id.

Ik dacht zelf aan zoiets als dit:

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
succes : function( data )
                    {
                        //data downloaded so we call parseJSON function
                        //and pass downloaded data
                        var json = $.parseJSON(data);
                           
                        //var result = JSON.parse(data);
                        //var result = jQuery.parseJSON(data);
                        $('#fidnr').val(json.menu_id);
                        $('#fwaarde').val(json.menu_waarde);
                        $('#fsubvan').val(json.menu_sub_van);
                        $('#ftekst').val(json.menu_tekst);
                        $('#flink').val(json.menu_link);
                    }






Toevoeging op 12/05/2020 23:00:58:

Frits van Leeuwen op 12/05/2020 22:57:08:
Een ander idee dat ik nu begin te krijgen is dat ik alle output van de action_get via JSON opmaak stuur.
Dat houd in dat ik dan mijn eerder gegenereerde lijst ombouw. Ik bedoel dat ik de (HTML)lijst nu in action_get.php opbouw, en dat ik dit dan doe in de succes van ajax.
Mijn idee daarbij is dat ik in data van ajax een code gebruik die ik dan in action_get.php herken en op basis daarvan een volledige query kan kiezen voor de juist output. Dit puur voor de veiligheid waar ik voortdurend op gewezen wordt.

Ik begin JSON te begrijpen en er is ook een duidelijke uitleg van de datastructuur er van. Maar eerst wil ik de JSON output kunnen gebruiken. Dus ik probeer nu 1 record naar een formulier te sturen door het gebruik van jquery.
In het formulier hebben alle velden een id.

Ik dacht zelf aan zoiets als dit:

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
succes : function( data )
                    {
                        //data downloaded so we call parseJSON function
                        //and pass downloaded data
                        var json = $.parseJSON(data);
                           
                        //var result = JSON.parse(data);
                        //var result = jQuery.parseJSON(data);
                        $('#fidnr').val(json.menu_id);
                        $('#fwaarde').val(json.menu_waarde);
                        $('#fsubvan').val(json.menu_sub_van);
                        $('#ftekst').val(json.menu_tekst);
                        $('#flink').val(json.menu_link);
                    }




Toevoeging op 12/05/2020 22:59:34:

Frits van Leeuwen op 12/05/2020 22:57:08:
Een ander idee dat ik nu begin te krijgen is dat ik alle output van de action_get via JSON opmaak stuur.
Dat houd in dat ik dan mijn eerder gegenereerde lijst ombouw. Ik bedoel dat ik de (HTML)lijst nu in action_get.php opbouw, en dat ik dit dan doe in de succes van ajax.
Mijn idee daarbij is dat ik in data van ajax een code gebruik die ik dan in action_get.php herken en op basis daarvan een volledige query kan kiezen voor de juist output. Dit puur voor de veiligheid waar ik voortdurend op gewezen wordt.

Ik begin JSON te begrijpen en er is ook een duidelijke uitleg van de datastructuur er van. Maar eerst wil ik de JSON output kunnen gebruiken. Dus ik probeer nu 1 record naar een formulier te sturen door het gebruik van jquery.
De JASON output is bijvoorbeeld dit:
"{ menu_id :8 , menu_tekst :Over Geldboom , menu_waarde :9 , menu_sub_van :0 , menu_link :overgeldboom.php , menu_reg_date :2020-04-25 16:51:11 }"

In het formulier hebben alle velden een id.

Ik dacht zelf aan zoiets als dit:

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
succes : function( data )
                    {
                        //data downloaded so we call parseJSON function
                        //and pass downloaded data
                        var json = $.parseJSON(data);
                           
                        //var result = JSON.parse(data);
                        //var result = jQuery.parseJSON(data);
                        $('#fidnr').val(json.menu_id);
                        $('#fwaarde').val(json.menu_waarde);
                        $('#fsubvan').val(json.menu_sub_van);
                        $('#ftekst').val(json.menu_tekst);
                        $('#flink').val(json.menu_link);
                    }








Toevoeging op 13/05/2020 00:31:04:

Ik zag dat mijn JSON string fout was.

De string had er zo uit moeten zien:
{"menu_id":"8","menu_tekst":"Over Geldboom","menu_waarde":"9","menu_sub_van":"0","menu_link":"overgeldboom.php","menu_reg_date":"2020-04-25 16:51:11"}

De code die dit had moeten genereren, is de volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
case 'ShowRecord':
            header('Content-Type: application/json; charset=UTF-8');
            $result_record = mysqli_query($connect, $_GET['query_record']);
            $line_record = mysqli_fetch_array($result_record, MYSQLI_ASSOC);
            echo json_encode($line_record);
            break;


Hiermee ben ik nog niet bij het in de velden op het formulier gooien. Want daar ben ik nog niet uit.
 
Frits van Leeuwen

Frits van Leeuwen

14/05/2020 23:30:39
Quote Anchor link
Sorry, ik heb de indruk dat ik een aantal berichten hier dubbel heb staan. Ik heb geen idee hoe dat kan.

Maar ik heb een regel in mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
    
<input type="text" id = "fwaarde" name="fwaarde" autofocus size="5">                                                                


Ik dacht dus dat als ik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$('#fwaarde').val(json.menu_waarde);

gebruik dat het veld gevuld zou worden met de input dat ik uit JSON kreeg.
Maar er wordt helemaal niets in gezet.

Wie heeft er suggesties?
 
Thomas van den Heuvel

Thomas van den Heuvel

15/05/2020 00:08:03
Quote Anchor link
Waarschijnlijk produceert je PHP-code nu foutmeldingen / geen queryresultaat, want deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysqli_query($connect, $_GET['query_record']);

gaat uiteraard niet werken.

Als je nu eens het PHP-bestand apart opvraagt, en eens wat debugging aanzet?

Ik zou de informatie die doorgegeven wordt om duidelijk te maken wat voor data de aanroepende partij (de JavaScript) wil hebben zo kort mogelijk houden. Zo zou je dus het meegeven van een id (of niet) de doorslaggevende factor kunnen laten zijn. Geen id meegegeven? retourneer alle data, desnoods als plak HTML. Wel een id meegegeven: retourneer een enkel record in JSON-uitvoering. Maar mogelijk is dit al een rare spagaat om te combineren in één PHP-bestand, tenzij je voor alle operaties aparte acties hebt zodat je dus alles al in aparte compartimenten hebt opgedeeld. Maar dat is dus een stukje architectuur / gestandaardiseerde aanpak die je jezelf zou moeten aanleren om het bouwen van wat grotere stukken code / complete websites wat aangenamer of in ieder geval wat gestructureerder aam te vliegen.

Op het moment dat je echt applicaties gaat bouwen loont het zeker (ook) de moeite om wat schillen aan te gaan brengen rondom database-operaties. Dit om het afhandelen van foutmeldingen beter te stroomlijnen.

Want wat je nu doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$result_record = mysqli_query($connect, $_GET['query_record']);
$line_record = mysqli_fetch_array($result_record, MYSQLI_ASSOC);
echo json_encode($line_record);

Alles na mysqli_query() gaat door de vleesmolen. $result_record bevat mogelijk de waarde false in plaats van een mysqli_result object. mysqli_fetch_array() zal daarom nooit goedgaan, maar jouw programma ratelt vrolijk verder. Het zou beter zijn dat je voorzieningen hebt zodat jouw applicatie aan de noodrem trekt op het moment dat mysqli_query mislukt om verdere ongelukken te voorkomen.

Quote:
Wie heeft er suggesties?

Beschouw (dus) het PHP-bestand in afzondering en dump zonodig extra informatie op het scherm. Indien de fout (overduidelijk?) niet in het JavaScript-deel zit dan is het betrekken van deze JavaScript in dit vraagstuk een overcomplicatie die alleen maar voor ruis/afleiding zorgt.

Je moet het als volgt zien. Het PHP-bestand werkt precies hetzelfde als voorheen, alsof je een pagina opvraagt met de details van een specifiek record:

get.php?id=1234

Het enige wat verschilt is hoe deze informatie vervolgens weergegeven wordt (en hoe deze verder wordt gebruikt).

In plaats van een HTML-pagina produceert dit PHP-bestand een JSON-string.

That's it.

Los van de techniek die je gebruikt voor weergave is het gewoon common sense om de invoer te valideren. Het heeft geen zin om een query uit te voeren als $_GET['id'] niet bestaat of als $_GET['id'] niet numeriek is.

Los van de techniek die je gebruikt voor weergave zouden alle variabele DATA-delen die van een externe bron afkomstig zijn en gebruikt worden in de SQL van een query ontdaan moeten worden van een potentieel speciale betekenis, oftewel, deze zouden ge-escaped moeten worden.

Los van de techniek die je gebruikt voor weergave zou je programma "mondig" moeten zijn over fouten. Desnoods alleen tijdens ontwikkeling. Afhankelijk van de situatie geven deze meer of minder details over de aard van de fout.

Indien het de taak van het PHP-bestand is om informatie op te lepelen van een enkel record, dan kan dit om een aantal redenen mislukken:
- er is geen (numeriek) id meegegeven
- het record met het opgegeven id bestaat niet (meer)
- eventueel andere fouten bij het uitvoeren van de query

Dit zou je ook als een error-status terug kunnen geven in JSON-vorm, dit verschaft jou als ontwikkelaar en ook als gebruiker direct informatie dat er iets is misgelopen.

Maar dit is dus wederom een ontwerpbeslissing: voeg je hier wat meer controles aan toe zodat je applicatie wat robuuster is of in ieder geval wat robuuster reageert en niet omvalt omdat je code / de query in de soep loopt, of tref je deze voorzieningen niet. Zoals eerder gezegd zou dit op zijn minst de ontwikkeling helpen omdat dit een schat aan informatie geeft over de toestand van variabelen binnen jouw applicatie. Hiermee creeer je voor jezelf overzicht, wat je op dit moment hard nodig lijkt te hebben.
 
Frits van Leeuwen

Frits van Leeuwen

15/05/2020 10:11:46
Quote Anchor link
Bedankt voor deze uitleg. Ik leer iedere keer weer nieuwe dingen en krijg nieuwe inzichten.

Ik heb JSON gebruikt eigenlijk als advies hier in het forum. En dus ging ik er mee aan de slag. Maar ik ben er nu een tijdje mee aan het klooien, en krijg het niet voor elkaar om het met jquery als invulling in de HTML INPUT te plaatsen.
En dat terwijl het JSON antwoord uit ajax wel goed is.

Maar met deze uitleg kreeg ik weer een nieuw inzicht. En aangezien het met JSON niet lukt, bedacht ik me dat ik het formulier ook in action_get.php kan opbouwen en vullen. Ik doe dat tenslotte ook met het opbouwen van een lijst.

Dus mijn voorlaatste idee om meer met JSON te gaan doen gooi ik over bord. Want HTML over gooien is wel makkelijker.

Bedankt voor zover.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/05/2020 11:00:52
Quote Anchor link
Blijkbaar kijk je niet in de console van de devtools, want
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
var json = $.parseJSON(data);

levert een foutmelding op.

Omdat je aangeeft in de ajax aanroep dat er json terugkomt maakt jquery hiervan al een object
 
Thomas van den Heuvel

Thomas van den Heuvel

15/05/2020 11:13:42
Quote Anchor link
Alles over de schutting gooien als HTML kan, maar dat is dus een ontwerpbeslissing die je moet kunnen onderbouwen. Het zou niet uit moeten maken hoe de informatie aangeleverd wordt (HTML of JSON) en "krijg het anders niet aan de praat" is niet zo'n sterk argument.

En wat @Ger zegt dus. Bouw voorzieningen in om fouten te kunnen detecteren en gebruik de reeds aanwezige tools hiervoor.

Als je gebruik maakt van technieken als AJAX dan zul je moeten leren om je console + je netwerktab in de gaten te houden, omdat deze je dus een heleboel (kunnen) vertellen over wat er allemaal onder water gebeurt. Anders ben je dus letterlijk blind aan het ontwikkelen en merk je pas helemaal aan het einde van de rit dat er dingen misgaan.

Weet niet wat voor browser je doorgaans gebruikt, maar zo'n developer toolbar zit meestal onder de F12-toets.
Gewijzigd op 15/05/2020 11:14:19 door Thomas van den Heuvel
 
Frits van Leeuwen

Frits van Leeuwen

15/05/2020 14:42:01
Quote Anchor link
Ik heb de oplossing gevonden.....
Ik keek er steeds over heen.
succes: moest success: zijn. Zo simpel was het probleem. zucht... :-)

Ik gooi JSON dus niet over bord. Want het past beter bij mijn oorspronkelijke plan.

Bedankt voor de hulp tot zo ver.
Gewijzigd op 15/05/2020 15:17:18 door Frits van Leeuwen
 
Thomas van den Heuvel

Thomas van den Heuvel

15/05/2020 15:39:00
Quote Anchor link
Tip voor de toekomst: zet een simpel console.log() statement in het onderdeel wat je wenst te controleren, bijvoorbeeld als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$.ajax({
    ...
    'success': function(data) {
        console.log('success called!');
        ...
    }
});


Indien er vervolgens in je console geen boodschap "success called!" verschijnt, dan weet je dus dat dat deel van de code nooit bereikt wordt.

Op die manier heb je dit soort basale (spellings)fouten er snel uit, of kun je in ieder geval heel snel inzoomen op het probleemgebied door het toevoegen van meerdere boodschappen.
 
Frits van Leeuwen

Frits van Leeuwen

03/06/2020 23:42:50
Quote Anchor link
Hallo allemaal,

Daar ben ik weer. Ik was een tijdje weg doordat ik het programmeer werk niet kon voortzetten.

Thomas van den Heuvel, bedankt voor de tip.

Ik liep tegen een probleem op, waardoor ik even niet verder kon programmeren. Maar gelukkig na het nodige aanpassingen werkte alles ineens weer. Aansluitend kon ik de laatste stukjes ook werkend krijgen.
Ik kan nu toevoegen, wijzigen en verwijderen. Het toevoegen en wijzigen doe ik boven de lijst die ik in beeld heb. Het formulier dat ik daarbij gebruik gaat alleen open als ik het nodig heb.
Bij verwijderen krijg onder het formulier de vraag: "Weet je het zeker?" Met een Ja en een nee knop.
Bij nee verdwijnt de vraag en hou je het formulier open.
Bij ja verwijder ik het record en sluit ik het formulier en de vraag. Zo hou ik alleen de lijst over.

De volgende stap is zoeken.
Ik wil hiervoor het zelfde formulier gebruiken als voor toevoegen en muteren. Ik moet dan natuurlijk wel eerst wat knoppen en eventueel ook velden verbergen. En ik moet nog een zoekknop bedenken. Die wil ik onder de lijst zetten naast toevoegen.
En in het formulier moet er natuurlijk ook één staan.
Het resultaat van het zoeken moet dan in de lijst komen. Met daaronder een herstel knop om de volledige lijst weer te zien.

Maar ook sorteren van de lijst is iets dat mijn aandacht krijgt.
Als ik op een kop van de tabel klik, wil ik de lijst daarop laten sorteren. Klik ik er nog eens op, dan wordt hij de andere kant op gesorteerd.
Ik denk dat ik moet beginnen met een default situatie te maken. Deze wordt dan door het klikken op de koppen steeds aangepast en daarmee ook de lijst.
 

Pagina: « vorige 1 2 3 4



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.