Andere output bij variabele SQL-query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

22/06/2011 16:16:54
Quote Anchor link
Hallo allemaal,

Bij deze heb ik een vraag omtrent het gebruik van een variabele query. Hieronder staat de SQL-code van mijn database.

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
<?php
$zoekterm
= $_POST["zoekterm"];
$voorwaarde = $_POST["voorwaarde"];
include 'config.php';

        if ($voorwaarde == 'alles') {
               $sql = "SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, 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, 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 DISTINCT AANTALBOEKEN, LINK, ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS FROM AUTEURS WHERE ACHTERNAAM WHERE GEHELENAAM LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAM ASC";}
        elseif ($voorwaarde == 'uitgever') {
              $sql = "SELECT AANTALBOEKEN, UITNR, UITNAAM FROM UITGEVERS WHERE UITNAAM LIKE '%" . $zoekterm . "%'";}
        elseif ($voorwaarde == 'isbn') {
              $sql = "SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, 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 == 'onderwerp') {
              $sql = "SELECT DISTINCT AANTALBOEKENO, LINKO, ACHTERNAAMO, KOMMAO, VOORNAAMO, TUSSENVOEGSELSO FROM ONDERWERPEN WHERE GEHELENAAMO LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAMO ASC";}
        elseif ($voorwaarde == 'co-auteurs') {
              $sql = "SELECT DISTINCT AANTALBOEKEN, LINK, ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS FROM AUTEURS WHERE ACHTERNAAM WHERE GEHELENAAM LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAM ASC";}
        elseif ($voorwaarde == 'provenance') {
              $sql = " SELECT DISTINCT AANTALBOEKEN, LINK, ACHTERNAAMP, KOMMAP, VOORNAAMP, TUSSENVOEGSELSP FROM PROVENANCE WHERE GEHELENAAMP LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAMP ASC";}
        elseif ($voorwaarde == 'drukker') {
              $sql = "SELECT DISTINCT AANTALBOEKEN, LINK, ACHTERNAAM, KOMMAD, VOORNAAM, TUSSENVOEGSELS FROM DRUKKERS WHERE GEHELENAAM LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAM ASC";}
        elseif ($voorwaarde == 'drukkersadres') {
              $sql = "SELECT DISTINCT AANTALBOEKEN, LINK, ACHTERNAAM, KOMMAD, VOORNAAM, TUSSENVOEGSELS FROM DRUKKERS WHERE ADRES LIKE '%" . $zoekterm . "%'";}
?>


Zoals jullie kunnen zien, is de output, die in een tabel wordt weergegeven, per query verschillend. De ene keer wordt er zowel de naam van de auteur, als ook de titel, het jaar en het aantal exemplaren getoond, de andere keer slechts de naam van de auteur/het onderwerp/de uitgever etc. getoond. Nu is mijn vraag als volgt: hoe kan ik de output en de tabel laten veranderen per query? Ik denk zelf aan opnieuw een ifelse-constructie, zoals hierboven, maar ik heb eerlijk gezegd geen idee hoe ik dat zou moeten doen.
Gewijzigd op 23/06/2011 14:11:36 door
 
PHP hulp

PHP hulp

29/09/2020 15:34:01
 

23/06/2011 20:30:19
Quote Anchor link
Het is mij al gelukt, met behulp van een tutorial omtrent de precieze opbouw van een ifelse-constructie werkt hij.
Omdat ik begreep dat bij een opgelost probleem het verzocht werd de oplossing te posten voor anderen:

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);


