Zoekscript met checkbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Ryan Destin

Ryan Destin

20/12/2011 14:07:07
Quote Anchor link
Hallo,
Ik ben bezig met het ontwerpen van een zoekscript voor een vakantie website.
De bedoeling is om de zoekresultaten te verfijnen doormiddel van checkboxen aan te vinken.
Je zoekt op stad via een drop-down module en daaronder checkboxen met bijvoorbeeld "Bowlingbaan" of ""Zwembad" en dat dan de resultaten worden verfijnt.

Momenteel heb ik alleen het drop-down menu gemaakt:
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
<?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>
<body>
Selecteer hier de stad om de bijbehorende campings weer te geven.
<br />
<br />
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
    <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 'Geen records gevonden.';
        }
    }
else {
        echo mysql_error().' in query: '.$lQuery;
    }

    ?>

    </select>
    <input type="submit" value="Verzenden" />
</form>
<?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
        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></tr>';
                
                while ($sRow = mysql_fetch_assoc($sResult)) {
                    echo '<tr>';
                    echo '<td>' . $sRow['camping_naam'] . '</td>';
                    echo '<td>' . $sRow['camping_plaats'] . '</td>';

                    echo '</tr>'."\n";
                }

                echo '</table>';
            }
else {
                echo 'Geen records gevonden.';
            }
        }
else {
            echo mysql_error().' in query: '.$sQuery;
        }
    }
else {
        echo 'camping plaats was niet ingevuld, doe je dat wel even?';
    }
}

?>


Iemand een idee hoe ik het verder kan maken met checkboxen?
Gewijzigd op 20/12/2011 14:15:53 door Ryan Destin
 
PHP hulp

PHP hulp

22/12/2024 19:03:15
 
- Ariën  -
Beheerder

- Ariën -

20/12/2011 14:14:33
Quote Anchor link
Plaats je script a.u.b. even tussen [code]-tags..
 
Lendl Verschoor

Lendl Verschoor

20/12/2011 14:22:25
Quote Anchor link
Tip: zet niet je username en wachtwoord neer als je je code plaats.

Zoiets als dit: http://www.codeforest.net/simple-search-with-php-jquery-and-mysql ?
 
Frank WD

Frank WD

20/12/2011 14:23:11
Quote Anchor link
Je zou eens kunnen kijken na de Functie: Radio knop als submit.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<form>
<input type="radio" name="Zwembed" onclick="this.form.submit();" value="Zwembad" />
<input type="radio" name="Bowlingbaan" onclick="this.form.submit();" value="Bowlingbaan" />
</form>
 
Ryan Destin

Ryan Destin

20/12/2011 16:23:21
Quote Anchor link
Ja dat is ongeveer wat ik zoek en dan heb ik gemaakt.
Maar ik ondervind problemen met de verwerking van de gegevens.
Momenteel zie ik de gegevens tevoorschijn komen als ik plaats kies.
Dan komen de naam en de plaats van de camping naar voren.
Ik wil hier meer gegevens aan koppelen in de database en als de checkbox "Zwembad"
aangevinkt wordt hij alleen campings uit die stad met zwembaden toont.
Dus echt verfijnt zoeken. Marktplaats heeft deze functie ook en real estate websites ook! Bijvoorbeeld zoeken naar een huis!
Maar ik heb echt geen idee hoe ik dit moet aanpakken en na uren googlen zonder succes is de moed een beetje in mn schoenen geschoven haha.

Iemand iets om mij op weg te helpen?

@ Lendl Verschoor: Haha ja ik weet het maar dit is op mijn usb webserver dus alleen om te testen dus maakt niet uit, maar wel goede tip!
 
Lendl Verschoor

Lendl Verschoor

20/12/2011 16:34:51
 
Frank WD

Frank WD

20/12/2011 16:52:06
Quote Anchor link
Je zult dan bij de verfijnt zoeken radio knoppen een extra SELECT Query aan moeten hangen. Zodra je dan op de Radio knop na keuze drukt dat hij dan door de extra SELECT Query gaat en dan die gegevens gaat weergeven.

