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.
Fatal error: Call to a member function Query() on a non-object in C:\Documents and Settings\Versteeg\Mijn documenten\kinderen\Johan\Wamp-php\Peter\Nieuw\zoeken.php on line 77
Tja, zoals ik al zei, geeft dat scriptje van mij alleen de juiste query.
Je zult die query dus zelf nog ergens in je script moeten verwerken. Omdat je een klasse gebruikt voor je mysql verbindingen, kan ik niet zien hoe jij je mysql queries uit moet voeren. Maar afgaande op je eerste stuk code dat je postte, denk ik dat het volgende wel moet werken:
<?php
require("util.php");
$sql = new MySQL_class;
$sql->Create("peter");
if(isset($tag) || isset($uitleg))
{
$sql_query = "SELECT tags, uitleg FROM vrienden";
if(!empty($tag) && !empty($uitleg))
{
$sql_query .= " WHERE tags LIKE '".$tag."' OR uitleg LIKE '".$uitleg."'";
}
elseif(!empty($tag))
{
$sql_query .= " WHERE tags LIKE '".$tag."'";
}
else
{
$sql_query .= " WHERE uitleg LIKE '".$uitleg."'";
}
$sql->Query ($sql_query);
for ($i = 0; $i < $sql->rows; $i++)
{
$sql->Fetch($i);
$tags = $sql->data[0];
$uitleg = $sql->data[1];
}
}
else
{
//echo(Hier de foutmelding als beide variablelen leeg zijn...)
}
?>
Script dat ik in eerste instantie gaf, was niet foutloos. Als beide variabelen namelijk ingevuld waren, ging het de fout in...
<?php
require("util.php");
$sql = new MySQL_class;
$sql->Create("peter");
// Als beide variabelen gevuld zijn:
if(isset($tag) && !empty($tag) && isset($uitleg) && !empty($uitleg))
{
$sql_query = "SELECT tags, uitleg FROM vrienden WHERE tags LIKE '".$tag."' OR uitleg LIKE '".$uitleg."'";
}
// Als alleen $tag gevuld is:
elseif(isset($tag) && !empty($tag))
{
$sql_query = "SELECT tags, uitleg FROM vrienden WHERE tags LIKE '".$tag."'";
}
// Als alleen $uitleg gevuld is:
elseif(isset($uitleg) && !empty($uitleg))
{
$sql_query = "SELECT tags, uitleg FROM vrienden WHERE uitleg LIKE '".$uitleg."'";
}
// Als $sql_query bestaat, is er dus een variable ($tag, $uitleg of beide) ingevuld
if(isset($sql_query))
{
echo '<table border="1" cellspacing="2">';
echo '<tr><th>Tags</th><th>Uitleg</th></tr>';
$sql->Query ($sql_query);
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>';
}
echo '</table>';
}
// Als $sql_query niet bestaat, heb je te maken met 2 lege variabelen.
else
{
//echo(Hier de foutmelding als beide variablelen leeg zijn...)
}
?>
Nog een paar opmerkingen over je scripting:
- echo's behoeven geen haakjes;
- plaats echo's altijd tussen enkele quotes (dan kom je niet in de knoop met je html);
- waarom gebruik je die \n in je code?