[PHP] waarde van meerdere checkboxen doorgeven

Pagina: 1
Acties:
  • 527 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Vernie
  • Registratie: December 2002
  • Laatst online: 03-02-2022
Hey hallo,

Ik zit met het volgende probleem.. ik moet voor een stage opdracht een website bouwen in php die het mogelijk maakt om meerdere dingen aan te vinken en deze door te geven aan een tweede pagina zodat ik op de tweede pagina de detail info kan laten zien van alles dat aangevinkt is.

ik werk met php en een MSSQL server..

Ik hoop dat dit duidelijk uitgelegd is... :?

nu heb ik t volgende

index1.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
//Gegevens voor de connectie
$dns="SERVER";
$username="USERNAME";
$password="PASSWORD";
// verbinding maken met de DB en query uitvoeren.
$sqlconnect=odbc_connect($dns,$username,$password);
$sqlquery="SELECT * FROM Employees;";
$process=odbc_exec($sqlconnect, $sqlquery);
?>
<html><body>
<form action="index2.php">

<?php
$i=0;
//resultaten van de query neerzetten totdat er geen resultaten meer zijn.
while( odbc_fetch_array($process))
            {
                  $ID = odbc_result($process,"Emp_ID");

$i++;
                echo ""
                ."<label>"
                ."<input type=\"checkbox\" name=\"$i\" value=\"$ID\" /> ";
                echo "$ID </label><br>";

                            }

        odbc_close($sqlconnect);

?>
<br>
<input name="submit" type="submit" value="submit" />
</form>
</body></html>


index2.php
In deze pagina wil ik dan de details laten zien van alles wat geselecteerd is.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php


$tjakka = $_GET['$i'];


//Gegevens voor de connectie
$dns="SERVER";
$username="USERN";
$password="PASSW";
// verbinding maken met de DB en query uitvoeren.
$sqlconnect=odbc_connect($dns,$username,$password);
$sqlquery="SELECT * FROM Employees WHERE Emp_ID = '".$tjakka."'";

$process=odbc_exec($sqlconnect, $sqlquery);



while( odbc_fetch_array($process))
{
$Name = odbc_result($process,"Name");

echo $Name;
}

?>


Ik hoop dat jullie mij hiermee kunnen helpen aangezien ik nog niet heel erg lang bezig ben met php..

Free your mind and your OS will follow.


Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 00:22

DizzyWeb

Ondertiteld

Wat is je vraag nu?

Acties:
  • 0 Henk 'm!

  • Frash
  • Registratie: Mei 2002
  • Laatst online: 21-09 13:28
Ik zou even je formulier laten lopen naar een php bestand met
code:
1
<?php phpinfo(); ?>


Dit laat niet alleen alle PHP gegevens zien, maar ook alle variabelen die het script toegezonden kreeg. Aan de hand daarvan kun je die variabelen aanroepen. (Doe evt. een CTRL-F met de naam van je variabele)

Acties:
  • 0 Henk 'm!

  • Vernie
  • Registratie: December 2002
  • Laatst online: 03-02-2022
Ik dacht al dat het niet helemaal duidelijk was maar.. het is dus de bedoeling.. dat ik op de eerstepagina {index1.php} een overzicht krijg van alle id's en deze weergeef met een checkbox. \\ dit is gelukt.

nu wil ik de aangvinkte checkboxen doorgeven aan index2.php zodat ik hier alle details van de betreffende id kan laten zien..

nu krijg ik het alleen maar voor elkaar om slechts de laatste aangevinkt door te geven.. maar hij moet alles door geven..

dus de vraag...

hoe krijg ik het voor elkaar dat hij alles doorgeeft wat aangevinkt is en niet alleen de laatste..

