Ik heb een zoekscript. Met checkbox kunnen mensen wensen ingeven en worden zo meegegeven in de url (www.blalbla.nl/zoek.php?faciliteit_id%5B%5D=32&faciliteit_id%5B%5D=34)

Nu heb ik een probleem als er meerdere items worden meegegeven. Uit de url wordt het zo gehaald (ik weet dat het niet goed is hoe het gemaakt is, maar weet niet hoe het wel moet):

$ee = 0;
            if(isset($_GET['faciliteit_id']) && $_GET['faciliteit_id'] != "0")
            
            {
                $ff = count($_GET['faciliteit_id']); 
            }
            else
            {
                $ff = 0;
            }
            while ($ee < $ff) 
            {        
                if(isset($faciliteit_id[$ee]) AND $faciliteit_id[$ee] != "")
                {                
                    $query4 = mysql_query("SELECT * FROM hotel_faciliteiten WHERE fac_id = '$faciliteit_id[$ee]'",$link) 
                    or mooie_mysql_error($_SERVER['PHP_SELF']);
                
            $catjoin = "AND fac.hotel_id = a.hotel_id";

            $catget = ",hotel_faciliteiten AS fac";

            $zoek .= " AND fac.fac_id = '$faciliteit_id[$ee]' ";
                    
            }
                
                $ee++;
            }


Nu gaat het erom hoe ik regel 19 tot en met 22 moet maken dat als er meerdere variabele meegegeven het ook werkt.
Als je hier code dumpt, gebruik dan [ignore]
 en 
[/ignore] tags.
Ik volg d'r nu geen hout van (ga iig de moeite er niet voor doen).
Kijk ook naar [php]mysql_real_escape_string[/php].
Zoiets?


<?php
	ini_set ('display_errors', 1);
	error_reporting (E_ALL | E_STRICT);

	$sql = null;
	
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
		if (isset ($_POST['cat'])) {
		$sql = "
			SELECT veld1, veld2
			FROM tabelnaam
			WHERE
			cat IN(" . implode (',', $_POST['cat']) . ")
		";
		}
	}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Jan Koehoorn | PHPhulp | Checkbox search</title>

		<style type="text/css" media="screen">
			div#container					{margin: 20px auto; width: 620px; padding: 20px; border: 1px solid #ccc;}
			pre								{padding: 0 10px; border: 1px solid #00f; color: #00f;}
			pre,
			input,
			body							{font: 11px "Lucida Sans Unicode", sans-serif;}
			form div						{overflow: hidden; width: 100%; margin: 0 0 10px 0; padding: 0 0 10px 0; border-bottom: 1px dotted #ccc;}
			form div label					{float: left; width: 100px; cursor: pointer;}
			form div input[type=text]		{float: left; border: 1px solid #ccc; padding: 2px 4px; width: 200px;}
			input[type=text]:focus			{color: #f66; border: 1px solid #f66;}
			form span.err					{color: #f66; margin: 0 0 0 10px;}
			legend							{border: 1px solid #ccc; padding: 2px 4px;}
			fieldset						{border: 1px solid #ccc; padding: 20px;}
			form em							{color: #666;}
		</style>
	
	</head>
	
	<body>
		<div id="container">
		<?php
			if ($_SERVER['REQUEST_METHOD'] == 'POST') {
				echo '<pre>' . print_r ($_POST, true) . '</pre>';
				echo '<pre>' . print_r (htmlentities ($sql), true) . '</pre>';
			}
		?>
		<form method="post">
			<div>
				<input id="cat1" name="cat[]" type="checkbox" value="cat1" />
				<label for="cat1">categorie 1</label>
			</div>
			<div>
				<input id="cat2" name="cat[]" type="checkbox" value="cat2" />
				<label for="cat2">categorie 2</label>
			</div>
			<div>
				<input id="cat3" name="cat[]" type="checkbox" value="cat3" />
				<label for="cat3">categorie 3</label>
			</div>
			<div>
				<input id="cat4" name="cat[]" type="checkbox" value="cat4" />
				<label for="cat4">categorie 4</label>
			</div>
			<div>
				<input id="cat5" name="cat[]" type="checkbox" value="cat5" />
				<label for="cat5">categorie 5</label>
			</div>
			<div>
				<input type="submit" value="zoeken" />
			</div>
		</form>
		</div>
	</body>
</html>
Ik denk inderdaad zoiets als bovenstaand.

Alleen dan met zoiets (het is een toevoeging van een script):


 $catjoin = "AND fac.hotel_id = a.hotel_id";

            $catget = ",hotel_faciliteiten AS fac";

            $zoek .= " AND fac.fac_id = '$faciliteit_id[$ee]' ";
              
Als ik het zo doe bij faciliteit_id 10 en 44:

$zoek .= " AND fac.fac_id IN (" . implode (',', $_GET['faciliteit_id']) . ")";


Krijg ik als resultaat het id die 10 heeft en 44 heeft, maar niet het id die 10 & 44 heeft.

Wellicht moet ik ook vermelden, het staat als volgt in de database:
numfac_id - fac_id - id
6000 - 10 - 1
6001 - 44 - 1
6002 - 38 - 2

Reageren