Search script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco Hendriks

Marco Hendriks

29/04/2013 10:04:32
Quote Anchor link
He,

Ik ben bezig met een zoek functie en de bedoeling is er meerderen velden zijn waarop ik kan zoeken in de database. Een hiervan is auteur en de 2de is titel. Als ik alleen op auteur zoek (zie script hier onder) gaat het perfect.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
if(isset($_GET['zoekauteur'])) {
   $veld = mysql_real_escape_string($_GET['auteur_search']);
}
                    
$veld =  quote_smart($_POST["auteur_search"]);
            
$result = mysql_query("SELECT * FROM bestanden WHERE auteur LIKE '".$veld."'");
$num_rows = mysql_num_rows($result);



Maar als ik meerderen opties inzet dan doe ik iets verkeerd alleen ik weet niet wat... (zie script hier onder).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
if(isset($_GET['zoekauteur'])) {
   $veld = mysql_real_escape_string($_GET['auteur_search']);
}
        
if(isset($_GET['zoektitel'])) {
   $veld2 = mysql_real_escape_string($_GET['titel_search']);
}
            
$veld =  quote_smart($_POST["auteur_search"]);
$veld2 =  quote_smart($_POST["titel_search"]);
            
$result = mysql_query("SELECT * FROM bestanden WHERE (auteur LIKE '".$veld."' AND titel LIKE '".$veld2."')");
$num_rows = mysql_num_rows($result);


Wat doe ik verkeerd al vast bedankt.
Gewijzigd op 29/04/2013 10:04:55 door Marco Hendriks
 
PHP hulp

PHP hulp

27/04/2024 01:39:01
 
Erwin H

Erwin H

29/04/2013 10:06:31
Quote Anchor link
Het moet of in de titel staan, of in de auteur. Of in het Engels is OR, niet AND.
 
Marco Hendriks

Marco Hendriks

29/04/2013 10:14:37
Quote Anchor link
Ik heb het aangepast, en klinkt logisch alleen werkt nog niet...

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
if(isset($_GET['zoekauteur'])) {
   $veld = mysql_real_escape_string($_GET['auteur_search']);
}
        
if(isset($_GET['zoektitel'])) {
   $veld2 = mysql_real_escape_string($_GET['titel_search']);
}
            
$veld =  quote_smart($_POST["auteur_search"]);
$veld2 =  quote_smart($_POST["titel_search"]);
            
$result = mysql_query("SELECT * FROM bestanden WHERE (auteur LIKE '".$veld."' OR titel LIKE '".$veld2."')");

$num_rows = mysql_num_rows($result);
[\code]
 
Eddy E

Eddy E

29/04/2013 10:19:23
Quote Anchor link
Je hele logica klopt niet.

Bestaat $_GET['zoekauteur']? Zo ja, gebruik dan $_GET['auteur_search']....?
Dat is dus al een andere variabele.

Je controleert ['zoektitel'] en ['zoekauteur'] om daarna $veld en $veld2 met iets geheel anders (een $_POST) te vullen.
Ik zou het zo doen, maar je variabelen kloppen waarschijnlijk niet. Jij hebt er 3.. en welke je nou wilt gebruiken...

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
<?php
    // is er een auteur opgegeven?
    if(isset($_GET['zoekauteur']))
    {

        $zoek['auteur'] = quote_smart($_GET['zoekauteur']);
    }


    // is er een titel opgegeven?
    if(isset($_GET['zoektitel']))
    {

        $zoek['titel'] = quote_smart($_GET['zoektitel']);
    }


    // bouw query dynamisch op
    foreach($zoek as $veld => $waarde)
    {

        $where[] = $veld . " LIKE '%" . $waarde . "%' ";
    }


    // stel query samen
    $query = "SELECT auteur, titel, ..., ...
                 FROM bestanden
                 WHERE
                     "
. implode(" OR ", $where) . "                     
                 ORDER BY auteur DESC
                 LIMIT 0, 30"
;

    // toont de query. Is die goed? Comment. Zo niet, uncomment...
    //echo $query;

    // voer query uit, controleer etc

    $result = mysql_query($query);
    if($result !== false)
    {

        // query gelukt...
        $num_rows = mysql_num_rows($result);

        // kijk of er resultaten zijn
        if($num_rows == 0)
        {

            // er zijn geen resultaten
        }
    }

?>
Gewijzigd op 29/04/2013 10:20:11 door Eddy E
 
Marco Hendriks

Marco Hendriks

29/04/2013 12:42:05
Quote Anchor link
Je had gelijk er zaten een aantal dingen niet goed ik heb het veranderd en nu werkt het wel dank je.
 



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.