Mysql Zoekfunctie
Ik ben bezig met een database in mysql.
Met php het k et voor elkaar gekregen:
toe te voegen, up te daten en te verwijderen.
Nu wil ik nog graag een zoekfunctie, maar dit wil niet helemaal lukken.
Als sql query heb ik nu:
("Select tags, uitleg from vrienden where tags like '%"$tag"%'")
De database heet dus vrienden. k zou ook graag willen weten hoe ik die naam wijzig.
Er wordt gezocht naar een tag, maar hij doet het alleen als je de voledig naam intikt. De bedoeling is dat hij het ook doet als het er op lijkt en dat hij kan zoeken op een deel van de uitleg, zonder dat je de voledige uitleg precies in hoeft te tikken.
Wie kan mij helpen?
Alvast bedankt
" SELECT tags, uitleg FROM vrienden WHERE tags LIKE '%".$tag."%' or uitleg like '%".$uitleg."%' ";
Welke foutmelding krijg je?
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Documents and Settings\Versteeg\Mijn documenten\kinderen\Johan\Wamp-php\Peter\Nieuw\zoeken.php on line 50
line 50 is in dit geval de sql query
Kun je line 45 t/m 55 even posten? Zet er ook even php tags omheen.
$sql->Query ("SELECT tags, uitleg FROM vrienden WHERE tags LIKE '%".$tag."%' or uitleg LIKE '%".$uitleg."%' ");
nog een vraagje, hoe wijzig ik de naam van m'n tabel?
En hoe voorkom ik dat hij bij een lege variabele de hele tabel selecteert?
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
echo("<table border=\"1\" cellspacing=\"2\">\n");
echo("<tr><th>Tags</th><th>Uitleg</th></tr>\n");
$sql->Query ("SELECT tags, uitleg FROM vrienden WHERE tags LIKE '%".$tag."%' or uitleg LIKE '%".$uitleg."%' ");
for ($i = 0; $i < $sql->rows; $i++) {
$sql->Fetch($i);
$tags = $sql->data[0];
$uitleg = $sql->data[1];
echo "<tr><td><$tags></td><td>$uitleg</td></tr>\n");
}
echo("</table>\n");
?>
echo("<table border=\"1\" cellspacing=\"2\">\n");
echo("<tr><th>Tags</th><th>Uitleg</th></tr>\n");
$sql->Query ("SELECT tags, uitleg FROM vrienden WHERE tags LIKE '%".$tag."%' or uitleg LIKE '%".$uitleg."%' ");
for ($i = 0; $i < $sql->rows; $i++) {
$sql->Fetch($i);
$tags = $sql->data[0];
$uitleg = $sql->data[1];
echo "<tr><td><$tags></td><td>$uitleg</td></tr>\n");
}
echo("</table>\n");
?>
empty te checken of er wel iets in zit.
Door voordat je de query uitvoert met {
je script
}
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if (isset($_POST['tag']) && !empty($_POST['tag']))
{ echo("<table border=\"1\" cellspacing=\"2\">\n");
echo("<tr><th>Tags</th><th>Uitleg</th></tr>\n");
$sql->Query ("SELECT tags, uitleg FROM vrienden WHERE tags LIKE '%".$tag."%' or uitleg LIKE '%".$uitleg."%' ");
for ($i = 0; $i < $sql->rows; $i++) {
$sql->Fetch($i);
$tags = $sql->data[0];
$uitleg = $sql->data[1];
echo("<tr><td><$tags></td><td>$uitleg</td></tr>\n");
}
echo("</table>\n");
}
?>
if (isset($_POST['tag']) && !empty($_POST['tag']))
{ echo("<table border=\"1\" cellspacing=\"2\">\n");
echo("<tr><th>Tags</th><th>Uitleg</th></tr>\n");
$sql->Query ("SELECT tags, uitleg FROM vrienden WHERE tags LIKE '%".$tag."%' or uitleg LIKE '%".$uitleg."%' ");
for ($i = 0; $i < $sql->rows; $i++) {
$sql->Fetch($i);
$tags = $sql->data[0];
$uitleg = $sql->data[1];
echo("<tr><td><$tags></td><td>$uitleg</td></tr>\n");
}
echo("</table>\n");
}
?>
Maar hij selecteerd nog de hele tabel
Je gebruikt in je query de variabelen $tag en $uitleg, dus je moet ook controleren of die niet leeg zijn...
Code (php)
ps. Houd er wel rekening mee dat als $tag of $uitleg niet bestaan of leeg zijn, dat de hele query niet uitgevoerd wordt.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
dan voor de 2e variable met empty check
Ik zou het denk ik als volgt oplossen:
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
if(isset($tag) || isset($uitleg))
{
$sql = "SELECT tags, uitleg FROM vrienden";
if(!empty($tag) && !empty($uitleg))
{
$sql .= " WHERE tags LIKE '".$tag."' OR uitleg LIKE '".$uitleg."'";
}
elseif(!empty($tag))
{
$sql .= " WHERE tags LIKE '".$tag."'";
}
else
{
$sql .= " WHERE uitleg LIKE '".$uitleg."'";
}
}
else
{
// Hier de foutmelding als beide variablelen leeg zijn...
}
?>
if(isset($tag) || isset($uitleg))
{
$sql = "SELECT tags, uitleg FROM vrienden";
if(!empty($tag) && !empty($uitleg))
{
$sql .= " WHERE tags LIKE '".$tag."' OR uitleg LIKE '".$uitleg."'";
}
elseif(!empty($tag))
{
$sql .= " WHERE tags LIKE '".$tag."'";
}
else
{
$sql .= " WHERE uitleg LIKE '".$uitleg."'";
}
}
else
{
// Hier de foutmelding als beide variablelen leeg zijn...
}
?>
<br>
<br>
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
if(isset($tag) || isset($uitleg))
{
$sql = "SELECT tags, uitleg FROM vrienden";
if(!empty($tag) && !empty($uitleg))
{
$sql .= " WHERE tags LIKE '".$tag."' OR uitleg LIKE '".$uitleg."'";
}
elseif(!empty($tag))
{
$sql .= " WHERE tags LIKE '".$tag."'";
}
else
{
$sql .= " WHERE uitleg LIKE '".$uitleg."'";
}
}
else
{
//echo(Hier de foutmelding als beide variablelen leeg zijn...)
}
?>
if(isset($tag) || isset($uitleg))
{
$sql = "SELECT tags, uitleg FROM vrienden";
if(!empty($tag) && !empty($uitleg))
{
$sql .= " WHERE tags LIKE '".$tag."' OR uitleg LIKE '".$uitleg."'";
}
elseif(!empty($tag))
{
$sql .= " WHERE tags LIKE '".$tag."'";
}
else
{
$sql .= " WHERE uitleg LIKE '".$uitleg."'";
}
}
else
{
//echo(Hier de foutmelding als beide variablelen leeg zijn...)
}
?>
</body>
</html>
Wie kan me helpen om het toch goed te krijgen? De variabelen worden in een andere php bestand ingevoerd. Door op de knop zoeken te klikken, zou het moeten lukken (invoer balk voor tags en uitleg appart), maar hij zoekt dus nog niet goed.
Met de echo opdracht krijg ik de query zelf, maar die moet dus nog op de 1 of andere manier verwerkt en weergegeven worden.
Hoe moet dit?