Als het goed is krijg je bij jou zoek functie de id's terug van de zoek results. Deze moet je dan mee geven bij de radio bottons en pak je weer op bij jou extra query.

Dan zul je iets krijgen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$query
= "SELECT
        extras = '"
.mysql_real_escape_string($_GET['extra'])."'
    FROM
        camping
    WHERE
        plaats = '"
.mysql_real_escape_string($_GET['plaats'])."'
        AND
                id = '"
.mysql_real_escape_string($_GET['íd'])."'
    "
;?>

Extras noem ik even als voorbeeld veld waar je dus je Zwembad en Bowlingbaan in staat.
 
Ryan Destin

Ryan Destin

20/12/2011 17:02:48
Quote Anchor link
Hallo,
Ja dat is precies wat ik zoek.
Maar dan gekoppeld aan een database war de informatie in staat.
 
Frank WD

Frank WD

20/12/2011 18:52:22
Quote Anchor link
Wij kunnen niet ruiken hoe jij de datbase hebt ingericht of dat je uberhaubt al een database hebt. Wat mij wel lijkt aangezien je eerste script in jou OT.

Dus wees duidelijk met wat je hebt of wat je niet hebt.
Maar laat vooral weten wat je zoal zelf hebt gedaan om je probleem op te lossen.
 
Ryan Destin

Ryan Destin

20/12/2011 19:27:40
Quote Anchor link
Ik zal het even duidelijk vertellen
Ik heb in mijn database "testfase" een tabel staan die "testtabel" heet.
Daarin staat het volgende:
id
camping_naam
camping_plaats
camping_bowling
camping_zwembad
camping_fietsverhuur

Op mijn eerst geplaatste script heb ik een drop-down menu met de beschikbare campings per plaats.
Bij het kiezen van een plaats komen de beschikbare campings tevoorschijn.
Nu zou het leuk zijn als je dmv checkboxen je voorkeuren kan kiezen.
Zoals aanwezigheid van bowling, zwembad of fietsverhuur.
En de zoekresultaten automatisch verfijnd worden zonder op bevestig te drukken.

Ik ben mee bezig geweest maar mijn php kennis is niet zo denderend dus een begin maken is er lastig, zeker met checkboxen want daar heb ik wel mee gewerkt in HTML maar nooit is php en omdat t gekoppeld is aan de database maakt t nog lastiger.

Gr
Ryan
 
Frank WD

Frank WD

20/12/2011 19:48:20
Quote Anchor link
Oke dat is iets duidelijke.
Zoals ik vertelde in een eerder topic kun je dat doen met radio botton inclick submit. Zodra je dan de radio botton aanklikt zal je er voor moeten zorgen dat je pagina refrest. na de refres zul je dan de eerdere gegevens moeten bewaren en de nieuwe gegevens doormiddel van de radio botton moeten bij schrijven.

De eerste gegevens heb je reeds al voor elkaar in zoals in je eerder topic lied zien. Je query voor de radio bottons zou ongeveer zo moeten worden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$query
= "SELECT
        camping_bowling      = '"
.mysql_real_escape_string($_POST['camping_optie'])."',
        camping_zwembad      = '"
.mysql_real_escape_string($_POST['camping_optie'])."',
        camping_fietsverhuur = '"
.mysql_real_escape_string($_POST['camping_optie'])."'
    FROM
        testtabel
    WHERE
        camping_naam         = '"
.mysql_real_escape_string($_GET['camping_naam'])."'
    AND
         id                  = '"
.mysql_real_escape_string($_GET['íd'])."'
    "
;?>


Denk dat je zo wel een heel eind opweg bent neem ik toch aan?

Tip:
Als ik na jou database opzet kijk, dan denk ik persoonlijk dat je de tabellen beter kunt opsplitsen naar bevoorbeeld: camping en camping_optie. En dat je met JOINS gaat werken. Want je loopt nu na mijn persoonlijke mening het risico mocht er een optie bij komen dat je de testtabel moet aanpassen met de gevolgen de rest niet meer klopt of nadien bij moet vullen. Dit heet ook wel Database Optimaliseren.

Nou succes.

