Ok mede dankzij jullie hulp heb ik mijn eerste werkende website kunnen maken. Codes zijn natuurlijk niet perfect zoals de ervaren mensen hier kunnen maken, maar het werkt uitstekend en mijn database vult zichtnetjes. Voor iemand die drie weken bezig (nog nooit php e.d. gedaan behalve html) is om een inlogsysteem, en upload systeem dat stap voor stap werkt en uiteindelijk in database toevoegt ben ik best blij met het resultaat. Ik wil iedereen dan ook bedanken voor je hulp.
Desondanks ik de basis heb neergezet wil ik nog 1 ding doen. Een zoekmachine die in mijn database zoekt er de resultaten toont. Mijn gebruikers uploaden foto's waar ze een categorie, omschrijving, trefwoord aan koppelen.
Bij mij worden de volgende gegevens opgeslagen in de database:
-Nummer (automatisch)
-categorie (vooraf bepaald en gekozen door gebruikers in topdown menu)
-omschrijving (text invoer)
-trefwoord (ook simpele text invoer)
-afbeelding (locatie en naam van originele upgeload afbeelding)
-thumbnail (locatie en naam van thumbnail afbeelding
Graag zou ik willen zoeken op categorie, omschrijving en trefwoord. Als resultaat wil ik graag de thumbnails tonen die aan de zoekopdracht voldoen. Eerst simpel zoeken in omschrijving en trefwoord en de optie uitgebreid zoeken waarin gebruikers een categorie kunnen kiezen en een trefwoord en een omschrijvingswoord of meer. Beetje zoals je verwacht denk ik.
Wellicht dat hier een tutorial is of dat het dusdanig eenvoudig is dat het mij uitgelegd kan worden of een simpel voorbeeld is. Ik hoop dat het niet al te moeilijk is.
Nogmaals bedankt voor de hulp en alvast bedankt voor het beantwoorden van deze vraag.
De syntax van de query die je wilt gebruiken ziet er als volgt uit voor het zoeken in een omschrijving:
<?php
$sql = "
SELECT thumbnail
FROM tabel
WHERE omschrijving LIKE '%".$zoekwoord."%'
";
?>
Waarbij $zoekwoord het zoekwoord is dat de gebruiker ingevuld heeft.
Nu is dit natuurlijk alleen voor het zoeken in een omschrijving maar met behulp van een nette if/elseif/else constructie kun je aan de hand van de ingevulde gegevens een soortgelijke query opbouwen.
Laat ik simpel beginnen ik heb met die tips van jouw het onderstaande nu gemaakt. Ik heb nu een invoerveld gemaakt zodra gebruiker een woord invoert kennelijk zoekt het in de tabel omschrijving van database afbeelding (vanzelfsprekend maak ik eerst connectie met database) naar het woord(en) dat de gebruiker heeft ingevoerd.
Hoe kan ik het nu het zoekresultaat tonen dmv thumbnail afbeelding...?
@Blanche:
Stel ik heb een table met daarin de colomn titel. De titels beginnen allemaal met een hoofdletter. Door deze zoekmachine worden de titels alleen gevonden wanneer men het woord tijdens het zoeken ook met een hoofdletter invoert. Dat wil je niet, want daar rekent de bezoeker niet op. Hoe kun je zorgen dat de zoekfunctie geen onderscheid maakt tussen hoofd- en kleine letters? M.a.w. dat ie beide resultaten uitspuugt...??
Beste Karel,
Ik zag jouw topic en omdat ik zelf ook naar een zoekfunctie zocht heb ik hier op ingehaakt.
Ik heb er het volgende van gemaakt en moet zeggen dat het prima werkt.
Let op hij is nog niet SQL injectie-proof!!!
<h1>Zoeken</h1>
<form action="search.php" method="post">
<span class="formInput">zoek:</span><input type="text" name="zoekwoord" />
<input type="submit" name="searchBtn" value="zoek!" />
</form>
<?php
// Als een zoekwoord wordt ingegeven:
if(isset($_POST['searchBtn'])) {
$zoekwoord = $_POST['zoekwoord'];
// Aantal resulaten tellen:
$sql = mysql_query("
SELECT count(*)
FROM topic
WHERE topic_title LIKE '%".$zoekwoord."%'
OR topic_txt LIKE '%".$zoekwoord."%'
");
$totalSearch = mysql_result($sql, 0 ,0);
// Aantal resultaten weergeven:
print '<p style="float:right;">Resultaten <b>'.$totalSearch.'</b> voor <b>'.$zoekwoord.'</b></p><br />';
print '<p style="float:left;"><h1>Resultaat:</h1></p>';
// Zoekfunctie:
$sql = mysql_query("
SELECT *
FROM topic
WHERE topic_title LIKE '%".$zoekwoord."%'
OR topic_txt LIKE '%".$zoekwoord."%'
");
// Resultaten weergeven:
while($res = mysql_fetch_array($sql)) {
print '<p><a href="forum_show_topic.php?cat='.$res['cat_id'].'&id='.$res['topic_id'].'">';
print $res['topic_title'].'</a><br />';
print substr($res['topic_txt'],0,250);
print '...<br />';
print '<a href="forum_show_topic.php?cat='.$res['cat_id'].'&id='.$res['topic_id'].'">http://www.rechtenstudent.net/forum/forum_show_topic.php?cat='.$res['cat_id'].'&id='.$res['topic_id'].'</a></p>';
}
}
?>
Advies: bouw je query op naar wat de bezoeker heeft ingevuld.
$query = "SELECT * FROM topic WHERE ";
if ISSET($_POST['topic'] {
$query = $query . "topic_title LIKE '%".$zoekwoord."%"
etc
zo krijg je niet allerlei lege LIKE zoekacties.
zorg wel dat je $_POST beveiligd is tegen SQL injection, hier eerder genoemd.
uiteindelijk vuur je je query af: $sql = mysql_query($query);
Bij problemen kan je nu altijd een echo doen van $query
Ik heb het zelfde probleem m.b.t. hoofdletters. Als er een woord in de tabel zit die met een hoofdletter begint en ik zoek met kleine letters, dan vindt hij geen gelijkheid. Een oplossing hiervoor zie ik niet terug in het antwoord van 'The Ultimate'. Ik ben nu bezig met een zoekfunctie voor de webshop alledagdeals.nl en als ik daar vandaag ga zoeken op notebook krijg ik als resultaat: geen gegevens gevonden. In de aanbieding van Ibood komt 2 keet 'Notebook' voor. Als ik nu ga zoeken met Noteboek krijg ik idd resultaat te zien. Hoe los ik dit probleem op?