$zoekterm = $_POST["zoekterm"];
$voorwaarde = $_POST["voorwaarde"];
include 'config.php';

        if ($voorwaarde == 'alles') {
               $sql = "SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, 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, 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 DISTINCT AANTALBOEKEN, LINK, ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS FROM AUTEURS WHERE ACHTERNAAM WHERE GEHELENAAM LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAM ASC";}
        elseif ($voorwaarde == 'uitgever') {
              $sql = "SELECT AANTALBOEKEN, UITNR, UITNAAM FROM UITGEVERS WHERE UITNAAM LIKE '%" . $zoekterm . "%'";}
        elseif ($voorwaarde == 'isbn') {
              $sql = "SELECT ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS, B.BOEKNR, TITEL, 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, 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 DISTINCT AANTALBOEKENO, LINKO, ACHTERNAAMO, KOMMAO, VOORNAAMO, TUSSENVOEGSELSO FROM ONDERWERPEN WHERE GEHELENAAMO LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAMO ASC";}
        elseif ($voorwaarde == 'co-auteurs') {
              $sql = "SELECT DISTINCT AANTALBOEKEN, LINK, ACHTERNAAM, KOMMA, VOORNAAM, TUSSENVOEGSELS FROM AUTEURS WHERE ACHTERNAAM WHERE GEHELENAAM LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAM ASC";}
        elseif ($voorwaarde == 'provenance') {
              $sql = " SELECT DISTINCT AANTALBOEKEN, LINK, ACHTERNAAMP, KOMMAP, VOORNAAMP, TUSSENVOEGSELSP FROM PROVENANCE WHERE GEHELENAAMP LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAMP ASC";}
        elseif ($voorwaarde == 'drukker') {
              $sql = "SELECT DISTINCT AANTALBOEKEN, LINK, ACHTERNAAM, KOMMAD, VOORNAAM, TUSSENVOEGSELS FROM DRUKKERS WHERE GEHELENAAM LIKE '%" . $zoekterm . "%' ORDER BY ACHTERNAAM ASC";}
        elseif ($voorwaarde == 'drukkersadres') {
              $sql = "SELECT DISTINCT AANTALBOEKEN, LINK, ACHTERNAAM, KOMMAD, VOORNAAM, TUSSENVOEGSELS FROM DRUKKERS WHERE ADRES LIKE '%" . $zoekterm . "%'";}
        
                 # 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 ("<table width='100%'>");
                echo ("<tr><td rowspan='2'><img src='afbeeldingen/33x36.jpg' alt='Vermeer' height='100' width='99'></td><td colspan='2' width='100%' class='header' align='center'>Vermeerse Bibliotheek</td></tr>");
                echo ("<td colspan='2' width='100%' class='header2' align='center'>Vermeerian Library - Vermeerischer Bibliothek - Bibliothèque Vermeer - Bibliotheca Lacunia - <font face='symbol'>Biblioqhka Lakounia</font></br></td></tr>");
                echo ("</table>");
                echo ("<table width='100%'>");
                echo ("<tr><td width='100%' height='10' bgcolor='#000000'></td></tr></table>");
                echo ("</br>");
                echo ("<font face='verdana' size='1,5'><a href='mainpage.htm'>Home VB</a> > <a href='zoekpagina.php'>VB Catalogus</a> > Zoeken</br></br>");
                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_assoc($result))
        {

                     if ($voorwaarde == 'alles')
                           {

                         echo '<tr height="20"><td class="tabel">' . $row['ACHTERNAAM'] . $row['KOMMA'] . ' ' . $row['VOORNAAM'] . ' ' . $row['TUSSENVOEGSELS'] . '</td><td class="tabel"> <a href="' . $row['BOEKNR'] . '.htm">' . $row['TITEL'] . '</a></td><td class="tabel">' . $row['UITGAVE'] . '</td><td class="tabel">' . $row['AANTAL_EXEMPLAREN'] . '</td></tr>';
                           }
        
                  elseif ($voorwaarde == 'titel')
                       {

                   echo '<tr height="20"><td class="tabel">' . $row['ACHTERNAAM'] . $row['KOMMA'] . ' ' . $row['VOORNAAM'] . ' ' . $row['TUSSENVOEGSELS'] . '</td><td class="tabel"> <a href="' . $row['BOEKNR'] . '.htm">' . $row['TITEL'] . '</a></td><td class="tabel">' . $row['UITGAVE'] . '</td><td class="tabel">' . $row['AANTAL_EXEMPLAREN'] . '</td></tr>';
                 }

              elseif ($voorwaarde == 'auteur')
                 {

                   echo '<tr height="20"><td class="tabel">' . $row['AANTALBOEKEN'] . '</td><td class="tabel"> <a href="' . $row['LINK'] . '.htm">' . $row['ACHTERNAAM'] . $row['KOMMA'] . ' ' . $row['VOORNAAM'] . ' ' . $row['TUSSENVOEGSELS'] . '</a></td></tr>';
                 }

              elseif ($voorwaarde == 'uitgever')
                 {

                   echo '<tr height="20"><td class="tabel">' . $row['AANTALBOEKEN'] . '</td><td class="tabel"> <a href="' . $row['UITNR'] . '.htm">' . $row['UITNAAM'] . '</a></td></tr>';
                 }

              elseif ($voorwaarde == 'isbn')
                 {

                   echo '<tr height="20"><td class="tabel">' . $row['ACHTERNAAM'] . $row['KOMMA'] . ' ' . $row['VOORNAAM'] . ' ' . $row['TUSSENVOEGSELS'] . '</td><td class="tabel"> <a href="' . $row['BOEKNR'] . '.htm">' . $row['TITEL'] . '</a></td><td class="tabel">' . $row['UITGAVE'] . '</td><td class="tabel">' . $row['AANTAL_EXEMPLAREN'] . '</td></tr>';
               }
    
              elseif ($voorwaarde == 'serie')
                 {

                   echo '<tr height="20"><td class="tabel">' . $row['ACHTERNAAM'] . $row['KOMMA'] . ' ' . $row['VOORNAAM'] . ' ' . $row['TUSSENVOEGSELS'] . '</td><td class="tabel"> <a href="' . $row['BOEKNR'] . '.htm">' . $row['TITEL'] . '</a></td><td class="tabel">' . $row['UITGAVE'] . '</td><td class="tabel">' . $row['AANTAL_EXEMPLAREN'] . '</td></tr>';
                 }
    
              elseif ($voorwaarde == 'onderwerp')
                 {

                   echo '<tr height="20"><td class="tabel">' . $row['AANTALBOEKENO'] . '</td><td class="tabel"> <a href="' . $row['LINKO'] . '.htm">' . $row['ACHTERNAAMO'] . $row['KOMMAO'] . ' ' . $row['VOORNAAMO'] . ' ' . $row['TUSSENVOEGSELSO'] . '</a></td></tr>';
                 }

              elseif ($voorwaarde == 'co-auteurs')
                 {

                   echo '<tr height="20"><td class="tabel">' . $row['AANTALBOEKEN'] . '</td><td class="tabel"> <a href="' . $row['LINK'] . '.htm">' . $row['ACHTERNAAM'] . $row['KOMMA'] . ' ' . $row['VOORNAAM'] . ' ' . $row['TUSSENVOEGSELS'] . '</a></td></tr>';
                 }

              elseif ($voorwaarde == 'provenance')
                 {

                   echo '<tr height="20"><td class="tabel">' . $row['AANTALBOEKEN'] . '</td><td class="tabel"> <a href="' . $row['LINK'] . '.htm">' . $row['ACHTERNAAMP'] . $row['KOMMAP'] . ' ' . $row['VOORNAAMP'] . ' ' . $row['TUSSENVOEGSELSP'] . '</a></td></tr>';
                 }

              elseif ($voorwaarde == 'drukker')
                 {

                   echo '<tr height="20"><td class="tabel">' . $row['AANTALBOEKEN'] . '</td><td class="tabel"> <a href="' . $row['LINK'] . '.htm">' . $row['ACHTERNAAM'] . $row['KOMMAD'] . ' ' . $row['VOORNAAM'] . ' ' . $row['TUSSENVOEGSELS'] . '</a></td></tr>';
                 }

              elseif ($voorwaarde == 'drukkersadres')
                 {

                   echo '<tr height="20"><td class="tabel">' . $row['AANTALBOEKEN'] . '</td><td class="tabel"> <a href="' . $row['LINK'] . '.htm">' . $row['ACHTERNAAM'] . $row['KOMMAD'] . ' ' . $row['VOORNAAM'] . ' ' . $row['TUSSENVOEGSELS'] . '</a></td></tr>';    
                 }
        }

                echo ("</tabel>");
        }

    
