Avatar billede coolzone Nybegynder
08. maj 2004 - 10:08 Der er 14 kommentarer

PHP - MySQL - Søgning

Hej

Jeg har nu i lang tid rodet med at oprette et simpelt søgefelt der skal give adgang til resultater fra en database.

Databasen er oprettet og den indeholder nogle tekst felter. En side med <form ... <input ... er blevet lavet. En php side kaldes og det som brugeren har intastet i formen skal der søges på i felterne i databasen. Jeg har prøvet med adskillelige scripts uden succes. Jeg kan sagten hente informationer ud af databasen hvis jeg gør det manuelt.

Er der nogen der ligger inde med et simpelt script i FULDTEKST søgning som jeg kan bruge?
Avatar billede coolzone Nybegynder
08. maj 2004 - 10:11 #1
Hvad gør jeg forkert? $sogning er formfeltets variable

<?php
// Forbind og vælg database
mysql_connect("localhost", "brugernavn", "password") or die(mysql_error());
mysql_select_db("mindatabase") or die(mysql_error());

// Vores query
$query = " SELECT * FROM tabel WHERE MATCH(navn, titel, tekst) AGAINST ('$sogning') ";
// Resultatet af vores query
$resultater = mysql_query($query) or die(mysql_error());

// While løkke der løber resultaterne igennem, og udskriver dem
while($row = mysql_fetch_array($resultater)) {
    print $titel ."<br />";
}

?>
Avatar billede erikjacobsen Ekspert
08. maj 2004 - 10:18 #2
print $titel ."<br />";
Hvor kommer $titel fra?? ;)
Avatar billede coolzone Nybegynder
08. maj 2004 - 10:35 #3
Jeg ved det ikke, det skulle være et script man lige kunne sætte ind. Jeg har postet det her hvis nogen kan gennemskue det eller evt. har et alternativ.
Avatar billede erikjacobsen Ekspert
08. maj 2004 - 10:41 #4
Ikke nødvendigt. Du henter en $row ud, men $titel har intet med $row at gøre.
Kan du se det?
Avatar billede coolzone Nybegynder
08. maj 2004 - 10:47 #5
Ja, men hvis jeg henter $row ud kommer der hele tiden dette svar: "Can't find FULLTEXT index matching the column list"
Avatar billede erikjacobsen Ekspert
08. maj 2004 - 10:53 #6
Når du ikke giver flere oplysninger om dit nuværende script og din tabel, så er der jo ikke mere at gøre.
Måske nogen kan svare på dit egentlige spørgsmål.
Avatar billede coolzone Nybegynder
08. maj 2004 - 11:17 #7
Anyone?
Avatar billede muddi Praktikant
08. maj 2004 - 13:38 #8
Er der FULLTEXT på navn, titel, tekst?!
Avatar billede muddi Praktikant
08. maj 2004 - 13:40 #9
Der skal være oprettet et fulltext index på de 3 felter, ellers vil det ikke virke. Prøv at smide et dump af din tabelstruktur (lav det evt. med phpmyadmin)
Avatar billede homsabu Nybegynder
08. maj 2004 - 13:43 #10
prøv evt med:

print $row[titel] ."<br />";
Avatar billede muddi Praktikant
08. maj 2004 - 13:47 #11
Der skal i din tabelstruktur være følgende:

FULLTEXT KEY `navn` (`navn`,`titel`,`tekst`)

ellers vil du ikke kunne bruge MATCH(...) AGAINST(...) på felterne!
Avatar billede coolzone Nybegynder
08. maj 2004 - 18:24 #12
Muddi (eller en anden):

Kan du prøve at give mig en fuld forklaring på hvad jeg skal gøre? Evt. ret i den ovenstående så den vil virke.
Avatar billede coolzone Nybegynder
09. maj 2004 - 02:37 #13
Jeg har fundet ud af det.
Avatar billede muddi Praktikant
09. maj 2004 - 13:36 #14
Hvad fandt du ud af? Var det fordi du manglede et FULLTEXT index på felterne?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester