Zoekscript met checkbox
Tabelnaam: testtabel
En daarin staat: VOORBEELD:
id int(3) 1
camping_naam varchar(15) Camping zaansa schand
camping_plaats varchar(11) Renesse
Camping_zwembad varchar(3) Ja
camping_bowling varchar(3) Nee
camping_fietsverhuur varchar(3) Ja
Tabel 1: campings
camping_id -> int(11)
camping_naam -> varchar(30)
camping_plaats -> varchar(20)
Tabel 2: campinginfo
info_id -> tinyint(4)
info_naam -> varchar(15)
Tabel 3: campings_campinginfo
camping_id -> int(11)
info_id -> tinyint(4)
Je php zou er dan ongeveer zo uitzien:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// je moet van de chechboxen in html een array maken
// <input type="checkbox" name="info[]" value="0" />
if (!isset($_POST['info']))
$sql = "SELECT camping_naam FROM campings WHERE
camping_plaats='"
. mysql_real_escape_string($_POST['plaatsnaam']) . "'";
else {
$sql = "SELECT c.camping_naam FROM campings c
JOIN campings_campinginfo i USING camping_id
WHERE c.camping_plaats='" .
mysql_real_escape_string($_POST['plaatsnaam']) .
"' AND i.info_id IN (" .
mysql_real_escape_string(implode(',', $_POST['info'])) . ")"
. " GROUP BY i.camping_id";
}
?>
// je moet van de chechboxen in html een array maken
// <input type="checkbox" name="info[]" value="0" />
if (!isset($_POST['info']))
$sql = "SELECT camping_naam FROM campings WHERE
camping_plaats='"
. mysql_real_escape_string($_POST['plaatsnaam']) . "'";
else {
$sql = "SELECT c.camping_naam FROM campings c
JOIN campings_campinginfo i USING camping_id
WHERE c.camping_plaats='" .
mysql_real_escape_string($_POST['plaatsnaam']) .
"' AND i.info_id IN (" .
mysql_real_escape_string(implode(',', $_POST['info'])) . ")"
. " GROUP BY i.camping_id";
}
?>
Gewijzigd op 21/12/2011 12:57:19 door Ger van Steenderen
Bedankt voor de reactie.
Ik vroeg me af waarom het beter is om verschillende tabellen te gebruiken.
Als ik de campings in tabel 1 heb en ik wil de info van die camping uit tabel 2 halen moet hij toch op een of andere manier gekoppeld zijn aan elkaar, of gaat dat met de id?
Ik ga even kijken of ik er wat mee kan.......
Toevoeging op 21/12/2011 12:38:17:
Heb hem even beetje ingevult en getest.
ERROR: Parse error: syntax error, unexpected T_VARIABLE in C:\Users\Ryan\Desktop\webserver\root\test2.php on line 32
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
39
40
41
42
43
44
45
46
47
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nieuwe pagina 1</title>
</head>
<body>
<?php
$con = mysql_connect("localhost", "root", "usbw");
if(!$con) {
echo mysql_error() . ' Tijdens het verbinden.';
} else {
$sel = mysql_select_db("testfase", $con);
if(!$sel) {
echo mysql_error().' Tijdens het verbinden van de database.';
}
}
?>
<?php
//Maak de array
$array = Array ("html" => "pagina structuur", "php" => "dynamische paginas", "css" => "opmaak", "cgi" => "dynamische paginas");
?>
<input type="checkbox" name="info[]" value="0" />
<?php
if (!isset($_POST['info'])
$sql = "SELECT camping_naam FROM campings WHERE
camping_plaats='"
. mysql_real_escape_string($_POST['plaatsnaam']) . "'";
else {
$sql = "SELECT c.camping_naam FROM campings c
JOIN campings_campinginfo i USING camping_id
WHERE c.camping_plaats='" .
mysql_real_escape_string($_POST['plaatsnaam']) .
"' AND i.info_id IN (" .
mysql_real_escape_string(implode(',', $_POST['info'])) . ")"
. " GROUP BY i.camping_id";
}
?>
</body>
</html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nieuwe pagina 1</title>
</head>
<body>
<?php
$con = mysql_connect("localhost", "root", "usbw");
if(!$con) {
echo mysql_error() . ' Tijdens het verbinden.';
} else {
$sel = mysql_select_db("testfase", $con);
if(!$sel) {
echo mysql_error().' Tijdens het verbinden van de database.';
}
}
?>
<?php
//Maak de array
$array = Array ("html" => "pagina structuur", "php" => "dynamische paginas", "css" => "opmaak", "cgi" => "dynamische paginas");
?>
<input type="checkbox" name="info[]" value="0" />
<?php
if (!isset($_POST['info'])
$sql = "SELECT camping_naam FROM campings WHERE
camping_plaats='"
. mysql_real_escape_string($_POST['plaatsnaam']) . "'";
else {
$sql = "SELECT c.camping_naam FROM campings c
JOIN campings_campinginfo i USING camping_id
WHERE c.camping_plaats='" .
mysql_real_escape_string($_POST['plaatsnaam']) .
"' AND i.info_id IN (" .
mysql_real_escape_string(implode(',', $_POST['info'])) . ")"
. " GROUP BY i.camping_id";
}
?>
</body>
</html>
Toevoeging op 21/12/2011 12:38:57:
Heb hem even beetje ingevult en getest.
ERROR: Parse error: syntax error, unexpected T_VARIABLE in C:\Users\Ryan\Desktop\webserver\root\test2.php on line 32
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
39
40
41
42
43
44
45
46
47
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nieuwe pagina 1</title>
</head>
<body>
<?php
$con = mysql_connect("localhost", "root", "usbw");
if(!$con) {
echo mysql_error() . ' Tijdens het verbinden.';
} else {
$sel = mysql_select_db("testfase", $con);
if(!$sel) {
echo mysql_error().' Tijdens het verbinden van de database.';
}
}
?>
<?php
//Maak de array
$array = Array ("html" => "pagina structuur", "php" => "dynamische paginas", "css" => "opmaak", "cgi" => "dynamische paginas");
?>
<input type="checkbox" name="info[]" value="0" />
<?php
if (!isset($_POST['info'])
$sql = "SELECT camping_naam FROM campings WHERE
camping_plaats='"
. mysql_real_escape_string($_POST['plaatsnaam']) . "'";
else {
$sql = "SELECT c.camping_naam FROM campings c
JOIN campings_campinginfo i USING camping_id
WHERE c.camping_plaats='" .
mysql_real_escape_string($_POST['plaatsnaam']) .
"' AND i.info_id IN (" .
mysql_real_escape_string(implode(',', $_POST['info'])) . ")"
. " GROUP BY i.camping_id";
}
?>
</body>
</html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nieuwe pagina 1</title>
</head>
<body>
<?php
$con = mysql_connect("localhost", "root", "usbw");
if(!$con) {
echo mysql_error() . ' Tijdens het verbinden.';
} else {
$sel = mysql_select_db("testfase", $con);
if(!$sel) {
echo mysql_error().' Tijdens het verbinden van de database.';
}
}
?>
<?php
//Maak de array
$array = Array ("html" => "pagina structuur", "php" => "dynamische paginas", "css" => "opmaak", "cgi" => "dynamische paginas");
?>
<input type="checkbox" name="info[]" value="0" />
<?php
if (!isset($_POST['info'])
$sql = "SELECT camping_naam FROM campings WHERE
camping_plaats='"
. mysql_real_escape_string($_POST['plaatsnaam']) . "'";
else {
$sql = "SELECT c.camping_naam FROM campings c
JOIN campings_campinginfo i USING camping_id
WHERE c.camping_plaats='" .
mysql_real_escape_string($_POST['plaatsnaam']) .
"' AND i.info_id IN (" .
mysql_real_escape_string(implode(',', $_POST['info'])) . ")"
. " GROUP BY i.camping_id";
}
?>
</body>
</html>
Klopt het verder een beetje of nog steeds geen zak?
Toevoeging op 21/12/2011 12:39:21:
owjah de db tabellen heb ik ingevoegt en ingevult
Regel 31 mist een )
Notice: Undefined index: plaatsnaam in C:\Users\Ryan\Desktop\webserver\root\test2.php on line 34
Ryan Destin op 21/12/2011 12:15:37:
Hey,
Bedankt voor de reactie.
Ik vroeg me af waarom het beter is om verschillende tabellen te gebruiken.
Als ik de campings in tabel 1 heb en ik wil de info van die camping uit tabel 2 halen moet hij toch op een of andere manier gekoppeld zijn aan elkaar, of gaat dat met de id?
Bedankt voor de reactie.
Ik vroeg me af waarom het beter is om verschillende tabellen te gebruiken.
Als ik de campings in tabel 1 heb en ik wil de info van die camping uit tabel 2 halen moet hij toch op een of andere manier gekoppeld zijn aan elkaar, of gaat dat met de id?
Dat is beter omdat je een database zo moet opzetten dat je achteraf nooit meer iets hoeft te wijzigen aan de structuur van de tabellen, dan blijft de database beter beheersbaar.
Tabel 3 is de koppeltabel
Ryan Destin op 21/12/2011 12:49:09:
Ja klopt, nu krijg ik de volgende,
Notice: Undefined index: plaatsnaam in C:\Users\Ryan\Desktop\webserver\root\test2.php on line 34
Notice: Undefined index: plaatsnaam in C:\Users\Ryan\Desktop\webserver\root\test2.php on line 34
Ook zelf een beetje nadenken natuurlijk.
$_POST['plaatsnaam'] bestaat niet.
Html kan ik wel aardig en ik deed vooral veel php aanpassen van bestaande scripts.
Nu wilde ik proberen iets zelf te maken, dus t gaat nogal stroef.
Maar ik moet een soort van formulier maken die de checkbox herkent en dan die $_POST['plaatsnaam'] erin verwerken?
Je hebt al een formulier in je eerste post, vervang in het script gewoon plaatsnaam door camping_plaats. En voeg de checkboxen array toe. Let wel dat values gelijk moeten zijn aan de id's
Ik denk dat ik t beste vanaf dit script kan verder werken anders wordt t zo een rommel met allemaal losse stukjes script hier en daar.
Dit is wat ik nu heb:
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
$con = mysql_connect("localhost", "root", "usbw");
if(!$con) {
echo mysql_error() . ' Tijdens het verbinden.';
} else {
$sel = mysql_select_db("testfase", $con);
if(!$sel) {
echo mysql_error().' Tijdens het verbinden van de database.';
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Stadskeuze</title>
</head>
<body>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
<input type="checkbox" name="camping_bowling" value="camping_bowling"> Bowlingbaan<br>
<input type="checkbox" name="camping_fietsverhuur" value="camping_fietsverhuur"> Fietsverhuur<br>
<input type="checkbox" name="camping_zwembad" value="camping_zwembad"> Zwembad<br>
<div align="left">Stadskeuze:<br></div>
<select name="camping_plaats">
<?php
$lQuery = "SELECT DISTINCT camping_plaats FROM testtabel";
$lResult = mysql_query($lQuery);
if($lResult) {
if(mysql_num_rows($lResult) > 0) {
while ($data = mysql_fetch_assoc($lResult)) {
echo '<option value="'.$data['camping_plaats'].'">'.$data['camping_plaats'].'</option>'."\n";
}
} else {
echo 'Zoeken, er zijn geen zoekresultaten!.';
}
} else {
echo mysql_error().' in query: '.$lQuery;
}
?>
</select>
<input type="submit" value="Verzenden" />
</div>
<?php
//gegevens op vragen.
if($_SERVER['REQUEST_METHOD'] == "POST") { // er is een formulier verzonden
if(!empty($_POST['camping_plaats'])) {
$camping_plaats = mysql_real_escape_string($_POST['camping_plaats']);
$sQuery = "SELECT camping_plaats, camping_naam, camping_bowling, camping_zwembad, camping_fietsverhuur
FROM testtabel
WHERE camping_plaats = '".$camping_plaats."'
ORDER BY camping_plaats asc";
$sResult = mysql_query($sQuery);
if($sResult) {
if(mysql_num_rows($sResult) > 0) {
//tabel opbouwen
echo '<table border="0">';
echo '<tr><th>Camping:</th><th>Plaats</th><th>Bowling</th><th>Zwembad</th><th>Fietsverhuur</th></tr>';
while ($sRow = mysql_fetch_assoc($sResult)) {
echo '<tr>';
echo '<td>' . $sRow['camping_naam'] . '</td>';
echo '<td>' . $sRow['camping_plaats'] . '</td>';
echo '<td>' . $sRow['camping_bowling'] . '</td>';
echo '<td>' . $sRow['camping_zwembad'] . '</td>';
echo '<td>' . $sRow['camping_fietsverhuur'] . '</td>';
echo '</tr>'."\n";
}
echo '</table>';
} else {
echo 'Geen records gevonden.';
}
} else {
echo mysql_error().' in query: '.$sQuery;
}
} else {
echo 'Er is geen plaatsnaam gekozen.';
}
}
?>
$con = mysql_connect("localhost", "root", "usbw");
if(!$con) {
echo mysql_error() . ' Tijdens het verbinden.';
} else {
$sel = mysql_select_db("testfase", $con);
if(!$sel) {
echo mysql_error().' Tijdens het verbinden van de database.';
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Stadskeuze</title>
</head>
<body>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
<input type="checkbox" name="camping_bowling" value="camping_bowling"> Bowlingbaan<br>
<input type="checkbox" name="camping_fietsverhuur" value="camping_fietsverhuur"> Fietsverhuur<br>
<input type="checkbox" name="camping_zwembad" value="camping_zwembad"> Zwembad<br>
<div align="left">Stadskeuze:<br></div>
<select name="camping_plaats">
<?php
$lQuery = "SELECT DISTINCT camping_plaats FROM testtabel";
$lResult = mysql_query($lQuery);
if($lResult) {
if(mysql_num_rows($lResult) > 0) {
while ($data = mysql_fetch_assoc($lResult)) {
echo '<option value="'.$data['camping_plaats'].'">'.$data['camping_plaats'].'</option>'."\n";
}
} else {
echo 'Zoeken, er zijn geen zoekresultaten!.';
}
} else {
echo mysql_error().' in query: '.$lQuery;
}
?>
</select>
<input type="submit" value="Verzenden" />
</div>
<?php
//gegevens op vragen.
if($_SERVER['REQUEST_METHOD'] == "POST") { // er is een formulier verzonden
if(!empty($_POST['camping_plaats'])) {
$camping_plaats = mysql_real_escape_string($_POST['camping_plaats']);
$sQuery = "SELECT camping_plaats, camping_naam, camping_bowling, camping_zwembad, camping_fietsverhuur
FROM testtabel
WHERE camping_plaats = '".$camping_plaats."'
ORDER BY camping_plaats asc";
$sResult = mysql_query($sQuery);
if($sResult) {
if(mysql_num_rows($sResult) > 0) {
//tabel opbouwen
echo '<table border="0">';
echo '<tr><th>Camping:</th><th>Plaats</th><th>Bowling</th><th>Zwembad</th><th>Fietsverhuur</th></tr>';
while ($sRow = mysql_fetch_assoc($sResult)) {
echo '<tr>';
echo '<td>' . $sRow['camping_naam'] . '</td>';
echo '<td>' . $sRow['camping_plaats'] . '</td>';
echo '<td>' . $sRow['camping_bowling'] . '</td>';
echo '<td>' . $sRow['camping_zwembad'] . '</td>';
echo '<td>' . $sRow['camping_fietsverhuur'] . '</td>';
echo '</tr>'."\n";
}
echo '</table>';
} else {
echo 'Geen records gevonden.';
}
} else {
echo mysql_error().' in query: '.$sQuery;
}
} else {
echo 'Er is geen plaatsnaam gekozen.';
}
}
?>
Om de checkboxen uit te voeren met de plaatsnaam drop-down menu moet ik deze 2 combineren denk ik, de oude in t bovenste script, en de nieuwe van jullie:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if (!isset($_POST['info'])
$sql = "SELECT camping_naam FROM campings WHERE
camping_plaats='"
. mysql_real_escape_string($_POST['plaatsnaam']) . "'";
else {
$sql = "SELECT c.camping_naam FROM campings c
JOIN campings_campinginfo i USING camping_id
WHERE c.camping_plaats='" .
mysql_real_escape_string($_POST['plaatsnaam']) .
"' AND i.info_id IN (" .
mysql_real_escape_string(implode(',', $_POST['info'])) . ")"
. " GROUP BY i.camping_id";
}
?>
if (!isset($_POST['info'])
$sql = "SELECT camping_naam FROM campings WHERE
camping_plaats='"
. mysql_real_escape_string($_POST['plaatsnaam']) . "'";
else {
$sql = "SELECT c.camping_naam FROM campings c
JOIN campings_campinginfo i USING camping_id
WHERE c.camping_plaats='" .
mysql_real_escape_string($_POST['plaatsnaam']) .
"' AND i.info_id IN (" .
mysql_real_escape_string(implode(',', $_POST['info'])) . ")"
. " GROUP BY i.camping_id";
}
?>
Je bent nu erg statisch bezig. stel nu dat er een camping is met eem midgetgolfbaan (of een whirlpool met leuke dames :P), hoe ga je dat dan oplossen?
Ik begrijp best dat je moeite hebt met ingewikkeldere queries, maar beter moeilijk en goed dan makkelijk en fout. Geef even aan hoe je verder wilt gaan.
Het moet wel goed in orde zijn aangezien er aardig wat campings zijn etc.
Maar ik weet niet hoe ik het moet aanpassen, ik doe mn bestet van alles proberen.
Het zou fijn zijn om in de toekOmst nog wat checkboxen erbij te kunnen maken dus ik hou jouw tabellen idee aan.