Data opvragen en bewerken in PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5 6 7 volgende »

Thomas Bakker

Thomas Bakker

08/08/2017 21:14:49
Quote Anchor link
Ik heb in mijn script een hidden field gemaakt. Door het hidden field te gebruiken, post hij automatisch een waarde in het veld waar de checkbox komt te staan. Vervolgens staat er dat, als de checkbox een waarde krijgt dus 1, de waarde van de checkbox de waarde van het hidden field overschrijft. Dus als de checkbox leeg is en dus niet ingevuld, wordt de database wel nog steeds geschreven.
 
PHP hulp

PHP hulp

05/05/2024 17:54:40
 
Ben van Velzen

Ben van Velzen

08/08/2017 21:22:22
Quote Anchor link
Dat is op zijn minst onverstandig, want er zijn geen garanties dat de velden daadwerkelijk worden doorgestuurd in de volgorde zoals ze in je pagina staan. Als je niet weet hoe je dit op een correcte manier moet oplossen, waarom gebruik je dan checkboxes en niet gewoon radio buttons?

Je kan gewoon een query draaien na het posten die opvraagt welke id's beschikbaar zijn. Daarna vergelijk je wat er beschikbaar is met wat gepost is op de pagina. Wat niet gepost is maar wel beschikbaar in de database zet je op afwezig, de rest op aanwezig. Simpel en snel. Vooral omdat je die query al draait bij het opbouwen van je formulier.
Gewijzigd op 08/08/2017 21:24:55 door Ben van Velzen
 
Thomas Bakker

Thomas Bakker

08/08/2017 21:26:00
Quote Anchor link
Daar ben ik het niet mee eens... De velden worden weldegelijk goed doorgestuurd. Het is heel simpel, je hebt twee opties, een kind is aanwezig of afwezig. Vink je een kind aan, dan krijgt de kolom de waarde Present voor dat kind. Vink je niets aan, dan zorgt de loop ervoor dat automatisch bij het goede kind gewoon een waarde Afwezig komt.
 
- Ariën  -
Beheerder

- Ariën -

08/08/2017 21:33:16
Quote Anchor link
Ik vraag me dan toch af, waarom doe je moeilijk met checkboxes, terwijl er al een aantal keer radio-buttons is geroepen? Dan heb je altijd de juiste keuze zonder fratsen te hoeven maken met hidden fields.
 
Ben van Velzen

Ben van Velzen

08/08/2017 21:35:33
Quote Anchor link
Thomas, je kunt het ermee eens zijn of niet, het FEIT is dat je er niet vanuit kan gaan dat de velden altijd in dezelfde volgorde worden doorgestuurd. Wanneer het gebeurt dat je hidden field later wordt doorgestuurd dan je checkbox zal je checkbox geen effect hebben.

Heb je daar al aan gedacht? Of ben je het daar ook "niet mee eens"?
 
Thomas Bakker

Thomas Bakker

08/08/2017 21:38:36
Quote Anchor link
Nou, op dit moment werkt het perfect met de checkboxen.
Bovendien wordt eerst de hidden feature gepost en dan pas de checkbox.
De checkbox zal dus altijd later worden gepost en de hidden feature overschrijven.
Is het dan mogelijk dat het hidden field later wordt doorgestuurd terwijl die eerder in het script wordt verzonden?
 
- Ariën  -
Beheerder

- Ariën -

08/08/2017 21:39:39
Quote Anchor link
Misschien leuk leesvoer:
https://www.nngroup.com/articles/checkboxes-vs-radio-buttons/

Ik maak hierop uit dat een radio-button het beste is, omdat deze 'aanwezig' of 'afwezig' kunnen tonen. En daarbij beide de verplichtte waarde meesturen. Checkboxxes zijn eigenlijk bedoeld voor als je meerdere waardes hebt. Maar gelukkig kan iemand niet 'aanwezig' EN 'afwezig' zijn.

Het is eigenlijk ook niet voor niets dat ze bij uitgeschakeld zijn, geen waarde meegeven.

Dus: Radio-buttons is the way, it is.
Gewijzigd op 08/08/2017 21:44:09 door - Ariën -
 
Ben van Velzen

Ben van Velzen

08/08/2017 21:48:33
Quote Anchor link
>> De checkbox zal dus altijd later worden gepost en de hidden feature overschrijven.
Nee, dit wordt bepaald door de browser, wat eerder of later verzonden wordt. En dit kan per keer verschillen. Dat iets eerder in HTML staat heeft weinig tot niets te maken met de volgorde waarin zaken verzonden worden.

