login  Naam:   Wachtwoord: 
Registreer je!
 Forum

op basis van checkboxes php script uitvoeren

Offline djazzz - 05/08/2007 22:15
Avatar van djazzzNieuw lid Hallo,

ik vroeg me af of iemand me uit de brand kan helpen!
Ik heb een webpagina gemaak met 6 checkboxes.
Bij een bepaalde combinatie van vinkjes moet een bepaald script uitgevoerd worden.
Hoe kan ik dit het beste aanpakken?
Ik wilde een aantal variabelen maken met daarin de naam van een php script. Nu begrijp ik dat php de waardes van de checkboxes in een array propt. Ik moet nu de array uitlezen en op basis van wat elke index is , de juiste varaiabele met php script aanroepen.
Stel dat array[1] en array[2] true zijn, dan moet script 3 uitgevoerd worden.
Als een checkbox niet gevinkt is blijft de desbetreffende index bestaan of vervalt deze dan? m.a.w. worden alleen van de gevinkte checkboxes een array gemaakt?

alvast bedankt!

10 antwoorden

Gesponsorde links
Offline Scott - 05/08/2007 23:06 (laatste wijziging 05/08/2007 23:07)
Avatar van Scott Gouden medaille

PHP ver gevorderde
Een checkbox die niet aangevinkt is, wordt niet meegestuurd en de index wordt dus ook niet herkend door PHP.

Een manier waarop je een actie kunt uitvoeren is door de checkboxes deze stijl te maken:

<input type="checkbox" name="array[]" value="1" />
<input type="checkbox" name="array[]" value="2" />

De value moet je steeds als macht van 2 nemen.

Dan doe je het als volgt:

  1. $total = array_sum($_POST['array']);
  2.  
  3. $getal = 7; // tel de waardes van de checkboxen op die aangevinkt moeten zijn om een bepaald script uit te voeren en ken $getal dat getal toe
  4.  
  5. if ($total == $getal) {
  6.  
  7. echo 'script wordt uitgevoerd';
  8. }
  9.  
  10. else {
  11.  
  12. echo 'script wordt niet uitgevoerd, geen goede combinatie ingevuld';
  13.  
  14. }
Offline djazzz - 06/08/2007 10:59
Avatar van djazzz Nieuw lid ok, dus als ik de input tag een naam met vierkante haken gebruik, neemt ie ook de niet aangevinkte checkboxes mee?
Bijv. ik kan als checkbox 4 niet aangevinkt is door middel van array[3] toch de waarde nul zien?
Verder kan ik helaas niet met een totaal getal werken daar 1 en 2 3 is, maar alleen checkbox 3 ook 3 is...
Kan ik de waardes van de array in een string krijgen?
bijv. checkb. 1 = 0 cb 2 = 1 cb 3 = 1 cb 4 = 0 string = 0110
of werkt dat zo niet?
Offline Thomas - 06/08/2007 12:35
Avatar van Thomas Moderator Scott zijn oplossing is goed.
Elke checkbox heeft een waarde die een macht van 2 is (1,2,4,8,16,...).

Checkboxes die niet aangevinkt zijn worden niet gepost, dus deze worden ook niet geteld.

Doordat je machten van 2 gebruikt kun je unieke combinaties maken, het probleem wat jij noemde (checkbox #3 is 3) komt niet voor, 3 is immers geen macht van 2.
Offline djazzz - 06/08/2007 12:44
Avatar van djazzz Nieuw lid aha , ik snap hem, de total variabele wordt gevuld met de waardes van de checkboxes?
alleen die regel met : $getal = 7 hoe moet ik dat zien?

En de laatste vraag, ik wil op basis van het totaalgetal een bepaald script uitvoeren.
Hoe doe ik dat ? ik neem aan dat dat komt te staan tussen de accolades?

bedankt voor de reacties trouwens!
Offline Rik - 06/08/2007 13:53
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Dat "$total == 7" moet je zien als "$total & 1 && $total & 2 && $total & 4".
Omdat 7 bestaat uit 1 + 2 + 4 = 7 moeten de eerste drie bits op 1 staan. $total & 1 geeft true terug als de eerste bit op 1 staat en false als ie op 0 staat.
Kijk maar eens wat decbin($total) geeft, dan wordt het vanzelf helemaal duidelijk.
Offline djazzz - 06/08/2007 14:15
Avatar van djazzz Nieuw lid ok die snap ik, hoe kan ik dan een script uitvoeren bij het voldoen aan die voorwaarde?
Offline marten - 06/08/2007 14:22
Avatar van marten Beheerder Met de if else constructie.
Offline djazzz - 06/08/2007 17:17 (laatste wijziging 07/08/2007 14:08)
Avatar van djazzz Nieuw lid ok,

Ik heb het zover geprogrammeerd, maar ik krijg een foutmelding!
nl.

Warning: array_sum() [function.array-sum]: The argument should be an array in D:\xampp\htdocs\set_juice.php on line 2

Dit is mijn form:


<form name="myform" method="POST" action="set_juice.php">
<p align=center>
<input type="checkbox" name="box[]" value="1">
<input type="checkbox" name="box[]" value="2">
<input type="checkbox" name="box[]" value="4">
<input type="checkbox" name="box[]" value="8">
<br>
<br>
<input type="submit" value="SET">
</form>

en dit mijn php script:

<?php
$total = array_sum($_POST["box"]);

switch ($total) {

case 0:
exec('D:\\666.exe x');
break;
case 1:
exec('D:\\666.exe 1 ');
break;
case 2:
exec('D:\\666.exe 2');
break;
case 3:
exec('D:\\666.exe 12');
break;
case 4:
exec('D:\\666.exe 3');
break;
case 5:
exec('D:\\666.exe 13');
break;
case 6:
exec('D:\\666.exe 23');
break;
case 7:
exec('D:\\666.exe 123');
break;
case 8:
exec('D:\\666.exe 4');
break;
case 9:
exec('D:\\666.exe 14');
break;
case 10:
exec('D:\\666.exe 24');
break;
case 11:
exec('D:\\666.exe 124');
break;
case 12:
exec('D:\\666.exe 34');
break;
case 13:
exec('D:\\666.exe134');
break;
case 14:
exec('D:\\666.exe');
break;
case 15:
exec('D:\\666.exe a');
break;
}
?>

Iemand een idee?


Offline citroen - 07/08/2007 14:12 (laatste wijziging 07/08/2007 14:14)
Avatar van citroen Onbekend $total = count($_POST['box']);

edit: dit zal het wss niet oplossen, controleer of $_POST['box'] wel integers zijn.
Offline djazzz - 07/08/2007 14:33 (laatste wijziging 07/08/2007 15:04)
Avatar van djazzz Nieuw lid sorry, ik heb het probleem al gevonden, ik heb de verkeerde set_juice.php ge-edit!  

Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.208s