Hallo allemaal,

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
Zo ziet het voledig php script wat betreft het weergeven van de query eruit:

<?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>&#60;$tags&#62;</td><td>$uitleg</td></tr>\n");
}
echo("</table>\n");
?>
Door voordat je de query uitvoert met [php]empty[/php] te checken of er wel iets in zit.
if (isset($_POST['tag']) && !empty($_POST['tag']))
{
je script

}
Ik heb nu:
<?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>&#60;$tags&#62;</td><td>$uitleg</td></tr>\n");
}
echo("</table>\n");
}
?>

Maar hij selecteerd nog de hele tabel
Maar zijn tag en uitleg wel postvariabelen?

Je gebruikt in je query de variabelen $tag en $uitleg, dus je moet ook controleren of die niet leeg zijn...


<?

if(isset($tag) && !empty($tag))
{
       // Op dezelfde manier controleren of $uitleg niet leeg is...
}
?>


ps. Houd er wel rekening mee dat als $tag of $uitleg niet bestaan of leeg zijn, dat de hele query niet uitgevoerd wordt.
Is het niet mogelijk, om de query 2 keer uit te voeren, een keer voor de eerste variabele, met empty check
dan voor de 2e variable met empty check
Ja, tuurlijk is dat mogelijk, alleen krijg je dan wel 2 sets resultaten...

Ik zou het denk ik als volgt oplossen:


<?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...
}

?>
hallo, daar was ik weer. Ik heb nog een tijdje doorgeprobeerd op het script hierboven, maar om de een of andere reden werkt hij nu helemaal niet meer. Er wordt niks meer weergegeven, ook geen foutmelding. Hieronder staat het script zoals het er nu uit ziet:

<?php
$tag = $_POST["tag"];
$uitleg = $_POST["uitleg"];
?>

<?php
require("util.php");
$sql = new MySQL_class;
$sql->Create("peter");
?>

<br>
<br>

<?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...)
}

?>

</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.
Hoe geef ik de $sql weer met behulp van bovenstaand script?

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?

Reageren