Zoeken in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Naam Loos

Naam Loos

03/02/2009 21:45:00
Quote Anchor link
Kan iemand helpen met de volgende 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
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
<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

if (isset($_GET['trefwoord']) && isset($_GET['kolom']))
{

    //Maak een connectie met de server en selecteer de database
    mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db("muziek") or die(mysql_error());
    
    //Haal de gegevens uit de tabel waar de kolom is $_GET['kolom'] waar een woord als $_GET['trefwoord'] in voorkomt.
    $res = mysql_query("SELECT * FROM `zoek_test` WHERE `{$_GET['kolom']}` LIKE `{$_GET['trefwoord']}`");
    
    //Begin html
    echo '
            <table>
                <tr>
                    <td><b>Zoekresultaten</b></td>
                </tr>'
;
                
    //Weergeef gegevens
while ($row = mysql_fetch_object($res))

    {

        echo '
                <tr>
                    <td>$row->titel</td>
                </tr>'
;
    }

    
    //Sluit tabel
    echo '</table>';
                    
}


//Als er nog niet is gezocht
else
{
echo '
<form method="GET">
    <table>
        <tr>
            <td colspan="2"><b>Zoeken in database</b></td>
        </tr>
        <tr>
            <td>Kolom:</td>
            <td>
                <select name="kolom">
                    <option value="id">id</option>
                    <option value="tekst">tekst</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Trefwoord:</td>
            <td>
                <input type="text" name="trefwoord" />
            </td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="Zoeken"></td>
        </tr>
    </table>
</form>'
;
}

?>

Hiermee krijg je resultaat, maar ik krijg de volgende foutmelding:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\wamp\www\muziek\search\resultaat.php on line 30

Maar ik snap niet wat ik aan het script moet veranderen. Wie wel?
 
PHP hulp

PHP hulp

29/03/2024 10:41:32
 
PHP erik

PHP erik

03/02/2009 21:49:00
Quote Anchor link
Er moeten nog gewone aanhalingstekens om je gedeelte achter LIKE. Het is namelijk een string.
 
Naam Loos

Naam Loos

03/02/2009 21:57:00
Quote Anchor link
Oke bedankt en dan krijg ik nog zo'n leuke die naar een regel lijd waar alleen <html> staat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
Parse error: syntax error, unexpected $end in D:\wamp\www\muziek\search\resultaat.php on line 77
[\code]

Wie lost dit raadsel op?
 
Jesper Diovo

Jesper Diovo

03/02/2009 21:58:00
Quote Anchor link
Doe wat aan foutafhandeling en je had de fout al gevonden voordat je de PHP error ook maar ooit gezien had.
 
Naam Loos

Naam Loos

03/02/2009 22:02:00
Quote Anchor link
Jezpur schreef op 03.02.2009 21:58:
Doe wat aan foutafhandeling en je had de fout al gevonden voordat je de PHP error ook maar ooit gezien had.


Ik volg je niet helemaal...
 
Jesper Diovo

Jesper Diovo

03/02/2009 22:05:00
Quote Anchor link
SQL Foutafhandeling is essentieel bij het debuggen/schrijven van een script/applicatie.
 
Naam Loos

Naam Loos

03/02/2009 22:08:00
Quote Anchor link
Ik ben ook met foutafhandeling bezig van een script van iemand anders... Maar ik snap de foutmelding nog steeds niet. 9 van de 10 keer snap ik ze maar dit is een mistery!
 
Naam Loos

Naam Loos

04/02/2009 20:26:00
Quote Anchor link
Ik ben nog een keer bezig geweest met de tut van bas: http://phphulp.nl/php/tutorials/3/100/

