Zoekfunctie werkt niet goed
Ik moet voor school een php website maken met php zoekfunctie. Mijn zoekfunctie kan al op artiestnaam zoeken maar op titel niet helaas.
Hier is mijn code:
Quote:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Website Arno 4HV5</title>
</head>
<body>
<LINK REL=StyleSheet HREF="style.css" TYPE="text/css" MEDIA=screen>
<div id="container">
<div id="header">
<h1>
Arno Flapper 4h5
</h1>
</div>
<div id="navigation">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="voegtoe.php">Voeg eigen nummer toe</a></li>
</ul>
</div>
<div id="content-container">
<div id="content">
</div>
<div id="aside">
<p>
<form action="search.php" method="post">
Artiest: <input type="text" name="artist" /><br />
Titel: <input type="text" name="titel" /><br />
<input type="submit" value="Submit" />
</form>
<p>
</div>
<div id="footer">
Copyright © Arno Flapper 4H5, 2011
</div>
</div>
</div>
</body>
</html>
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
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
<?php
//MySQL gegevens
$host = "mysql12.000webhost.com"; //Hostnaam van de database
$user = "a5715510_admin"; //Username van de database
$wachtwoord = "******"; //Wachtwoord van de database
$database = "a5715510_995919"; //Naam van de database
$verbinding = mysql_connect($host, $user, $wachtwoord)
or die("Kan niet met de server verbinden");
$db = mysql_select_db($database)
or die("Kan niet met de database verbinden");
$artist = $_POST['artist'];
$titel = $_POST['titel'];
if($artist != NULL && $titel == NULL)
{
$sql = mysql_query("SELECT * FROM muziek WHERE Artiest LIKE '%$artist%'");
}
if($titel != NULL && $artist == NULL)
{
$sql = mysql_query("SELECT * FROM muziek WHERE Liedje LIKE '%$titel%'");
}
?>
//MySQL gegevens
$host = "mysql12.000webhost.com"; //Hostnaam van de database
$user = "a5715510_admin"; //Username van de database
$wachtwoord = "******"; //Wachtwoord van de database
$database = "a5715510_995919"; //Naam van de database
$verbinding = mysql_connect($host, $user, $wachtwoord)
or die("Kan niet met de server verbinden");
$db = mysql_select_db($database)
or die("Kan niet met de database verbinden");
$artist = $_POST['artist'];
$titel = $_POST['titel'];
if($artist != NULL && $titel == NULL)
{
$sql = mysql_query("SELECT * FROM muziek WHERE Artiest LIKE '%$artist%'");
}
if($titel != NULL && $artist == NULL)
{
$sql = mysql_query("SELECT * FROM muziek WHERE Liedje LIKE '%$titel%'");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Website Arno 4HV5</title>
</head>
<body>
<LINK REL=StyleSheet HREF="style.css" TYPE="text/css" MEDIA=screen>
<div id="container">
<div id="header">
<h1>
Arno Flapper 4h5
</h1>
</div>
<div id="navigation">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="voegtoe.php">Voeg eigen nummer toe</a></li>
</ul>
</div>
<div id="content-container">
<div id="content">
Code (php)
</div>
<div id="aside">
<p>
<form action="search.php" method="post">
Artiest: <input type="text" name="artist" /><br />
Titel: <input type="text" name="titel" /><br />
<input type="submit" value="Submit" />
</form>
<p>
</div>
<div id="footer">
Copyright © Arno Flapper 4H5, 2011
</div>
</div>
</div>
</body>
</html>
Wat doe ik fout? Als ik alleen op titel zoek dan komt er niks tevoorschijn dus misschien ligt het aan de database, hier ook effe een linkje van de database.
http://imageshack.us/photo/my-images/507/phpprobleem.png/
Alvast bedankt, als je meer info moet hebben vraag je het maar.
- Foutafhandeling op je mysql_queries (zonder gebruik van die()-praktijken )
- Je script is vatbaar voor MySQL-injection. Gebruik mysql_real_escape_string()
- Maak geen onnodige variabele aan.
zit er wel iets in je $_POST variabelen? controleer ook sowieso of er überhaupt gepost is.
Code (php)
dit moet zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
if( mysql_num_rows( $sql ) == 0 ){
echo 'Geen zoekresultaten. Pas je zoekopdracht aan.';
} else {
while ($row = mysql_fetch_array($sql)){
echo '<br/> Artiest: '.$row['Artiest'];
echo '<br/> Jaar: '.$row['Jaar'];
echo '<br/> Liedje: '.$row['Liedje'];
echo '<br/><br/>';
}
}
?>
if( mysql_num_rows( $sql ) == 0 ){
echo 'Geen zoekresultaten. Pas je zoekopdracht aan.';
} else {
while ($row = mysql_fetch_array($sql)){
echo '<br/> Artiest: '.$row['Artiest'];
echo '<br/> Jaar: '.$row['Jaar'];
echo '<br/> Liedje: '.$row['Liedje'];
echo '<br/><br/>';
}
}
?>
Daarnaast zou ik ook wat zaken gaan escapen in je queries, anders zit je in no-time zonder database ;-)
Ok ik ben weer wat opgeschoten, bedankt voor de hulp.