Een veld van een formulier opzoeken in de database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roy H

Roy H

08/02/2017 11:54:03
Quote Anchor link
Hallo guru's, goedemorgen,

Ik heb een PHP formulier gemaakt (opgemaakt met bootstrap; https://v4-alpha.getbootstrap.com/components/forms/)
Deze slaat de ingevoerde gegevens op in een MySQL database. Dat is me allemaal gelukt :)

Wat ik nu wil is eigenlijk dat er 2 velden bijkomen. In veld A wordt dan een waarde ingetypt (bijv. artikelnummer),
in veld B wordt dan automatisch de artikelnaam weergegeven. Deze gegevens kunnen uit een (andere) MySQL database gehaald worden.

Het mooiste zou trouwens zijn als aan de hand van dat ene veld meerdere velden gevuld kunnen worden automatisch.
Dat komt dan wel allemaal uit dezelfde database, dus men voert bijv. artikelnummer in en vervolgens worden de velden productnaam en ean-nummer automatisch gevuld.

Vervolgens moeten beiden velden net als de rest van de velden van het formulier opgeslagen worden in de database bij het verzenden van het formulier.
(Maar dat werkt dus eigenlijk al).

Een beetje het idee bij het bestellen bij een webshop dat als je je postcode ingevuld hebt de straat er automatisch komt te staan.


Kan iemand mij helpen hoe ik dit kan bewerkstelligen? Of een artikeltje waar ik er over kan lezen?

Alvast bedankt!
Gewijzigd op 08/02/2017 11:56:24 door Roy H
 
PHP hulp

PHP hulp

25/12/2024 14:31:06
 
Joakim Broden

Joakim Broden

08/02/2017 12:50:15
Quote Anchor link
Dit kan met Ajax bijvoorbeeld met jQuery. Je registreert elke keyup van veld A, elke keer word er een Ajax request gestuurd met bv het artikelnummer als parameter. Die Ajax request zoekt dan in de database en geeft een JSON string weer terug met het gevonden artikel en informatie.

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
    var $form = $('form'),
        $fieldA = $('input[name="code"]', $form);
        
    $fieldA.on('keyup', function(event) {
        $.ajax({
            'url'        : 'URL',
            'data'        : {
                'code'    : $fieldA.val()
            },
            'dataType'    : 'JSON',
            'success'    : function(data) {
                console.log(data.responseJSON);
            }
        })
    });

Niet getest!
 
Ivo P

Ivo P

08/02/2017 13:13:27
Quote Anchor link
Op zich is het leuk voor de gebruiker om te zien dat artikelnummer 12345 inderdaad een doos vol chocolades is, met barcode 876666666

maar dat hoef je dan niet op te slaan bij de bestelling. Op basis van 12345 heb je genoeg info.
De rest query je er zo weer bij
 
Roy H

Roy H

08/02/2017 13:31:25
Quote Anchor link
Bedankt Joakim, hier ga ik mij verder in verdiepen!

Ivo de database waar de informatie vandaan gehaald wordt is een andere database dan waar de waardes van het formulier in opgeslagen worden.
Door dit mee te geven bevat de andere database alle juiste gegevens.

Ik ga weer verder knutselen :)
 
Thomas van den Heuvel

Thomas van den Heuvel

08/02/2017 14:40:01
Quote Anchor link
@Joakim op het moment dat je JavaScript koppelt aan een (formulier)element is het misschien verstandiger om dit te doen op grond van een id, in plaats van een veldnaam, of op een zodanige manier (dummy CSS-klasse met een "js-" prefix?) dat direct blijkt dat er iets speciaals aan de hand is met dat element.

Als je enkel gebruik maakt van een veldnaam is het niet op voorhand evident dat hier extra functionaliteit aan hangt en kan dat voor problemen zorgen wanneer deze informatie wijzigt simpelweg omdat nergens uit blijkt dat er iets speciaals aan de hand is. Dit probleem treedt vooral / vaker op wanneer je met meerdere mensen aan een website werkt en wanneer er een strictere scheiding van code (JavaScript, HTML) is.

EDIT leg dus ergens expliciet in het formulier vast (en zorg dat dit direct duidelijk is) dat er met dit veld speciale dingen gebeuren en dat je dat veld dus niet zomaar kunt wijzigen.
Gewijzigd op 08/02/2017 14:44:13 door Thomas van den Heuvel
 



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.