Query uitleg, MYSQl-database voor een bibliotheek

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Jasper DS

Jasper DS

12/06/2011 12:50:23
Quote Anchor link
Wat was de foutmelding? Als je een foutafhandeling in je script had gezet had je deze ( -> mysql_fetch_row(): supplied argument is not a valid MySQL result) foutmelding niet gekregen.
Gewijzigd op 12/06/2011 12:50:36 door Jasper DS
 
PHP hulp

PHP hulp

27/12/2024 13:31:31
 

12/06/2011 13:00:22
Quote Anchor link
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in V:\www\bibliotheekzoekvraag2.php on line 31

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in V:\www\bibliotheekzoekvraag2.php on line 31
Fout met database!

Regel 31 begint met jouw foutafhandeling.

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
<?php
              $query
= 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I ';
        if ($voorwaarde == 'alles') {
               $query .= 'WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND ALLES LIKE "%$zoekterm%" ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}        
        elseif ($voorwaarde == 'auteur') {
              $query .= 'WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND ACHTERNAAM LIKE "%$zoekterm%" ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}
        elseif ($voorwaarde == 'uitgever') {
              $query .= 'WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND UITNR IN (SELECT UITNR FROM UITGEVERS WHERE UITNAAM LIKE "%$zoekterm%"';}
        elseif ($voorwaarde == 'isbn') {
              $query .= 'WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND ISBN LIKE "%$zoekterm%" ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}    
        elseif ($voorwaarde == 'serie') {
              $query .= 'WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND SERIE LIKE "%$zoekterm%" ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}    
        elseif ($voorwaarde == 'onderwerp') {
              $query .= 'WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND OWNR IN (SELECT OWNR FROM ONDERWERPEN WHERE ACHTERNAAM LIKE "%$zoekterm%"';}
        elseif ($voorwaarde == 'coauteurs') {
              $query .= 'WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND COAUTEURSNR IN (SELECT AUTEURNR FROM AUTEURS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR COAUTEURSNR2 IN (SELECT AUTEURNR FROM AUTEURS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR COAUTEURSNR3 IN (SELECT AUTEURNR FROM AUTEURS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR COAUTEURSNR4 IN (SELECT AUTEURNR FROM AUTEURS WHERE ACHTERNAAM LIKE "%$zoekterm%") ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC"';}
        elseif ($voorwaarde == 'provnaam') {
              $query .= 'WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND PROVNR IN (SELECT PROVNR FROM PROVENANCE WHERE ACHTERNAAMP LIKE "%$zoekterm%") OR PROVNR2 IN (SELECT PROVNR FROM PROVENANCE WHERE ACHTERNAAMP LIKE "%$zoekterm%") OR PROVNR3 IN (SELECT PROVNR FROM PROVENANCE WHERE ACHTERNAAMP LIKE "%$zoekterm%") ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}
        elseif ($voorwaarde == 'drukker') {
              $query .= 'WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND DRUKKERNR IN (SELECT DRUKKERNR FROM DRUKKERS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR DRUKKERNR2 IN (SELECT DRUKKERNR FROM DRUKKERS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR DRUKKERNR3 IN (SELECT DRUKKERNR FROM DRUKKERS WHERE ACHTERNAAM LIKE "%$zoekterm%") ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}
                
                 # Check je query        
    if(($result = mysql_query($sql)) === false)
    {

        # de query is fout, weergeef in test-fase eventueel mysql_error()
        echo' Fout met database!';
    }

    elseif(mysql_num_rows($result) < 1)
    {

        echo 'Er zijn geen gegevens gevonden';
    }

    else
    {
                echo ("</br></br>");
                echo ("<font face='verdana' size='2'><b>Resultaten voor:</b> $voorwaarde = $zoekterm");
                echo ("</br></br>");
                echo ("<table width='100%'>");
                echo ("<tr height='40'><td width='25%' class='tabel'><b>auteur</b></td><td width='60%' class='tabel'><b>titel</b></td><td width='7%' class='tabel'><b>jaar</b></td><td width='8%' class='tabel'><b>exemplaren</b></td></tr>");
        while($row = mysql_fetch_row($result))
        {

            echo ("<tr height='20'><td class='tabel'> $achternaam$komma $voornaam $tussenvoegsels </td><td class='tabel'> <a href='$boeknr.htm'>$titel $dubbelpunt $subtitel</a> </td><td class='tabel'> $uitgave </td><td class='tabel'> $aantal_exemplaren </td></tr>");
        }

                echo ("</tabel>");
            }

?>

</body>
</html>
Gewijzigd op 12/06/2011 13:02:19 door
 
- SanThe -

- SanThe -

12/06/2011 13:10:47
Quote Anchor link
Je hebt geen databaseverbinding.
 

12/06/2011 13:12:58
Quote Anchor link
Maar dat heb ik echt nog nooit gehad, dus het moet te maken hebben met die foutafhandeling.
 
- SanThe -

- SanThe -

12/06/2011 13:18:50
Quote Anchor link
$query is niet hetzelfde als $sql
 

12/06/2011 13:23:48
Quote Anchor link
Ah, ja, ik zie het. Ik kan alle $query's gewoon in $sql veranderen?

Edit: Ik krijg nog steeds dezelfde foutmelding.
Gewijzigd op 12/06/2011 13:38:34 door
 
Jasper DS

Jasper DS

12/06/2011 14:02:20
Quote Anchor link
Db verbinding ontbreekt!
 

12/06/2011 14:27:53
Quote Anchor link
Hoe moet ik dat dan doen? Ik maakte altijd gebruik van een "die"-code, maar die is hier streng verboden, begrijp ik. En dat is de enige manier die ik geleerd heb op school...
 
Jasper DS

Jasper DS

12/06/2011 14:47:44
Quote Anchor link
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
<?php
# regel de database:
$mysql['host']                 = "localhost";
$mysql['gebruikersnaam']     = "****";
$mysql['wachtwoord']         = "****";
$mysql['database']             = "****";

# Verbind
if((mysql_connect($mysql['host'],$mysql['gebruikersnaam'],$mysql['wachtwoord'])) === false)
{

    echo 'Error: Fout met verbinden database.';
}

else
{
    if((mysql_select_db($mysql['database'])) === false)
    {

        echo 'Error: Kon database niet selecteren';
    }
}

?>


zet dit in bijvoorbeeld config.php en include dat bestandje dan op je pagina door middel van include 'config.php';
Gewijzigd op 12/06/2011 14:48:27 door Jasper DS
 

12/06/2011 16:56:57
Quote Anchor link
Ok, dank je wel! Dat "include 'config.php';" (<- precies zo invullen?)moet voor de eerste $sql?
 
Erik van de Locht

Erik van de Locht

12/06/2011 17:04:56
Quote Anchor link
Je moet in elk geval eerst een connectie hebben voordat je een query uitvoert, dus niet noodzakelijk voor $sql, maar wel voor de functie mysql_query(), want die voert de query uit.
 

12/06/2011 21:57:03
Quote Anchor link
Ok, momenteel werkt hij wel =), maar krijg ik geen output. Ik heb al zitten kijken of het door de dubbele aanhalingstekens komt rondom %$zoekterm%, maar als ik deze verander in enkele aanhalingstekens, krijg ik wél een fout met de database en een division-by-zero-fout.

Ik weet overigens dat het wat overbodig is om elke query geheel in te vullen, maar dat is voor mij momenteel even ter overzicht, en omdat ik straks nog een paar wijzigingen wil doorvoeren.

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
<?php
include 'config.php';
        if ($voorwaarde == 'alles') {
               $sql = 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND ALLES LIKE "%$zoekterm%" ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}        
        elseif ($voorwaarde == 'auteur') {
              $sql = 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND ACHTERNAAM LIKE "%$zoekterm%" ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}
        elseif ($voorwaarde == 'uitgever') {
              $sql = 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND UITNR IN (SELECT UITNR FROM UITGEVERS WHERE UITNAAM LIKE "%$zoekterm%"';}
        elseif ($voorwaarde == 'isbn') {
              $sql = 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND ISBN LIKE "%$zoekterm%" ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}    
        elseif ($voorwaarde == 'serie') {
              $sql = 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND SERIE LIKE "%$zoekterm%" ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}    
        elseif ($voorwaarde == 'onderwerp') {
              $sql = 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND OWNR IN (SELECT OWNR FROM ONDERWERPEN WHERE ACHTERNAAM LIKE "%$zoekterm%"';}
        elseif ($voorwaarde == 'coauteurs') {
              $sql = 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND COAUTEURSNR IN (SELECT AUTEURNR FROM AUTEURS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR COAUTEURSNR2 IN (SELECT AUTEURNR FROM AUTEURS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR COAUTEURSNR3 IN (SELECT AUTEURNR FROM AUTEURS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR COAUTEURSNR4 IN (SELECT AUTEURNR FROM AUTEURS WHERE ACHTERNAAM LIKE "%$zoekterm%") ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC"';}
        elseif ($voorwaarde == 'provnaam') {
              $sql = 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND PROVNR IN (SELECT PROVNR FROM PROVENANCE WHERE ACHTERNAAMP LIKE "%$zoekterm%") OR PROVNR2 IN (SELECT PROVNR FROM PROVENANCE WHERE ACHTERNAAMP LIKE "%$zoekterm%") OR PROVNR3 IN (SELECT PROVNR FROM PROVENANCE WHERE ACHTERNAAMP LIKE "%$zoekterm%") ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}
        elseif ($voorwaarde == 'drukker') {
              $sql = 'SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, DUBBELPUNT, SUBTITEL, UITGAVE, AANTAL_EXEMPLAREN FROM AUTEURS AS A, BOEKEN AS B, EXEMPLAREN AS E, ISBN AS I WHERE A.AUTEURNR = B.AUTEURNR AND B.BOEKNR = E.BOEKNR AND B.BOEKNR = I.BOEKNR AND DRUKKERNR IN (SELECT DRUKKERNR FROM DRUKKERS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR DRUKKERNR2 IN (SELECT DRUKKERNR FROM DRUKKERS WHERE ACHTERNAAM LIKE "%$zoekterm%") OR DRUKKERNR3 IN (SELECT DRUKKERNR FROM DRUKKERS WHERE ACHTERNAAM LIKE "%$zoekterm%") ORDER BY UITGAVE DESC, ACHTERNAAM ASC, TITEL ASC';}
                
                 # Check je query        
    if(($result = mysql_query($sql)) === false)
    {

        # de query is fout, weergeef in test-fase eventueel mysql_error()
        echo' Fout met database!';
    }

    elseif(mysql_num_rows($result) < 1)
    {

        echo 'Er zijn geen gegevens gevonden';
    }

    else
    {
                
                echo ("</br></br>");
                echo ("<font face='verdana' size='2'><b>Resultaten voor:</b> $voorwaarde = $zoekterm");
                echo ("</br></br>");
                echo ("<table width='100%'>");
                echo ("<tr height='40'><td width='25%' class='tabel'><b>auteur</b></td><td width='60%' class='tabel'><b>titel</b></td><td width='7%' class='tabel'><b>jaar</b></td><td width='8%' class='tabel'><b>exemplaren</b></td></tr>");
        while($row = mysql_fetch_row($result))
        {

            echo ($row["<tr height='20'><td class='tabel'> $achternaam$komma $voornaam $tussenvoegsels </td><td class='tabel'> <a href='$boeknr.htm'>$titel $dubbelpunt $subtitel</a> </td><td class='tabel'> $uitgave </td><td class='tabel'> $aantal_exemplaren </td></tr>"]);
        }

                echo ("</tabel>");
        }

?>
 
Jasper DS

Jasper DS

12/06/2011 21:59:00
Quote Anchor link
Hoe? Krijg je totaal geen output? Staat error reporting aan?
 

12/06/2011 22:05:47
Quote Anchor link
Ik krijg de melding die ingesteld is door jou: 'Er zijn geen gegevens gevonden'

Wat raar is, want precies dezelfde queries geven buiten dit script om wél resultaat.


Edit: ik merk nu ook dat de queries die een 'IN' gebruiken, geheel niet werken. 'Fout met Database'
Gewijzigd op 12/06/2011 22:07:47 door
 
Jasper DS

Jasper DS

12/06/2011 22:13:23
Quote Anchor link
test je query's eens in phpmyadmin, pas als ze werken zet je ze in je script.
 

12/06/2011 22:14:45
Quote Anchor link
Dat bedoelde ik, daar werkten ze wel.
 
Jasper DS

Jasper DS

12/06/2011 22:18:13
Quote Anchor link
haal je vars buiten quotes
Gewijzigd op 12/06/2011 22:21:25 door Jasper DS
 

12/06/2011 22:21:12
Quote Anchor link
Oh wacht, het zal toch niet....

Ik zie nergens een postvariabele van hetgeen dat ik de pagina ervoor heb ingevuld en opgestuurd. Ik heb immers geen rijen in mijn database met de waarde $zoekterm
Gewijzigd op 12/06/2011 22:21:38 door
 
Jasper DS

Jasper DS

12/06/2011 22:22:07
Quote Anchor link
Alle vars in je query moeten buiten quotes, je gebruikt beter (") voor je query's
 

12/06/2011 22:23:57
Quote Anchor link
Zonder quotes doen ze het niet, dat heb ik net in PhpMyAdmin getest.

Maar ik kan gewoon $zoekterm = $_POST["zoekterm"]; en $voorwaarde = $_POST["voorwaarde"]; erin toevoegen?
 

Pagina: « vorige 1 2 3 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.