EDIT:
Kijk ook even in je eerste script in OT.
Hier zet je op regel 45 meen ik de functie mysql_real_escape_string buiten je query.
Pas deze optie alleen toe in je query gedeelte. Dit voorkomt mocht je later je $_POST waarde nog eens nodig zijn, dan zijn ze niet verminkt en hou je de orginele waarders.
Let ook op verder de velden op SQL-injectie.
Gewijzigd op 20/12/2011 19:57:22 door Frank WD
 
Ryan Destin

Ryan Destin

20/12/2011 20:08:19
Quote Anchor link
Oke ik begin m aardig te snappen.
En nu kan ik even een html formulier maken met wat checkboxen en die koppelen aan het script dat jij hebt gemaakt.?

Toevoeging op 20/12/2011 20:19:10:

Hoe koppel ik dit in godsnaam in elkaar?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<form>
<input type="radio" name="Zwembed" onclick="this.form.submit();" value="Zwembad" />
<input type="radio" name="Bowlingbaan" onclick="this.form.submit();" value="Bowlingbaan" />
</form>


met dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$query
= "SELECT
        camping_bowling      = '"
.mysql_real_escape_string($_POST['camping_optie'])."',
        camping_zwembad      = '"
.mysql_real_escape_string($_POST['camping_optie'])."',
        camping_fietsverhuur = '"
.mysql_real_escape_string($_POST['camping_optie'])."'
    FROM
        testtabel
    WHERE
        camping_naam         = '"
.mysql_real_escape_string($_GET['camping_naam'])."'
    AND
         id                  = '"
.mysql_real_escape_string($_GET['íd'])."'
    "
;?>
 
Frank WD

Frank WD

20/12/2011 20:29:33
Quote Anchor link
Ok zou zeggen, kijk eens na je eigen code waar je die zoek functie hebt.
En probeer dan de 2 deeltjes van mij daar in te passen.

Ik wil best helpen maar jij wilt php leren, en daarom ga ik op voorhand niet gelijk alles voordoen of uitleggen. Beetje eigen inzet is wel wenselijk.
 
Ryan Destin

Ryan Destin

20/12/2011 20:37:14
Quote Anchor link
Dit i wat ik nu heb, verder kom ik niet want ik heb echt geen idee waar ik mee bezig ben......hahaha

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
<?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.';    
    }
}

?>



<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
<input type="radio" name="Zwembed"         onclick="this.form.submit();" value="Zwembad" />
<input type="radio" name="Bowlingbaan"     onclick="this.form.submit();" value="Bowlingbaan" />
<?php
$query
= "SELECT
        camping_bowling      = '"
.mysql_real_escape_string($_POST['camping_optie'])."',
        camping_zwembad      = '"
.mysql_real_escape_string($_POST['camping_optie'])."',
        camping_fietsverhuur = '"
.mysql_real_escape_string($_POST['camping_optie'])."'
    FROM
        testtabel
    WHERE
        camping_naam         = '"
.mysql_real_escape_string($_GET['camping_naam'])."'
    AND
         id                  = '"
.mysql_real_escape_string($_GET['íd'])."'
    "
;?>

    <input type="submit" value="Verzenden" />
</form>

<?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
        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></tr>';
                
while ($sRow = mysql_fetch_assoc($sResult)) {
                    echo '<tr>';
                    echo '<td>' . $sRow['camping_naam'] . '</td>';
                    echo '<td>' . $sRow['camping_plaats'] . '</td>';
                    echo '</tr>'."\n";
                }

                    echo '</table>';
            }
else {
                    echo 'Geen records gevonden.';
            }
        }
else {
                    echo mysql_error().' in query: '.$sQuery;
        }
    }
else {
                    echo 'camping_plaats was niet ingevuld, doe je dat wel even?';
    }
}

?>
Gewijzigd op 20/12/2011 21:14:35 door Ryan Destin
 
Frank WD

Frank WD

20/12/2011 22:13:43
Quote Anchor link
Wat is jou bedoeling dan?
Wil je bij elke camping_naam een radio botton of moet er 1 radio button komen voor alles zoek results waar je dan weer verfijnt in wilt zoeken?

