Query uitleg, MYSQl-database voor een bibliotheek
Geheel ervaringloos met PHP ben ik gelukkig niet, maar toch kreeg ik op andere fora het idee dat ik nog flink achterloop op de rest, vandaar dat ik mijn vraag hier plaats.
Ik ben momenteel bezig met een MYSQl-database voor mijn bibliotheek die ik vanuit een php-bestand kan bezoeken. Vanuit het hoofdscherm kan met [1] een invoerveld en [2] een keuzelijst worden gezocht in de database. De keuzelijst bevat opties als "zoek in alles, auteur, titel, ISBN, uitgever" enzovoorts.
Ik wil echter dat er bij het zoeken op personen (auteur, uitgever, drukker, onderwerp) een andere query wordt uitgevoerd dan bij zaken als boeken of een algemene zoekterm.
Nu kreeg ik de volgende query-onderdelen van iemand als antwoord:
$sQuery = "SELECT foo FROM bar WHERE true ";
if ($_POST['keuze']) { $sQuery .= " AND .... LIKE '%....%' "};
Ik snap dat de regel met 'if' betekent dat er een ander soort query moet worden uitgevoerd als er een andere keuze (auteur, titel etc..) wordt gemaakt. Voor de rest snap ik eerlijk gezegd helemaal niets van deze codes. Hoe moet ik deze gebruiken? Wat heb ik er voor nodig?
Alvast bedankt,
Mark
Gewijzigd op 11/06/2011 16:32:54 door Niels K
Code (php)
Als de query exact hetzelfde is alleen het veldnaam per selectie anders is; en dan ook nog er van uitgaande dat de value van de select-box overeen komt met de kolomnaam in de database, kun je die rechtstreeks in je query plakken. Dat zou simpeler zijn:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
/*
Ga er van uit dat je selectbox de naam 'soort' draagt
*/
$query = 'SELECT veld1, veld2 FROM foo WHERE '.mysql_real_escape_string($_POST['soort']).' = "%zoekwaarde%"';
// Voer query uit
?>
/*
Ga er van uit dat je selectbox de naam 'soort' draagt
*/
$query = 'SELECT veld1, veld2 FROM foo WHERE '.mysql_real_escape_string($_POST['soort']).' = "%zoekwaarde%"';
// Voer query uit
?>
Alleen nu vraag ik me wel de volgende dingen af:
1. Waar precies moet ik dat stukje code zetten? Momenteel is het PHP-stuk dat de query behandelt als volgt:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$zoekterm = $_POST["zoekterm"];
$voorwaarde = $_POST["voorwaarde"];
$mysql = mysql_connect("localhost","vermeermark","vermeermark") or die("Fout: Er is geen verbinding met de server tot stand gebracht!");
mysql_select_db("bibliotheek") or die("Fout: Het openen is mislukt!");
$resultaat = mysql_query("SELECT ... FROM ... WHERE ...") or die("De query op de database is mislukt!");
mysql_close() or die("Het verbreken van de verbinding met de server is mislukt!");
?>
$zoekterm = $_POST["zoekterm"];
$voorwaarde = $_POST["voorwaarde"];
$mysql = mysql_connect("localhost","vermeermark","vermeermark") or die("Fout: Er is geen verbinding met de server tot stand gebracht!");
mysql_select_db("bibliotheek") or die("Fout: Het openen is mislukt!");
$resultaat = mysql_query("SELECT ... FROM ... WHERE ...") or die("De query op de database is mislukt!");
mysql_close() or die("Het verbreken van de verbinding met de server is mislukt!");
?>
2. Bij de verschillende queries moeten verschillende resultaten worden weergegeven, én afgedrukt. Bepaalde queries geven 4 cellen met resultaten, andere maar 2 cellen. Hoe moet ik die verandering in tabelstructuur weer geven?
- gebruik geen or die
wat wil je nu dat je query weergeeft?
Gewijzigd op 11/06/2011 17:25:34 door Jasper DS
Misschien is het niet het handigst om dingen meerdere malen te kopiëren, maar zoals ik al zei: dit is hoe ik het snap, en ik ga niets gebruiken dat ik niet snap.
zo kan je gegevens uit de db halen:
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$sql = "SELECT veld1, veld2
FROM tabel
";
# 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
{
# De query is gelukt -> fetchen
while($row = mysql_fetch_assoc($result))
{
echo $row['veld1'].'<br/>';
echo $row['veld2'].'<br/>';
}
}
?>
$sql = "SELECT veld1, veld2
FROM tabel
";
# 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
{
# De query is gelukt -> fetchen
while($row = mysql_fetch_assoc($result))
{
echo $row['veld1'].'<br/>';
echo $row['veld2'].'<br/>';
}
}
?>
Ok, dan ga ik dit eens proberen. Maar waar precies moet het stukje van Erik met de if's en elseif's?
dat moet je vervangen door lijn 2-4
Parse error: syntax error, unexpected T_ELSEIF in V:\www\bibliotheekzoekvraag2.php on line 13
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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';
}
?>
$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';
}
?>
in jou geval kan je hier beter gebruik maken van een switch
Ik heb hem overgenomen zoals hierboven. Maar na de ; achter elke query moet er dus een } komen?
als je Erik's voorbeeld wil gebruiken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$query = 'SELECT veld1, veld2 FROM foo ';
if ($var == 'auteur') {
$query .= 'WHERE auteur LIKE "%naam%"';
}//afsluiten
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
?>
$query = 'SELECT veld1, veld2 FROM foo ';
if ($var == 'auteur') {
$query .= 'WHERE auteur LIKE "%naam%"';
}//afsluiten
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
elseif ($var == 'titel') {
$query .= 'WHERE titel LIKE "%titel%"';
}
?>
Gewijzigd op 11/06/2011 23:43:27 door gerhard l
Dank je: nu doet hij het wel, al zijn er weer andere dingen die fout gaan. Het blijft een hele taak zeg...
Gewijzigd op 11/06/2011 23:47:47 door gerhard l
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in V:\www\bibliotheekzoekvraag2.php on line 35 (regel 27 hieronder)
Code (php)
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
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
<?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';
}
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>");
?>
$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';
}
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>");
?>
De structuur van je code zou zo moeten zijn:
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$sql = "SELECT veld1, veld2
FROM tabel
";
# 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
{
# De query is gelukt -> fetchen
while($row = mysql_fetch_assoc($result))
{
echo $row['veld1'].'<br/>';
echo $row['veld2'].'<br/>';
}
}
?>
$sql = "SELECT veld1, veld2
FROM tabel
";
# 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
{
# De query is gelukt -> fetchen
while($row = mysql_fetch_assoc($result))
{
echo $row['veld1'].'<br/>';
echo $row['veld2'].'<br/>';
}
}
?>
En dat is nu niet het geval.
De queries heb ik overigens stuk voor stuk getest, en die werken allemaal goed.
dat komt omdat je query waarschijnlijk fout is -> daarom, bouw een foutafhandeling in zoals ik getoond heb hierboven!
Maar ik zei net: ik kreeg foutmeldingen omtrent die foutafhandeling.