Query uitleg, MYSQl-database voor een bibliotheek

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

Jasper DS

Jasper DS

12/06/2011 22:27:26
Quote Anchor link
Op deze manier werkt het natuurlijk 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
<?php
$var
= 'test';

#werkt niet:
echo 'hallo, $var';

#zo moet het:
echo 'hallo, '.$var;

#zo moet de query
$query =    "SELECT veld
             FROM tabel
             WHERE veld2 = '"
.mysql_real_escape_string($var)."'
            "
;
?>
Gewijzigd op 12/06/2011 22:28:08 door Jasper DS
 
PHP hulp

PHP hulp

27/12/2024 13:41:01
 
- SanThe -

- SanThe -

12/06/2011 22:29:51
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$sql
= 'SELECT ... FROM ... WHERE ... ACHTERNAAM LIKE "%$zoekterm%" ... ';
// moet zijn
$sql = "SELECT ... FROM ... WHERE ... ACHTERNAAM LIKE '%" . $zoekterm . "%' ... ";  
?>
 
Jasper DS

Jasper DS

12/06/2011 22:30:44
Quote Anchor link
Dat is wat ik bedoelde met vars buiten quotes.. ;) (wou hem zelf laten denken)
 

12/06/2011 22:30:47
Quote Anchor link
Ik moet bekennen dat ik bovenstaande code niet geheel snap. Vanuit de vorige pagina worden de waarden 'zoekterm' en 'voorwaarde' gepost. Zou je mij een voorbeeldje kunnen geven van hoe ik dit moet verwerken in mijn query, door het in bijvoorbeeld de eerste van de queries te gebruiken?

Nevermind, ik zie al dat dat hierboven is gebeurd. Bedankt!
Gewijzigd op 12/06/2011 22:32:43 door
 
- SanThe -

- SanThe -

12/06/2011 22:32:24
Quote Anchor link
PHP Jasper op 12/06/2011 22:30:44:
Dat is wat ik bedoelde met vars buiten quotes.. ;) (wou hem zelf laten denken)


Er misten ook enkele quotes in de query.
 

12/06/2011 22:47:11
Quote Anchor link
Ok, de queries zonder werken nu! (de variabelen in "Resultaten voor: $voorwaarde = $zoekterm" zijn ingevuld), al worden er nog geen rijen uitgeprint.
Gewijzigd op 12/06/2011 22:47:22 door
 
- SanThe -

- SanThe -

12/06/2011 22:50:33
Quote Anchor link
Wat werkt nu en wat nog niet. Eventueel relevante code posten.
 

12/06/2011 22:55:02
Quote Anchor link
De queries werken, als in dat de variabelen zijn ingevoerd en ze met succes hebben gedraaid. Er komen echter geen resultaten uit, dus het enige wat ik zie, is de bovenste rij van de tabel (regel 43-44)

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
<?php
$zoekterm
= $_POST["zoekterm"];
$voorwaarde = $_POST["voorwaarde"];
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 == 'titel') {
              $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 TITEL 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>");
        }

?>
Gewijzigd op 12/06/2011 22:55:21 door
 
- SanThe -

- SanThe -

12/06/2011 23:04:39
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// dit slaat nergens op
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>"]);
// meer zoiets
echo '<tr height="20"><td class="tabel">' . $row['ACHTERNAAM'] . 'etcetera';
?>
 

12/06/2011 23:18:58
Quote Anchor link
Dus in z'n geheel als volgt? :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<tr height="20"><td class="tabel">' . $row['ACHTERNAAM'] .. $row['KOMMA'] . . $row['VOORNAAM'] . . $row['ACHTERNAAM'] . '</td><td class="tabel"> <a href=' . $row['BOEKNR'] .'.htm>'. $row['TITEL'] . . $row['DUBBELPUNT'] . . $row['SUBTITEL'] .'</a></td><td class="tabel">'. $row['UITGAVE'] . '</td><td class="tabel">'. $row['AANTAL_EXEMPLAREN'] .'</td></tr>');
?>


Vooral met betrekking tot de variabele BOEKNR ben ik niet helemaal zeker, omdat tussen het BOEKNR en htm nog een punt moet, naast die punt aan het einde van de variabele.
Gewijzigd op 12/06/2011 23:20:07 door
 
- SanThe -

- SanThe -

12/06/2011 23:40:29
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<tr height="20"><td class="tabel">' . $row['ACHTERNAAM'] . $row['KOMMA'] . $row['VOORNAAM'] . $row['ACHTERNAAM'] . '</td><td class="tabel"> <a href="' . $row['BOEKNR'] . '.htm">' . $row['TITEL'] . $row['DUBBELPUNT'] . $row['SUBTITEL'] . '</a></td><td class="tabel">' . $row['UITGAVE'] . '</td><td class="tabel">' . $row['AANTAL_EXEMPLAREN'] . '</td></tr>';
?>
 

12/06/2011 23:47:51
Quote Anchor link
Dank je wel! Ik krijg nu alleen onder de hierboven genoemde bovenste rij 18 lege rijen, zonder tekst.
 
- SanThe -

- SanThe -

13/06/2011 00:07:43
Quote Anchor link
Zonder verdere info kan ik niks.

Zet dit eens bovenin je script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

//rest

?>
 

13/06/2011 00:19:22
Quote Anchor link
Ik krijg een hele rij met "Notice: Undefined index: ACHTERNAAM in V:\www\bibliotheekzoekvraag2.php on line 62"

Line 62 is wat we net besproken hebben.

Deze melding krijg ik 18 keer voor elke variabele die er in die code zit.
 
- SanThe -

- SanThe -

13/06/2011 00:34:49
Quote Anchor link
Dat wil dan zeggen dat er geen veld in de database is met de naam ACHTERNAAM.
 

13/06/2011 00:37:30
Quote Anchor link
Maar ik krijg die melding voor elke variabele. Dat zou betekenen dat alle velden uit de database niet bestaan?
Gewijzigd op 13/06/2011 00:41:17 door
 
- SanThe -

- SanThe -

13/06/2011 00:52:00
Quote Anchor link
Hoofdletters, kleine letters?

Toevoeging op 13/06/2011 00:53:41:

Ik zie het al:

Maak van
while($row = mysql_fetch_row($result))
dit
while($row = mysql_fetch_assoc($result))
 

13/06/2011 00:55:51
Quote Anchor link
Hij werkt! Reuze bedankt!

Toevoeging op 13/06/2011 00:58:49:

Nog een klein vraagje: hoe krijg ik rondom de variabelen KOMMA en DUBBELPUNT (letterlijk de tekens , en : ) spaties. Nu zitten de namen namelijk direct achter elkaar geplakt (Tolkien,John etc.)
 
- SanThe -

- SanThe -

13/06/2011 01:04:10
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 'blabla' . $var . ' ' . $komma . ' ' . $var . 'blabla';
?>
 
Sven b

Sven b

13/06/2011 09:44:53
Quote Anchor link
Nou, jullie helpen deze knaap wel erg goed. Toen ik een klein verzoek had om mij te helpen met een datetime functie werd er maar moeilijk gedaan.

Bravo... jullie gaan vooruit.
 

Pagina: « vorige 1 2 3



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.