Zoekfunctie

Status
Niet open voor verdere reacties.

Stinuz

Terugkerende gebruiker
Lid geworden
14 jun 2003
Berichten
1.245
Hey, eigenlijk is het heel simpel om uit te leggen wat ik wil :D

Klik maar eens op ´´zoeken´´ bovenaan deze pagina.

Zoals je kan zien krijg je nu een pop-up menu met daarin een HTML code, ik wil precies hetzelfde voor mijn pagina search.php. Deze is al helemaal af maar moet alleen nog op bovenstaande manier weergeven worden ipv een losse pagina maar ik kan nergens een fatsoenlijk script vinden.

Iemand meer uitleg hierover?:thumb:
 
Als je al Dreamweaver CS3 hebt, zit Spry er al standaart in geinstalleerd...

Groetjes,

Kaj-Ivar
 
Ik maak het liever precies zoals Helpmij het heeft, maar toch bedankt voor de links.

Het zoeken is redelijk ingewikkeld, als je geavanceerd wilt kunnen zoeken (bijvoorbeeld als je ´´hallo´´ intypt dat hij bijvoorbeeld ook ´´hallo ik heet stinuz´´ of ´´ook hallo meneer´´ weergeeft moet je FULLTEXT inschakelen in je tabel.. dit doe je als volgt:

Ga naar phpmyadmin en selecteer je database (er van uitgaande dat je met MYSQL werkt, anders zou ik het ook niet weten), klik vervolgens op ´´SQL´´ en voer dit in:

Code:
ALTER TABLE myTable ADD FULLTEXT(field1, field2);

Hierbij is myTable dus de naam van jou tabel en field1 en field2 etc. de namen van de query´s in die tabel, die geindexeerd moeten worden voor de zoekfuncite.

Vervolgens heb ik dit formulier gemaakt om te zoeken:

search.php
HTML:
		What are you looking for?<br>
		<form action="searchresult.php" method="POST">
            <select name="type">
             <option value="battlegrounds">Battlegrounds</option>
             <option value="class">Class-specific</option>
             <option value="gold">Gold</option>
             <option value="leveling">Leveling Guide</option>
             <option value="profession">Professions</option>
            </select>
		<br><br>
		Guide name contains?
		<br>
		<input type="text" name="guidename"/>

            <br><br><input type="submit" value="Search" name="submit" />
           </form>

En dan worden hier de resultaten weergeven:

searchresult.php
PHP:
<?php

include("config.php");

include("header.php");

//Checken of er iets in de database zit.
$tabelQuery = "SELECT * FROM guides ORDER BY name ASC";
$tabelResult = mysql_query($tabelQuery) or die (mysql_error());

if (mysql_num_rows($tabelResult) == "0")
            {
              //Melding bij geen quotes in database
              echo"<center><b>Nothing found!</b></center>";


}
else
{
//Hier zorg ik ervoor dat waar ik ´´$guideword´´ intyp hij overneemt wat ik zojuist in het formulier heb ingevuld.
$guideword=$_POST['guidename'];
$tabelQuery = "SELECT * FROM guides where match(guidename) against ('" .$guideword. "') and type like '$_POST[type]' ORDER BY name ASC" or die (mysql_error());
$tabelResult = mysql_query($tabelQuery) or die (mysql_error());
//Bij de where match(guidename) vul jij natuurlijk de naam(en) van de query´s van jou eigen tabel in, meerdere query´s scheiden met een comma!

//HTML tabel opbouwen
?>
<ul>
<TABLE BORDER=0 WIDTH=90% ALIGN=CENTER>
  <TR BGCOLOR="#666666" ALIGN=CENTER>
    <TD><FONT COLOR="#FFFFFF"><B>Name</B></TD>
    <TD><FONT COLOR="#FFFFFF"><B>Submitter</B></TD>
    <TD><FONT COLOR="#FFFFFF"><B>Rating</B></TD>
    <TD><FONT COLOR="#FFFFFF"><B>Rate</B></TD>
  </TR>
<?
//Tabelrijtjes maken
  while($tabelRow = mysql_fetch_array($tabelResult))
  {
  $rateQuery = "SELECT AVG(cijfer) FROM guiderating WHERE downloadID='$tabelRow[id]'";
  $rateResult = mysql_query($rateQuery) or die (mysql_error());
  $rateRow = mysql_fetch_array($rateResult); 
    echo'
  <TR BGCOLOR="#CCCCCC" ALIGN=LEFT>
    <TD><B><a href="guide.php?id='. $tabelRow['id'] .'">'. $tabelRow['guidename'] .'</a></B> </TD>
    <TD><B>'. $tabelRow['name'] .'</B> </TD>
    <TD><B>'. $rateRow['AVG(cijfer)'] .'</B> </TD>
    <TD><B><a href="rating.php?id='. $tabelRow['id'] .'">Rate</a></B></TD>
  </TR>';
  }

  {
  }

}
?>
</TABLE>
</ul>

<?php include("footer.php"); ?>

Lees even het commentaar dat erbij staat, als je er niet uitkomt hoor ik het wel :D
 
Laatst bewerkt:
Ik maak het liever precies zoals Helpmij het heeft, maar toch bedankt voor de links.

Het zoeken is redelijk ingewikkeld, als je geavanceerd wilt kunnen zoeken (bijvoorbeeld als je ´´hallo´´ intypt dat hij bijvoorbeeld ook ´´hallo ik heet stinuz´´ of ´´ook hallo meneer´´ weergeeft moet je FULLTEXT inschakelen in je tabel.. dit doe je als volgt:

Ga naar phpmyadmin en selecteer je database (er van uitgaande dat je met MYSQL werkt, anders zou ik het ook niet weten), klik vervolgens op ´´SQL´´ en voer dit in:

Ehm...

dit werkt op zich ook met aanpassing in je SQL query.

neem tabel aanhef en kolom naam

SELECT * FROM aanhef WHERE naam LIKE '%%$variabele%%'

dan zoekt hij in de kolom naar de variabele die je meegeeft. Voor en achter de variabale mogen dan willekeurige tekens staan...

FULLTEXT doet dacht ik iets anders. Weet niet precies wat, heeft wel met zoekfuncties te maken =)
 
Waarom doe je 2x een %?

Een is volgens mij ook al voldoende...

PHP:
$query = "SELECT * FROM aanhef WHERE naam LIKE '%$variabele%'";
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan