Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[php]checkbox om data uit database te halen

Pagina: 1
Acties:
  • 408 views sinds 30-01-2008

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
ik heb 2 pagina's: een pagina met een checkbox form en ik wil de aangevinkte keuzes invoeren in een php-pagina. De pagina is nu zo gesteld dat alles weergegeven wordt. Dit moet dus aangepast worden om een deel te doen. Voor zover ik de tutorials op w3 en php.net begreep kan dit met WHERE-statements, maar hoe en in welke pagina ik dit zet, geen idee... Hopelijk kan iemand me dit zo uitleggen. Ik weet dat dit redelijk basic is, maar ik snap het gewoon echt niet. Hoe kan ik nu met die checkboxen iets maken zodat die keuze alleen weergegeven wordt? Er moeten trouwens meerdere van de checkboxen gekozen kunnen worden...

HTML:
1
2
3
<form action="geneesmiddel.php" method="post">
<table><tr><td class="normal" width="200px">
bla1</td><td class="normal"><input type="checkbox" name="bla1" value="bla1" class="toevoegen" /></td></tr></table>


PHP:
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
include("../../../config.php");
$var1=$_GET['var1'];
if($var1==""){$var1="geneesmiddel"; }
$var2=$_GET['var2'];
if($var2==""){$var2="werking"; }
$var3=$_GET['var3'];
if($var3==""){$var3="bijwerkingen"; }
$var4=$_GET['var4'];
if($var4==""){$var3="bijzonderheden"; }
$var5=$_GET['var5'];
if($var5==""){$var3="zwangerschap"; }

$result = mysql_query("SELECT * FROM geneesmiddel {volgens mij moet hier die WHERE optie} ORDER BY ".$var1." ASC");
?>
<?
while($row = mysql_fetch_array($result))
{
echo "<b>" . $row['geneesmiddel'] . "</b><br />";
echo "<b>Werking:</b><br />" . $row['werking'] . "<br />";
echo "<b>Bijwerkingen:</b><br />" . $row['bijwerkingen'] . "<br />";
echo "<b>Bijzonderheden:</b><br />" . $row['bijzonderheden'] . "<br />";
echo "<b>Zwangerschap:</b><br />" . $row['zwangerschap'] . "<br /><br />";
echo " ";
}
mysql_close($connect);

[ Voor 0% gewijzigd door een moderator op 28-12-2007 16:45 . Reden: Code tags gefix0red ]


  • Copyman
  • Registratie: Januari 2001
  • Laatst online: 19:18

Copyman

Dode muis

Ik snap niet zo goed wat je exact wil, maar als je gebruik wil maken van de WHERE clausule, dan ben je met SQL bezig. Je moet dan de volgende syntax aanhouden:

code:
1
SELECT * FROM tabel WHERE kolom = $var ORDER BY kolom ASC


http://www.w3schools.com/sql/sql_where.asp

Zoals je zelf ook aangeeft gaat dit waarschijnlijk om iets heel basic. Je zou kunnen proberen om zelf verder te zoeken, of je omschrijving zodanig aan te passen dat het wat duidelijker is wat je precies wil.

edit:
Na een paar keer lezen denk ik wel te weten wat je precies wil, aan de hand van de geselecteerde checkboxes wil je het resultaat van je query beïnvloeden?

[ Voor 14% gewijzigd door Copyman op 28-12-2007 10:35 ]

Zeer belangrijke informatie: Inventaris


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
ik wil graag een dynamische bijsluiter maken voor geneesmiddelen. Nu heb ik een form gemaakt met checkboxen. Ik wil dus in het geval dat twee checkboxen (2 geneesmiddelen) er alleen die twee weergegeven worden.

Ik dacht dat het php was, omdat je daarmee de query uitvoert... Vandaar...

Edit:
Ik heb nu deze regel aangepast zodat er een variabele WHERE komt.
PHP:
1
$result = mysql_query("SELECT * FROM geneesmiddel WHERE geneesmiddel=".$var1." ORDER BY ".$var1." ASC");


Maar hoe kan ik dit nu aanpassen in mijn html-file?

[ Voor 31% gewijzigd door Paultje3181 op 28-12-2007 11:22 ]


Verwijderd

Je moet er even mee rekening houden dat de waarde van een checkbox via GET alleen binnenkomt als deze is aangevinkt. Ga je dus een var uitlezen die niet gechecked was dan krijg je al een warning. Ik zou dus voor elke var isset() gebruiken om te kijken of een bepaalde checkbox is geset.

Je kan ook gewoon alle GET-vars doorlopen, en als de var een checkbox is die je bedoelt zet je deze voorwaarde in je WHERE-clause. Nogal basic idd, waar het op neer komt is eigenlijk dit:

code:
1
2
3
4
loop alle $_GET['vars']{
     is deze var een checkbox?
           ja -> zet "var=1" in de WHERE-clause
}


edit:
Ik denk dat je eerst het verschil tussen PHP en HTML moet begrijpen voordat je hier mee verder gaat, ik heb het idee dat je nog niet helemaal het verschil ziet tussen client-side en server-side :)

[ Voor 14% gewijzigd door Verwijderd op 28-12-2007 11:24 ]


Verwijderd

Je doet een select op var1, die haal je op met $_GET, dus je checkbox name moet dan ook var1 zijn , als ik je vraag tenminste goed begrijp.

  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
Ik heb van de eerste html ook php gemaakt zodat ik daar een variabele in kan plaatsen. Maar moet ik hier dan die isset() in plaatsen? Dus op deze manier? Of moet dit op een andere manier? Voel me echt dom hierin... Maar ik snap de uitleg van w3 of weberdev ofzo gewoon niet...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include("../../../config.php");
$var1=$_GET['var1'];
if($var1==""){$var1="geneesmiddel"; }
if (isset($var1)) {
}

$result = mysql_query("SELECT * FROM geneesmiddel WHERE geneesmiddel=".$var1." ORDER BY ".$var1." ASC");
?>
<?
while($row = mysql_fetch_array($result))
{
echo "<tr><td class=\"normal\" width=\"200px\">";
echo $row['geneesmiddel'] . "</td><td><input type=\"checkbox\" name=var1 value=\"" . $row['geneesmiddel'] . "\" /></td></tr><tr><td class=\"normal\">";
}

mysql_close($connect);
?>


De naam van de checkbox is nu veranderd naar var1. Nu krijg ik echter een fout in de 2e php-file...
Dit gedeelte geeft ie fout aan:

$result = mysql_query("SELECT * FROM geneesmiddel WHERE geneesmiddel=".$var1." ORDER BY ".$var1." ASC");
?>
<?

En dit is de fout:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home
while($row = mysql_fetch_array($result))
{

[ Voor 20% gewijzigd door Paultje3181 op 28-12-2007 14:23 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Tja, dan begin je opnieuw met een PHP tutorial, want je mist gewoon de basics over variabelen en functies.

{signature}


  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-09 20:59
Neem anders is gewoon de documentatie op php.net door.

If I can't fix it, it ain't broken.


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
Maar waar moet ik dan op zoeken? Zonder nuttige tips kom je ook niet echt verder...
Ik heb de ene php file nu zover dat er bij een vinkje een variabele doorgegeven wordt. Maar deze wordt niet goed weergegeven door de tweede pagina.

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/bla... on line 43.

Het gaat om dit stukje. Regel 43 is de eerste echo. De fout zit dus in de $row of de $result lijkt mij...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$result = mysql_query("SELECT * FROM geneesmiddel WHERE geneesmiddel=".$var1." ORDER BY ".$var1." ASC") or die ('Error: '.mysql_error ())');
?>
<?
while($row = mysql_fetch_array($result))
{
echo "<table><tr><td class=\"normal\"><b>" . $row['geneesmiddel'] . "</b></td></tr>";
echo "<tr><td class=\"normal\" width=\"100\"><i>Werking:</i></td><td class=\"normal\">" . $row['werking'] . "</td></tr>";
echo "<tr><td class=\"normal\" width=\"100\"><i>Bijwerkingen:</i></td><td class=\"normal\">" . $row['bijwerkingen'] . "</td></tr>";
echo "<tr><td class=\"normal\" width=\"100\"><i>Bijzonderheden:</i></td><td class=\"normal\">" . $row['bijzonderheden'] . "</td></tr>";
echo "<tr><td class=\"normal\" width=\"100\"><i>Zwangerschap:</i></td><td class=\"normal\">" . $row['zwangerschap'] . "</td></tr></table><br />";
echo " ";
}

[ Voor 87% gewijzigd door Paultje3181 op 28-12-2007 14:42 ]


  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 18-09-2019
En natuurlijk het 'inspringen' om je code overzichtelijk te houden.

| www.everythingisspiritual.com | www.mosaic.org |


  • Paultje3181
  • Registratie: November 2002
  • Laatst online: 19:06
dat maakt toch verder niet uit voor de code? Of wel?

Verwijderd

nee dat maakt inderdaad niet uit, maar maakt alles wel veel overzichtelijker.

  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

De fout zit hem in je "or die". Bekijk de enkele quotes maar eens goed.

Overigens ben ik het met de posters hierboven eens. Als je al struikelt over het debuggen van je script, en je hebt moeite om te begrijpen waar je precies mee bezig bent, dan is het echt geen luxe om nog eens een tutorial te hand te nemen voor je aan een daadwerkelijk projectje begint.

[ Voor 106% gewijzigd door Crayne op 28-12-2007 16:31 ]

Mijn Library Thing catalogus


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar hoort mijn topic?
WEB >> PRG

Verder geeft onze syntax highlighter prima aan waar de fout zit (zie de rode code en de rode streep in je code) en is dit redelijk basic PHP/SQL en gewoon een escaping probleem. Ik adviseer je dan ook nog eens een tutorial door te nemen van betreffende onderwerpen, want dit moet je prima zelf op kunnen lossen (zie eventueel ook nog Debuggen: Hoe doe ik dat?)

Vanwege het basic niveau en het hoge "hou mijn handje eens vast" gehalte gaat dit topic dan ook op slot. We zien hier toch écht graag nét wat meer eigen inzet dan "dat maakt toch verder niet uit voor de code? Of wel?"

[ Voor 85% gewijzigd door RobIII op 28-12-2007 16:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.