Button een waarde geven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wouter Horst

Wouter Horst

27/12/2018 18:55:00
Quote Anchor link
Beste Forumleden,

Is er een manier om twee buttons toe te voegen die direct een submit hebben met bv Button Ja of Button Nee

Deze wil ik dan bij drukken gelijk de waarde laten opslaan in een tabel.
Dit lukt me bijvoorbeeld wel met een Radio button maar dan moet je eerst die selecteren en dan nogmaals op update/submit button drukken.

http://www.wvanderhorst.nl/voorbeeld.png

http://www.wvanderhorst.nl/voorbeeld2.png


Hoop dat me vraag een beetje duidelijk is.
Gewijzigd op 27/12/2018 19:53:21 door Wouter Horst
 
PHP hulp

PHP hulp

21/05/2019 01:44:17
Honeypot
 
Thomas van den Heuvel

Thomas van den Heuvel

27/12/2018 19:16:10
Quote Anchor link
Maak twee forms?
Of schrijf een JavaScript snippet die een onzichtbaar veld een waarde meegeeft op grond van de button waar je op klikt?

Of -wellicht nog het beste- je Googled twee tellen. Je kunt submit-buttons gewoon values meegeven.
 
- Ariën -
Beheerder

- Ariën -

27/12/2018 19:16:48
 
Wouter Horst

Wouter Horst

27/12/2018 19:36:43
Quote Anchor link
Bedankt voor de links,

Maar kunnen jullie toch een klein script plaatsen die ik kan aanpassen naar de juiste database?

$query_1 = "SELECT * FROM tbl_posts WHERE form_id = '".$_POST['form_id']."' ORDER BY form_id";
$result_1 = mysqli_query($connect, $query_1);
$data_1 = mysqli_fetch_assoc($result_1);

<form action="buy.php" method="post">
<input id='submit' type='submit' name = 'Accepteren' value = 'Accepteren'>
<input id='submit' type='submit' name = 'Afwijzen' value = 'Afwijzen'>
</form>
 
- Ariën -
Beheerder

- Ariën -

27/12/2018 20:00:10
Quote Anchor link
Je moet een UPDATE-query maken.
Denk ook om veiligheid tegen SQL-injection.
 
Wouter Horst

Wouter Horst

27/12/2018 21:12:52
Quote Anchor link
Hoe moet ik dat dan doen?
Kun je een voorbeeld script laten zien?
 
- Ariën -
Beheerder

- Ariën -

27/12/2018 21:17:10
Quote Anchor link
https://www.w3schools.com/php/php_mysql_update.asp

Is het anders niet handig je eerst even in MySQLi te verdiepen?
Gewijzigd op 27/12/2018 21:17:52 door - Ariën -
 
Adoptive Solution

Adoptive Solution

27/12/2018 21:17:39
 
Thomas van den Heuvel

Thomas van den Heuvel

27/12/2018 22:08:00
Quote Anchor link
Als je de buttons nu beide de naam "status" geeft, en de waarde direct een toegestane waarde in de database-kolom laat zijn hoef je ook niets te vertalen - je hoeft dan enkel te controleren of het een toegestane waarde betreft in de validatie stap, dus concreet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<button type="submit" name="status" value="Geaccepteerd">Accepteren</button>
<button type="submit" name="status" value="Afgewezen">Afwijzen</button>

Dat lijkt mij een stuk simpeler en consistenter.
Gewijzigd op 27/12/2018 22:08:15 door Thomas van den Heuvel
 
Ozzie PHP

Ozzie PHP

28/12/2018 12:24:07
Quote Anchor link
Wat Thomas zegt klopt. Als aanvulling: je kunt als waarde beter een boolean gebruiken (een 0 of een 1). Een 0 komt overeen met 'nee' en een 1 met 'ja'. Dat bespaart ruimte in de database. Het veld in de database-tabel stel je dan in op TINYINT.

Formulier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<button type="submit" name="status" value="1">Accepteren</button>
<button type="submit" name="status" value="0">Afwijzen</button>


Controle op server:

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