hoop dat t nu duidelijker omschreven staat |:(

Free your mind and your OS will follow.


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Waarom zou je al die checkboxes allemaal een andere naam geven? Het is denk ik makkelijker om ze allemaal in een array te stoppen:
PHP:
1
                ."<input type=\"checkbox\" name=\"employeeid[]\" value=\"$ID\" /> ";


Daarna komen ze in $_POST['employeeid'] als array terug. Die kun je imploden met komma's ertussen, en daarna met een WHERE field IN(...) de juiste rijen ophalen.

In jouw geval als $_GET['employeeid'], hoewel ik niet zeker weet of arrays via GET goed worden doorgegeven.

[ Voor 12% gewijzigd door GlowMouse op 08-05-2007 13:00 ]


Acties:
  • 0 Henk 'm!

  • Vernie
  • Registratie: December 2002
  • Laatst online: 03-02-2022
Bedank voor je reactie ik ga het meteen even uitproberen.. als het gelukt is laat ik weten hoe...

Free your mind and your OS will follow.


Acties:
  • 0 Henk 'm!

Verwijderd

uiteindelijk zal de checkbox met een identieke naam, bijvoorbeeld naam[], een array teruggeven, deze zal je dan ook moeten doorlopen (foreach) om een dynamische WHERE te bouwen, wat je namelijk wil is dat er meerdere uit de db worden geselecteerd, je zal dan iets moeten krijgen van WHERE id=1 OR id=3 OR id=7

Acties:
  • 0 Henk 'm!

  • Vernie
  • Registratie: December 2002
  • Laatst online: 03-02-2022
Ok gefixt.... thnx voor de hulp...

zo werkt hij goed.

index1.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
// index1.php
//Gegevens voor de connectie
$dns="SERVER";
$username="USERNA";
$password="PASS";
// verbinding maken met de DB en query uitvoeren.
$sqlconnect=odbc_connect($dns,$username,$password);
$sqlquery="SELECT * FROM Employees;";
$process=odbc_exec($sqlconnect, $sqlquery);
?>
<html><body>
<form action="index2.php" method="post"
>


<?php
$i=0;
//resultaten van de query neerzetten totdat er geen resultaten meer zijn.
while( odbc_fetch_array($process))
            {
                  $ID = odbc_result($process,"Emp_ID");

$i++;
                echo ""
                ."<label>"
                ."<input type=\"checkbox\" name=\"value[]\" value=\"$ID\" /> ";
                echo "$ID </label><br>";

                            }

        odbc_close($sqlconnect);

?>
<br>
<input name="submit" type="submit" value="submit" />
</form>
</body></html>

index2.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
//index2.php
//Gegevens voor de connectie
$dns="SERV";
$username="USER";
$password="PASS";


if(isset($_POST['value']))
{
    $checkboxes = $_POST['value'];
    $string = implode($checkboxes ,",");

}

// verbinding maken met de DB en query uitvoeren.
$sqlconnect=odbc_connect($dns,$username,$password);
$sqlquery = "SELECT * FROM Employees WHERE (Emp_ID IN ($string))";

$process=odbc_exec($sqlconnect, $sqlquery);
while( odbc_fetch_array($process))
{
$Name = odbc_result($process,"Name");

echo "$Name <BR>";
}


?>

Free your mind and your OS will follow.


Acties:
  • 0 Henk 'm!

Verwijderd

en wat nu als je een leeg formulier opstuurt?

edit: er vanuitgaande dat je opdracht is het maken van een robuust programma(tje)

[ Voor 48% gewijzigd door Verwijderd op 08-05-2007 15:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Werkt het ook als je de eerste checkbox niet invult?
Ik dacht dat de array dan leeg bleef.

Acties:
  • 0 Henk 'm!

Verwijderd

@shroomy... hij stuurt gewoon een array door met de geselecteerde waardes, dit zijn er dus 0 tot n afhankelijk van het aantal keuzes en ongeacht of je de eerste wel of niet aanvinkt, echter een lege array sturen gaat bij index2.php in het geval van vernie niet goed!

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Daarnaast moet je wel even controleren of er wel slechts integers worden doorgegeven, anders heb je last van SQL injection.

Acties:
  • 0 Henk 'm!

  • Vernie
  • Registratie: December 2002
  • Laatst online: 03-02-2022
Ik ben bezig om verschillende check in te bouwen zodat als er geen checkbox aangevinkt word er een melding komt zodat dit afgevangen wordt.

Free your mind and your OS will follow.


Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

Zo check ik meestal:

PHP:
1
2
3
4
5
6
7
8
9
10
if (isset($_POST['checkboxes']) && is_array($_POST['checkboxes']))
{
foreach ($_POST['checkboxes'] as $id => $value)
{
if (is_numeric($value))
{
// doe wat
}
}
}

iOS developer

Pagina: 1