Je moet zowiezo de <input> velden bij je camping_naam uitkomsten zetten.
Je kan daarna zodra je op de radio botton drukt voor kiezen om na een nieuwe pagina te gaan of de zelfde pagina. Dit is even een persoonlijke mening in manier van werken.
 
Ryan Destin

Ryan Destin

20/12/2011 23:02:46
Quote Anchor link
Er moeten voor bowling, zwembad en fietsverhuur een andere checkbox komen.
Je zoekt op stad door een keuze te maken in het dropdown-menu.
Daarna moet je je zoekactie kunnen verfijnen zoals:
Zodra je gekozen heb voor zwembad moet hij alle gevonden resultaten filteren en alleen campings met een zwembad tonen.
Het liefst zonder eerst op selecteer of update te drukken maar automatisch gelijk verversen.
 
Frank WD

Frank WD

21/12/2011 01:43:20
Quote Anchor link
Ik geef je de opzet na je 1e zoek opdracht. Bekijk deze en probeer er wat van te leren kwa overizchtelijk neer zetten en je on nodige varriabelen aanmaken.

Ben er vanuit gegaan dat je na je 2e zoekopdracht na nieuwe pagina gaat.
Dus mijn gegeven query eerder plaats je in verfijnt_gezocht.php en probeer aan de hand van onderstaande code die pagina compleet te maken.

Let Op !!!
Fouten voorbehouden.
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
<?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.';    
    }
}


//gegevens op vragen.

if($_SERVER['REQUEST_METHOD'] == "POST")
{
// er is een formulier verzonden
    if(!empty($_POST['camping_plaats']))
    {

        $sQuery =     "SELECT
                        camping_plaats,
                        camping_naam
                    FROM
                        testtabel
                    WHERE
                        camping_plaats = '"
.mysql_real_escape_string($_POST['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">
                            <tr>
                                <th>Camping:</th>
                                <th>Plaats</th>
                            </tr>'
;
                
                while ($sRow = mysql_fetch_assoc($sResult))
                {

                    echo '    <tr>
                                <td>'
. $sRow['camping_naam'] . '</td>
                                <td>'
. $sRow['camping_plaats'] . '</td>
                            </tr>'
."\n";
                }

                echo '         <tr>
                                <form action="verfijnt_gezocht" method="post">
                                    <input type="radio" name="Zwembed" onclick="this.form.submit();" value="Zwembad" />Zwembad
                                    <input type="radio" name="Bowlingbaan" onclick="this.form.submit();" value="Bowlingbaan" />Bowlingbaan
                                    <input type="radio" name="Fietsverhuur" onclick="this.form.submit();" value="Fietsverhuur" />Fietsverhuur
                                </form>
                            </tr>
                        </table>'
;
            }

            else
            {
                echo 'Geen records gevonden.';
            }
        }

        else
        {
            echo mysql_error().' in query: '.$sQuery;
        }
    }

    else
    {
        echo 'camping_plaats was niet ingevuld, doe je dat wel even?';
    }
}

?>
 
Ryan Destin

Ryan Destin

21/12/2011 08:28:49
Quote Anchor link
Er is geen 2e zoek opdracht.
Ik heb hier maar even een voorbeeld opgezocht: http://www.vvvzeeland.nl/nl/accommodaties

Ik ga even wat proberen met het script.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/12/2011 08:55:51
Quote Anchor link
Ryan, even een tip betreft je database:
Het is beter om je tabel op te splitsen in meerdere tabellen. Stel dat je besluit om ook op de aanwezigheid van een camping winkel te kunnen zoeken. In jouw geval moet je dan in de tabel naderhand een extra kolom toevoegen.
 
Ryan Destin

Ryan Destin

21/12/2011 09:07:11
Quote Anchor link
Ik heb nu een tabel met alle informatie van een camping.
Als er iets toegevoegd moet worden kan ik er een extra regel invoegen.
Dit is denk ik ook het makkelijkst of niet?

Ik kom nog niet verder met het script, ben van alles aan het proberenmaar t wil maar niet filteren!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/12/2011 09:33:36
Quote Anchor link
Vertel even welke tabellen je hebt, en hoe ze ingedeeld zijn.
 

Pagina: 1 2 volgende »



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.