Zoekscript met checkbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Ryan Destin

Ryan Destin

21/12/2011 09:46:53
Quote Anchor link
Ik heb een tabel

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
 
PHP hulp

PHP hulp

29/04/2024 10:00:16
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/12/2011 11:17:05
Quote Anchor link
Ik zou daarvan op zijn minst drie tabellen maken, jou opzet voldoet aan de normalistaie 'regels'
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)
PHP script in nieuw venster Selecteer het PHP script
1
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";
}

?>
Gewijzigd op 21/12/2011 12:57:19 door Ger van Steenderen
 
Ryan Destin

Ryan Destin

21/12/2011 12:15:37
Quote Anchor link
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?

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)
PHP script in nieuw venster Selecteer het PHP script
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
<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)
PHP script in nieuw venster Selecteer het PHP script
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
<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
 
- SanThe -

- SanThe -

21/12/2011 12:46:24
Quote Anchor link
Regel 31 mist een )
 
Ryan Destin

Ryan Destin

21/12/2011 12:49:09
Quote Anchor link
Ja klopt, nu krijg ik de volgende,
Notice: Undefined index: plaatsnaam in C:\Users\Ryan\Desktop\webserver\root\test2.php on line 34
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/12/2011 13:01:09
Quote Anchor link
Je moet natuurlijk in de html de select wel de naam plattsnaam hebben staan
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?

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
 
- SanThe -

- SanThe -

21/12/2011 13:04:00
Quote Anchor link
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


Ook zelf een beetje nadenken natuurlijk.
$_POST['plaatsnaam'] bestaat niet.
 
Ryan Destin

Ryan Destin

21/12/2011 13:28:01
Quote Anchor link
Nee ik heb er ook echt niet zo veel verstand van.
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?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/12/2011 13:45:46
Quote Anchor link
Geeft niet, daar is dit forum voor.
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
 
Ryan Destin

Ryan Destin

21/12/2011 14:40:32
Quote Anchor link
Ik heb nu dit,
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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.';
    }
}

?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
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";
}

?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/12/2011 16:25:49
Quote Anchor link
Ik ben een beetje aan het twijfelen, ik kan je best op weg helpen met je originele tabel maar dan help ik verkeerd op weg:
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.
 
Ryan Destin

Ryan Destin

21/12/2011 18:14:26
Quote Anchor link
Als eerst wilde ik even zeggen dat ik t super vind dat julle me helpen

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.
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.