Hallo allemaal

Ik haal uit mijn database een aantal producten en print deze
op mijn scherm. Ieder product heeft een checkbox zodat wanneer
iemand meerdere producten aanvinkt men deze kan vergelijken. (dit is althans de bedoeling)

Als er op submit gedrukt wordt moet er een nieuw scherm geopend worden alleen hoe ik dat voor elkaar krijg mag joost weten.

Ik heb nu het volgende:

<?
if (isset($_POST['vergelijk']))
{
foreach($_POST['blaat'] as $name => $value)
{
$ladenkast = array ($_POST['blaat'][$name]);
$numElementen = count($ladenkast);

for ($label = 0; $label < $numElementen; $label++ )
{
echo $ladenkast[$label];
}
}
}
?>

Als je nu een aantal producten aanvink worden de id's van de producten
geprint maar nu moet ik die id's meenemen zodat ik hier wat mee kan doen.

Waarschijnlijk weer een query maken die ervoor zorgt dat de aangevinkte
producten naast elkaar komen te staan voor een vergelijking.

Ik hoop dat iemand een suggestie heeft want ik kom er niet uit.

Alvast bedankt
Ok meenemen kan makkelijk

let op:


<form method="post" action="vergelijk.php">
<checkbox name="product[]" value="1">
<checkbox name="product[]" value="2">
<checkbox name="product[]" value="3">
<checkbox name="product[]" value="4">
<input type="submit" value="vergelijk">
</form>


Als je nu in vergelijk.php een print_r($_POST["product"]) doet zie je dat deze een array bevat met de waardes die je gezelcteerd had. :)

[edit]
Het [] trucje is zowiezo wel handig als je met formulieren van onbepaalde groote werkt dus mischien 1 to remember ;)
[/edit]
Hey jacco,

wat ik vergeten ben te vertellen is dat ik 3 verschillende acties
uit wil laten voeren:

- vergelijken
- verwijderen
- doorsturen

dus als er op de knop vergelijken geklikt wordt moet er een actie uitgevoerd worden.

en op verwijderen en doorsturen ook.

Dus de form action kan ik op deze manier niet gebruiken.

wel gebruik ik inderdaad product[]

<form metod="post" action="switch.php">
<input type="hidden" name="action" value="vergelijk">
//**//Hier de rest van mijn code (min de form tag)


switch.php :


<?php
    switch ($_POST["action"])
    {
    case "vergelijk" : {include("vergelijk.php")} break;
    case "doorsturen" : {include("doorsturen.php")} break;
    case "verwijderen" : {include("verwijderen.php")} break;
    }
?>


verder kun je in de pagins gewoon met $_POST doorwerken volgens mij :)
ik begrijp je niet helemaal.

Hoe wordt er dan aangegeven of het om vergelijken, doorsturen of verwijderen gaat?

hierdoor misschien ?

<input type="submit" value="vergelijk">
<input type="hidden" name="action" value="vergelijk">
case "vergelijk" : {include("vergelijk.php")} break;

<input type="submit" value="verwijderen">
<input type="hidden" name="action" value="verwijderen">
case "verwijderen" : {include("vergelijk.php")} break;
Nee

Form :


<form metod="post" action="switch.php">
<input type="hidden" name="action" value="vergelijk">
<checkbox name="product[]" value="1">
<checkbox name="product[]" value="2">
<checkbox name="product[]" value="3">
<checkbox name="product[]" value="4">
<input type="submit" value="vergelijk">
</form>


switch.php

<?php
    switch ($_POST["action"])
    {
    case "vergelijk" : {include("vergelijk.php")} break;
    case "doorsturen" : {include("doorsturen.php")} break;
    case "verwijderen" : {include("verwijderen.php")} break;
    }
?> 


In je hidden veld zeg je wat je doen wilt. Dan zorgt switch.php dat de juiste pagina bij die actie in beeld komt :) Lees anders op php.net even wat switch precies doet :)
de switch doet eigenlijk het volgende:
je geeft hem een waarde ($_POST['action'] in dit geval)
Daarna geef je hem enkele opties die de waarde kan bevatten, de cases. Zodra z'n case overeenkomt, voert hij hetgeen uit wat achter de dubbele punt staat.

Eigenlijk zou je voor de volledigheid ook nog op het einde default: ....doe iets; break;
moet toevoegen, dit voert hij dan uit als er geen cases overeen komen.

Maar op php.net staat inderdaad ook een mooie uitleg als het goed is.
Ok dat snap ik opzich wel

maar omdat er in het form maar 1 knop staat (vergelijk)

moet het dan zo worden of ben ik nou gek:

<form metod="post" action="switch.php">
<input type="hidden" name="action" value="vergelijk">
<input type="hidden" name="action" value="verwijder">
<input type="hidden" name="action" value="doorsturen">
<checkbox name="product[]" value="1">
<checkbox name="product[]" value="2">
<checkbox name="product[]" value="3">
<checkbox name="product[]" value="4">
<input type="submit" value="vergelijk">
<input type="submit" value="verwijder">
<input type="submit" value="doorsturen">
</form>
@Ferdi, nee, dat niet.
Jacco bedoelt waarschijnlijk dat je voor elke actie een aparte form moet maken.
Dus je houdt altijd maar 1 hidden field, en dat krijgt dan de value met wat je wilt doen.

Ik vind dit persoonlijk alleen niet echt handig en zou pas na het verzenden van je formulier bepalen wat de gebruiker wil doen.
Ok ik snap wat je bedoeld maar dan krijg ik voor elk product 3 checkboxen
of ook niet?
ook niet :)

Stel :


<a href="pagina.php?action=Vergelijk">Vergelijk</a>
<a href="pagina.php?action=Doorsturen">Doorsturen</a>
<a href="pagina.php?action=Verwijderen">Verwijderen</a>


pagina.php


<form metod="post" action="switch.php">
<input type="hidden" name="action" value="<?php echo $_GET["action"] ?>">
<checkbox name="product[]" value="1">
<checkbox name="product[]" value="2">
<checkbox name="product[]" value="3">
<checkbox name="product[]" value="4">
<input type="submit" value="<?php echo $_GET["action"] ?>">
</form>


switch.php

<?php
    switch ($_POST["action"])
    {
    case "Vergelijk" : { include("vergelijk.php"); } break;
    case "Doorsturen" : { include("doorsturen.php"); } break;
    case "Verwijderen" : { include("verwijderen.php"); } break;
    default : { include("vergelijk.php") } break;
    }
?> 


Hopelijk kun je nu weer iets verder :)

[edit]
even een default aan de switch toegevoegd
[/edit]

Reageren