Heb de boel zo aangepast:
Resultaat.php
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
<?php
    //-- natuurlijk moet er eerst een connectie met de database worden gemaakt:
    if (!@mysql_select_db("muziek", @mysql_connect("localhost", "root", "")))
    {

        echo "Er kan geen database connectie gemaakt worden.";
        exit();
    }


    //-- $HTTP_POST_VARS[zoekterm] is de naam van het zoekveld in het formulier wat we
    //-- hebben gemaakt in het vorige 'hoofdstuk'. Dit is dus de SQL code:

    $sql = "SELECT artiest,nummer FROM muziekdata WHERE artiest LIKE '%$HTTP_POST_VARS[zoekterm]%'";
    
    //-- voer de SQL code uit en zet dit in een variabele zodat we zometeen kunnen
    //-- kijken of er een resultaat is

    $res = mysql_query($sql);
    
    //-- bekijk nu of er een resultaat is, of het zoekwoord dus gevonden is of niet
    if (mysql_num_rows($res) >= 1)
    {

        //-- er is een resultaat gevonden, toon de resultaten via een while () loop
        while ($row = mysql_fetch_array($res))
        {

            echo "<p>Resultaat id: <b>$row[nummer]</b><br>";
            echo "Resultaat tekst: <b>$row[artiest]</b></p>";
echo "<p>Er is niets gevonden op jou zoekterm:<b> $HTTP_POST_VARS[zoekterm]</b></p>";
        }

        
        echo "<a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
    }

    //-- als er geen resultaat is gevonden, dus als het zoekwoord niet gevonden is:
    else
    {
        echo "<p>Er is niets gevonden op jou zoekterm:<b> $HTTP_POST_VARS[zoekterm]</b></p>";
        
        echo "<p><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
    }

?>


Zoek.php
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
<HTML>
    <HEAD><TITLE>Zoeken</TITLE></HEAD>
    <BODY>
    
    <p><b>Zoek in de database:</b></p>
    
    <p>
    <FORM METHOD="POST" ACTION="resultaat.php">
    Zoekterm:<br>
    <input type="text" name="zoekterm" size="30"><br>
    <input type="submit" name="submit" value="Zoeken">
    </p>
    
    </BODY>
    </HTML>

Als ik dan zoek gebeurd er helemaal niks, het is net of zoek niet communiceert met resutaat.
Wie helpt mij eindelijk uit het vuur?
 
- SanThe -

- SanThe -

04/02/2009 20:33:00
Quote Anchor link
... LIKE '%$HTTP_POST_VARS[zoekterm]%' ...

Vars buiten quotes houden en geen antieke vars gebruiken. Tevens moet je beveiligen. Gebruik enkele quotes bij array()'s.

... LIKE '%" . mysql_real_escape_string($_POST['zoekterm']) . "%' ...
 
Naam Loos

Naam Loos

04/02/2009 20:38:00
Quote Anchor link
Gelukt, nu wil ik hetvolgende ook nog kunnen:

SELECT artiest,nummer FROM muziekdata WHERE artiest OR nummer
werkt niet. hoe wel. Ik moet artiest en nummer OF artiest of nummer kunnen zoeken.
 
- SanThe -

- SanThe -

04/02/2009 20:54:00
Quote Anchor link
WHERE artiest = '...' OR nummer = '.....'

Lees eens wat tutorials door.
 
Naam Loos

Naam Loos

04/02/2009 21:06:00
Quote Anchor link
Als ik nu een artiest zoek lukt het en een nummer lukt ook maar als ik artiest en nummer in 1 doe dan is er geen resultaat. Hoe kan dit opgelost worden?

En ik zal me wel wat verdiepen in php.
 
- SanThe -

- SanThe -

04/02/2009 21:08:00
Quote Anchor link
phpbram schreef op 04.02.2009 21:06:
als ik artiest en nummer in 1 doe

En hoe wou je dat doen?
 
Naam Loos

Naam Loos

04/02/2009 21:15:00
Quote Anchor link
Dat vraag ik me dus af...

Of kan dat soms niet, zo nee: is daar een andere manier voor om het wel te kunnen??
Gewijzigd op 01/01/1970 01:00:00 door Naam Loos
 
Roel -

Roel -

04/02/2009 22:47:00
Quote Anchor link
Je moet LIKE gebruiken om te zoeken.
 



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.