Zoek functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Marco -

- Marco -

11/10/2012 16:37:46
Quote Anchor link
Ik heb een simpele zoekfunctie gemaakt maar ik zit met een probleem

met deze pagina kun je zoeken en dan komen er resultaten uit
voorbeeld:

Ik zoek op "meneer2"

dan komt er dit uit:
ID: 1
uitkomst: KUNSTWERK 1
soort: Digital Art
kunstenaar: meneer2
Meer info!
bedrijf: voorbeeld
plaats: voorbeeld
date: 11-10-2012

de bedoeling is dat als je op meer info klikt tot die andere 3 records die eronder staan ook zichbaar worden.
dit is mogelijk met <detail> maar dit werkt alleen in chrome >.>
Ik weet tot het met javascript kan maar ik weer echt NIKS van javascript

Hoe zou ik dit kunnen oplossen?

Gr marco
 
PHP hulp

PHP hulp

25/11/2024 17:46:42
 
Marvin H

Marvin H

11/10/2012 16:45:46
Quote Anchor link
Plaats de andere 3 resultaten in een <div> en zorg ervoor dat die standaard is verborgen bijvoorbeeld

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<div id="div1" style="display: none;"> verborgen content </div>


en dan bij klikken op meer info

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<script>
function showresult(){
    document.getElementById('div1').style.display= 'block';
}
</script>

<a href="#" onclick="showresult();">Meer info!</a>
 
- Marco -

- Marco -

12/10/2012 09:16:33
Quote Anchor link
Ik heb dit geprobeerd en als ik bij het eerste zoekresultaat op "meer info!" klik dan klapt het uit maar klik ik er nog een keer op dan klapt het niet meer in :S
en het werkt ook alleen bij het eerste zoekresultaat dus als je meerdere zoekresultaten hebt dan werkt het alleen op de 1e en niet op de rest :(

Dit is mijn code:
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
<?php
                if (isset($_POST['term']))
                    {
  
                        require("require/dbconnect.php");
                        
                        // zoekfunctie van alles
                        $term = $_POST['term'];
                        
                        $sql = mysql_query("select * FROM search WHERE uitkomst like '%$term%' or soort like '%$term%'");
                    
                        echo '<div id=searchresult>';
                        while ($row = mysql_fetch_array($sql))
                        {

                            echo '<br/> ID: '.$row['id_photo'];
                            echo '<br/> uitkomst: '.$row['uitkomst'];
                            echo '<br/> soort: '.$row['soort'];
                            ?>

                            
                            <script>
                            function showresult(){
                                document.getElementById('div1').style.display= 'block';
                            }
                            </script>

                            <a href="#" onclick="showresult();">Meer info!</a>
                            <div id="div1" style="display: none;"> verborgen content
                            <?php
                            echo '<br/> prijs: '.$row['prijs'];
                            echo '<br/> contactpersoon: '.$row['contactpersoon'];
                            echo '<br/> bedrijf: '.$row['bedrijfsnaam'];
                            echo '<br/> plaats: '.$row['plaats'];
                            echo '<br/> date: '.$row['date'];
                            echo '<br/>';
                            ?>

                            </div>
                            <?php
                            echo '<hr/>';
                        }

                        echo '</div>';
                    }

            ?>

[/CODE]
Gewijzigd op 12/10/2012 09:17:14 door - Marco -
 
Marvin H

Marvin H

12/10/2012 09:26:40
Quote Anchor link
Oke, je had niet aangegeven dat het ook verborgen moest worden en je meerdere zoek resultaten ging genereren... Maar dan kan je het beste met een teller gaan werken ($count) en elke div een unieke ID geven... test onderstaande eens:

LET OP! je controleert de input van de gebruikers niet, zo zijn SQL-injections mogelijk, kijk ook eens naar de tutorial http://www.phphulp.nl/php/tutorial/overig/beginnersfouten-tegengaan/763/sqlinjection/2041/

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
<?php
if (isset($_POST['term']))
    {
  
    require("require/dbconnect.php");
    
    // zoekfunctie van alles
    $term = $_POST['term'];
    
    $sql = mysql_query("select * FROM search WHERE uitkomst like '%$term%' or soort like '%$term%'");

    echo '<div id=searchresult>';
    $count = 0;
    while ($row = mysql_fetch_array($sql))
    {

        echo '<br/> ID: '.$row['id_photo'];
        echo '<br/> uitkomst: '.$row['uitkomst'];
        echo '<br/> soort: '.$row['soort'];
        ?>

        
        <script>
        function showresult(div){
            if(document.getElementById(div).style.display == 'block'){
                document.getElementById(div).style.display = 'none';
            }
            else{
                document.getElementById(div).style.display = 'block';
            }
        }
        </script>

        <?php
        echo '<a href="#" onclick="showresult(\'div'.$count.'\');">Meer info!</a>';
        echo '<div id="div'.$count.'" style="display: none;"> verborgen content';
        
        echo '<br/> prijs: '.$row['prijs'];
        echo '<br/> contactpersoon: '.$row['contactpersoon'];
        echo '<br/> bedrijf: '.$row['bedrijfsnaam'];
        echo '<br/> plaats: '.$row['plaats'];
        echo '<br/> date: '.$row['date'];
        echo '<br/>';
        echo '</div>';
        echo '<hr/>';
    $count++;    
    }

    echo '</div>';
    }

?>
Gewijzigd op 12/10/2012 09:29:37 door Marvin H
 
- Marco -

- Marco -

12/10/2012 09:33:00
Quote Anchor link
ok dit werkt thx!! :)
Nu ga ik maar eens die link lezen die je had gepost van sql injection shit :p
Gewijzigd op 12/10/2012 09:40:08 door - Marco -
 
Marvin H

Marvin H

12/10/2012 09:36:54
Quote Anchor link
- Marco - op 12/10/2012 09:33:00:
ok dit werkt thx!! :)
Nu ga ik maar eens die link lezen die je had gepost van sql injection shit :p


Doe je beste :) is niet zo heel moeilijk... Wat je ook kunt gebruiken is deze PHP functie ...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function cleanuserinput($dirty){
    if (get_magic_quotes_gpc()) {
        $clean = mysql_real_escape_string(stripslashes($dirty));    
    }
else{
        $clean = mysql_real_escape_string($dirty);    
    }

    return $clean;
}

?>


en je query gaat dan bijvoorbeeld zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sql
= mysql_query("select * FROM search WHERE uitkomst like '%".cleanuserinput($term)."%' or soort like '%".cleanuserinput($term)."%' ")
       or die('Error, query failed' . mysql_error());
?>
Gewijzigd op 12/10/2012 09:47:55 door Marvin H
 
- Marco -

- Marco -

12/10/2012 09:55:53
Quote Anchor link
ok dank je maar ik denk tot die sql injection niet werkt hoor want die tutorial die je stuurde daarin stond een link wat nou sql injection was enz dat heb ik dus eens doorgelezen en daarin stond dit:

'; DROP TABLE members; --

nou ik heb dus een test tabel hiervoor aangemaakt want ik kon het niet laten om dit te testen xD
dus ik doe dit in die searchbox en klik op submit:
'; DROP TABLE test; --

Dan krijg ik deze error, is dat goed of juist slecht want ik heb de tabel test nog steeds :p
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\marco\BrandsOfArt\cms\search.php on line 37
 



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.