?>

</body>
</html>
 
Wouter J

Wouter J

23/06/2011 20:32:03
Quote Anchor link
Wordt je niet gek van al die elseif'jes kijk eens naar switch
 

23/06/2011 20:51:35
Quote Anchor link
Nee, want ik snap nu precies wat er staat. Switch heb ik nog nooit gebruikt, dus dat is voor mij nieuw. Hij werkt zo goed, dus ik ga er niets aan veranderen. Maar toch bedankt voor de tip!
 
The Force

The Force

24/06/2011 00:04:42
Quote Anchor link
O mijn god wellicht is het beter toch je antwoord te verwijderen (of om te kijken of je je code toch niet kan herschrijven).
 
Ozzie PHP

Ozzie PHP

24/06/2011 00:22:54
Quote Anchor link
Mark, ik zou toch zeker even kijken naar de tip van Wouter J. Ook al werkt jouw oplossing, het is niet een heel fraaie oplossing. Je zult zien dat het gebruik van switch helemaal niet moeilijk is en een stuk overzichtelijker.
Gewijzigd op 24/06/2011 00:25:13 door Ozzie PHP
 
Arjan -

Arjan -

24/06/2011 00:28:40
Quote Anchor link
Doe niet zo moeilijk met die voorwaardes en haal gewoon alles wat je nodog hebt in je totale script op uit de database.1 of 2 microseconden extra ga je echt niet dood aan. Die ifjes nemen wellicht meer tijd in beslag.....

En wanneer nodig switch gebruiken. En voor de leesbaarheid kan je beter de mysql statements in hoofdletters weergeven en het overige in kleine letters.
Gewijzigd op 24/06/2011 00:32:28 door Arjan -
 



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.