>> Is het dan mogelijk dat het hidden field later wordt doorgestuurd terwijl die eerder in het script wordt verzonden?
Hij wordt niet "in het script" verzonden, hij wordt verzonden wanneer de browser er zin in heeft. Zo zijn er browsers die alles gegroepeerd versturen (bijvoorbeeld eerst alle text inputs, daarna alle checkboxes, daarna radiobuttons, daarna hidden fields en zo verder. Het hangt af van de maker van de browser wat de regels voor verzending zijn. Daar heb je zelf geen invloed op. Dat is een van de redenen dat je nooit twee keer dezelfde naam hoort te gebruiken in HTML.
Gewijzigd op 08/08/2017 21:51:30 door Ben van Velzen
 
Thomas Bakker

Thomas Bakker

08/08/2017 21:54:17
Quote Anchor link
Oke, die zekerheid wil ik wel hebben. Dan ga ik toch switchen naar radio buttons.
Ik dacht dat dat namelijk wel zo was, hetgeen wat eerder werd gepost altijd eerder werd verzonden.
Maar dan ga ik inderdaad toch switchen naar de radiobuttons, dat was namelijk mijn reden om checkboxen te gebruiken.
Checkboxen vond ik beter en met de hidden functie kwam er dan toch altijd een resultaat, maar nu is het duidelijk, dan ga ik dat aanpassen.
 
Ozzie PHP

Ozzie PHP

08/08/2017 22:02:02
Quote Anchor link
>> Checkboxen vond ik beter

Had je dan zowel een checkbox voor aanwezig als afwezig? (sorry, ik heb de discussie niet gevolgd)
 
- Ariën  -
Beheerder

- Ariën -

08/08/2017 22:03:15
Quote Anchor link
Ozzie PHP op 08/08/2017 22:02:02:
>> Checkboxen vond ik beter

Had je dan zowel een checkbox voor aanwezig als afwezig? (sorry, ik heb de discussie niet gevolgd)


Nee, het ging eerst om een single checkbox voor aanwezig.
Gewijzigd op 08/08/2017 22:09:04 door - Ariën -
 
Thomas Bakker

Thomas Bakker

08/08/2017 22:09:43
Quote Anchor link
Ja, het ging inderdaad zoals Ariën zei om 1 checkbox. Deze postte alleen een waarde als die aangevinkt werd, dus had er een hidden field aan toegevoegd zodat er uberhaupt een waarde werd gepost, maar dat is naar ik nu lees niet betrouwbaar, dus switchen naar radio buttons.
 
Ozzie PHP

Ozzie PHP

08/08/2017 22:09:44
Quote Anchor link
Ah, oke ...

Vanuit gebruiksvriendelijkheid lijkt me dat (checkboxen) wel wenselijker/overzichtelijker ... dan hoef je alleen aan te vinken wie er aanwezig is.

Technisch gezien ... alvorens het formulier te tonen een array met alle id's (als key) opslaan met waarde 0. Na het posten de array aanpassen op basis van de checkboxen die zijn geset.

Zou kunnen toch? Of mis ik iets?
Gewijzigd op 08/08/2017 22:10:26 door Ozzie PHP
 
Ben van Velzen

Ben van Velzen

08/08/2017 22:15:23
Quote Anchor link
Die oplossing had ik inderdaad ook al voor ogen.
 
Thomas Bakker

Thomas Bakker

08/08/2017 22:17:10
Quote Anchor link
Hmm dat zou ik zelf wel prettiger vinden.
Dan moet ik dus gewoon even een array opstellen die alles naar waarde afwezig zet.
Wanneer een checkbox dan is aangevinkt, wordt die verzonden naar de bijbehorende kolom.
 
- SanThe -

- SanThe -

08/08/2017 22:19:51
Quote Anchor link
Je kan de radiobuttons setten met de inhoud uit de database en na het posten heel simpel weer updaten in de database.
 
Ozzie PHP

Ozzie PHP

08/08/2017 22:24:17
Quote Anchor link
Herhaal:

Technisch gezien ... alvorens het formulier te tonen een array met alle id's (als key) opslaan * in sessie met waarde 0. Na het posten de array aanpassen op basis van de checkboxen die zijn geset.

Die sessie was ik vergeten erbij te zetten. Dus op de pagina waar je het formulier toont, haal je eerst alle id's op uit de database. Die id's sla je in een array op waarbij iedere key een id is. Iedere value zet je op 0. Na het posten van het formulier doorloop je alle checkboxes die geset zijn (die geven dus een id terug), en dat id gebruik je om de array die in de sessie staat te updaten. Je hebt dan dus een array met id's die nulletjes (afwezig) en eentjes (aanwezig) bevatten. Die array kun je dan gebruiken om de database te updaten.
 
Thomas Bakker

Thomas Bakker

10/08/2017 03:00:50
Quote Anchor link
Goedenavond,

Ik ben reeds geswitched naar de radio buttons en geen seconde spijt van.
Nu wil ik een extra feature implementeren, namelijk het tellen van de kinderen in groep X die aanwezig zijn.
Ik had dit opgesteld, maar het levert niets op. Let niet op de code voor en achteraan, hier staat nog tekst normaliter.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$tellen
= mysqli_query($conn,"SELECT Maandag, SUM( Maandag =  'Afwezig' ) AS `Present` FROM Aanwezigheid WHERE  `Groep` =  'A'");
        
?>


<table width="325">


<tr><td colspan="2">Aantal aangemelde kinderen:</td><td><?php echo "$tellen"; ?></td></tr></table>
 
Peter K

Peter K

10/08/2017 07:11:51
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT
    COUNT(Maandag) AS `Present`
FROM
    Aanwezigheid
WHERE  
    `Groep` =  'A' AND
    `Maandag` =  'Afwezig'


Alleen nu haal je alle afwezige mensen op volgens mij?
 
- Ariën  -
Beheerder

- Ariën -

10/08/2017 07:15:41
Quote Anchor link
Logisch, een query telt ook niks.
Het voert enkel een opdracht uit naar MySQL/MariaDB.

De functie geeft normaal een resource die je verder kan gebruiken met bijv. mysqli_num_rows of mysqli_fetch_* functies.

Lees anders eens een MySQLi-tutorial.
Gewijzigd op 10/08/2017 07:16:33 door - Ariën -
 

Pagina: « vorige 1 2 3 4 5 6 7 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.