JavaScript & PHP door Martijn Korse
Dit artikel is erg verouderd en bevat misschien onjuiste informatie.
Kijk op de wiki voor nieuwere artikelen.
Als je in je site veel gaat doen met PHP, MySQL én JavaScript, loop je onherroepelijk een keer tegen het probleem aan dat je eigenlijk in je javascript nog even in je database wilt gaan kijken. Ik tenminste wel. Dit artikel zal meer over JavaScript dan over PHP of MySQL gaan, maar dacht dat het toch nuttig zou kunnen zijn omdat meer PHPers hier wellicht tegen aanlopen. Anyways,...
De situatie is als volgt:
Ik heb een database met een tabel met persoongegevens (naam, adres, etc) en een aantal andere tabellen met nog wat uitgebreidere informatie. Deze gegevens kunnen worden gelinkt via een uniek ID die ieder persoon heeft. Nu heb ik een aantal formulieren, sommigen waarvan ook de persoongegevens weer moeten worden ingevoerd. Wat handig zou zijn, is dat als je het ID invoert, dat dan in de overige velden automatisch de persoonsgevens komen te staan. (gebruikers gemak)
In JavaScript kan dat in principe met een onChange, die er voor zorgt dat als de waarde van een invoerveld verandert, andere invoervelden ook moeten veranderen.
Probleem :
Die gegevens staan nog in een database en daar kunnen we zonder herladen van de pagina niet meer bij.
Je zou die gegevens bij het laden van de pagina allemaal al in een ‘JavaScript array’ kunnen stoppen, zodat het al in JavaScript bekend is, maar dat wordt ondoenlijk bij teveel records (2 of 3 zal nog gaan, maar boven de 10 wordt het al zeuren denk ik).
Je zou in je onChange het formulier kunnen laten submitten (als het formulier naar zichzelf verwijst), zodat de pagina opnieuw geladen wordt en de waarde in je post bekend is. Voordat je het formulier weergeeeft kun je dan met die waarde eerst de persoonsgegevens gaan bepalen. Alleen hoe maak je duidelijk dat de actie die normaal uitgevoerd moet worden bij het submitten (bijvoorbeeld het sturen van een e-mail met daarin de waardes) niet moet worden uitgevoerd? Dan zou je daar een extra optie voor in moeten bouwen (een checkbox die je aan- of uitvinkt), maar da’s ook niet echt elegant.
Dat JavaScript heeft dus eigenlijk toegang nodig tot een stukje php code, wat lost staat van die pagina, wat door de server verwerkt kan worden en wat ‘m vertelt wat die waardes zijn die in de overige velden moeten worden ingevoerd.
Ik kwam tot de conclusie dat dat natuurlijk prima te doen is door een frameset te maken!
De onChange laadt een filetje in het andere frame, met achter de filename in de url een variabele met een waarde (vb.: iets.php?var=val) - die waarde is dan natuurlijk de waarde die net ingevoerd is in het formulier. En als die persoongegevens dan eenmaal zijn bepaald door PHP (en MySQL), dan kunnen die weer dmv een javascriptje worden ingevoerd in het andere (oorspronkelijke) frame (dat het formulier bevat). De oplossing ......
Leuk ...... maar als echte PHP Freak heb je natuurlijk net als ik een bloedhekel aan dat lelijke javascript met al z’n punten en meer van die ellende en gaat het je minimaal een paar uur kosten om uit te zoeken hoe dat allemaal moet. Dus, om jullie die ergernis te besparen ga ik hieronder even met een hapklaar voorbeeld uitleggen hoe dat moet.
| 1 | 2 | 3 | Volgende »
|