if (isset($_POST['status']) && ($_POST['status'] === '0' || $_POST['status'] === '1')) {

// Voer update-query uit.

} else {

// Er klopt iets niet. Ga terug naar het formulier.

}
?>
Gewijzigd op 28/12/2018 12:24:31 door Ozzie PHP
 
Thomas van den Heuvel

Thomas van den Heuvel

28/12/2018 15:57:43
Quote Anchor link
@Ozzie, dat was ook mijn eerste ingeving maar als je de tweede screenshot in de oorspronkelijke vraagstelling bekijkt dan zitten hier meer dan twee statussen in. Desalniettemin zou je aan statussen een nummer kunnen toekennen. Een BOOL kolom in een MySQL-database is overigens niets anders dan een alias voor TINYINT(1).

EDIT: En dan is daar ook nog de naamgeving. Als het daadwerkelijk een ja/nee veld was voor de acceptatie-status dan zou de kolom zelf eigenlijk niet "status" maar "geaccepteerd" o.i.d. moeten heten, dit impliceert ook min of meer een ja/nee waarde (dit doe je bij voorkeur ook met PHP-variabelen die enkel Boolse waarden kunnen hebben).

In dit geval betreft het inderdaad een echte status (en niet zozeer een aan/uit stand) die verschillende toestanden (meer dan 2 :)) kan hebben.
Gewijzigd op 28/12/2018 16:07:22 door Thomas van den Heuvel
 
Ozzie PHP

Ozzie PHP

28/12/2018 17:05:23
Quote Anchor link
@Thomas,

Het komt er in ieder geval op neer dat je er geen woorden/strings wil zetten, maar getallen. En volgens mij zijn we het daar geheel over eens ;-)
 
Thomas van den Heuvel

Thomas van den Heuvel

28/12/2018 19:39:11
Quote Anchor link
Meh, hangt er vanaf in hoeverre je je database wilt normaliseren. Je zou ook een index op een tekstuele kolom kunnen zetten (of enkel nummers kunnen gebruiken die verder niet refereren aan een aparte status-tabel). Dat eerste zou dan weer de leesbaarheid van een query kunnen verbeteren. Alles is een tradeoff. In het tweede geval zou je de nummers kunnen hard coden in een configuratie array. Tis ook maar net hoever je iets wilt uitbouwen en hoe netjes alles moet zijn - dit kost ook tijd om te maken.
 
Ozzie PHP

Ozzie PHP

28/12/2018 19:53:34
Quote Anchor link
Alles kost tijd om te maken, maar ik denk dat als je een status in string-vorm gaat opslaan je niet echt handig bezig bent. Gewoon getalletjes en in je php code maak je ervan wat je wilt. Zoiets opslaan als string kost belachelijk veel onnodige ruimte.
 
Wouter Horst

Wouter Horst

28/12/2018 19:59:00
Quote Anchor link
Beste Forumleden,

Bedankt voor het meedenken. Maar kan er ook iemand even een script maken die verbinding maakt met database en dan de kolom status aanpast door middel van buttons?

Met al die losse stukjes kom ik er echt niet uit ;(

het mag of 1,2,3 etc zijn per status of gewoon de tekst.

Alvast bedankt
 
Ozzie PHP

Ozzie PHP

28/12/2018 20:44:16
Quote Anchor link
"Maar kan er ook iemand even een script maken ..."

Euh ... nou, we zijn geen afhaalchinees hoor ... :-/
 
- Ariën -
Beheerder

- Ariën -

28/12/2018 20:49:56
Quote Anchor link
We willen je graag helpen, maar verwachten toch enige zelfinzet.

Connectie maak je zo aan:
http://php.net/manual/en/function.mysqli-connect.php

Zo voer je een query uit:
http://php.net/manual/en/mysqli.query.php

Zo gebruik je een UPDATE-query in mysqli_query(...):
https://www.w3schools.com/php/php_mysql_update.asp

Probeer zelf nu eens een script in elkaar te rijgen die dit doet. Lukt dat?

Als je echt een kant en klaar script wilt, dan kan je beter een Vacaturetopic in ons Vacatureforum plaatsen, volgens de daar geldende regelgeving.
Gewijzigd op 28/12/2018 20:52:37 door - Ariën -
 



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.