Avatar billede xeno-morph Nybegynder
15. februar 2001 - 10:25 Der er 12 kommentarer og
2 løsninger

Søgning i en mysql database

Jeg har en database med et navn, en url, og 10 søgeord, som følgende :
Navn - url - ord1 - ord2 - ord3 - osv...
nu vil jeg gerne kunne søge efter de ord på min side, jeg vil gerne kunne søge, hvis jeg f.eks har 3 navne, der har søgeordet : cigaretter, kunne søge på \"cigaret\" og så kunne liste de navne der har det ord i sin base...
Flere point gives gerne, alt efter hvor komplet og godt scriptet er...
Avatar billede brain Nybegynder
15. februar 2001 - 10:32 #1
<?php

$db=mysql_connect(\"localhost\",$dbuser,$dbpass);
mysql_select_db(\"database\");

$sql = \"select navn, url from tabel where ord1 like \'%$searchstring%\' or ord2 like \'%$searchstring%\' or ord3 like \'%$searchstring%\' or ord4 like \'%$searchstring%\' or ord5 like \'%$searchstring%\' or ord6 like \'%$searchstring%\' or ord7 like \'%$searchstring%\' or ord8 like \'%$searchstring%\' or ord9 like \'%$searchstring%\' or ord10 like \'%$searchstring%\'\";
$q = mysql_query( $sql )
list($navn,$url)=mysql_fetch_row(mysql_query($sql));

echo $navn;
echo $url;

?>
Avatar billede erikjacobsen Ekspert
15. februar 2001 - 10:32 #2
mener du

select * from database where ord1 like \'%cigaret%\' or ord2 like \'%cigaret%\'
                or ... or ord10 like \'%cigaret%\'

??
Avatar billede erikjacobsen Ekspert
15. februar 2001 - 10:33 #3
Ja, brain, det var jo det jeg mente ;-))
Avatar billede xeno-morph Nybegynder
15. februar 2001 - 10:46 #4
<?
$dbuser = \"domain\";
$dbpass = \"password\";
$db=mysql_connect(\"mysql.domain.dk\",$dbuser,$dbpass);
mysql_select_db(\"navne\");

$sql = \"select navn, url from tabel where ord1 like \'%$searchstring%\' or ord2 like \'%$searchstring%\' or ord3 like \'%$searchstring%\' or ord4 like \'%$searchstring%\' or ord5 like \'%$searchstring%\' or ord6 like \'%$searchstring%\' or ord7 like \'%$searchstring%\' or ord8 like \'%$searchstring%\' or ord9 like \'%$searchstring%\' or ord10 like \'%$searchstring%\'\";
$q = mysql_query( $sql );
list($navn,$url)=mysql_fetch_row(mysql_query($sql));

echo $navn;
echo $url;

?>

den kode burde virke, men....

Warning: Supplied argument is not a valid MySQL result resource in /hotel2/nygadecenter/WWW/admin/search.php on line 9

line 9 == list($navn,$url)=mysql_fetch_row(mysql_query($sql));
Avatar billede erikjacobsen Ekspert
15. februar 2001 - 12:14 #5
Hedder din tabel også \"tabel\"  - fejlen komme pga en syntaksfejl i sql-en,
og det med navnet er nok det mest oplagte...
Avatar billede xeno-morph Nybegynder
15. februar 2001 - 12:41 #6
ok, det er altsammen fedt, nu får jeg bare den første i min base ud... men hvordan søger jeg med et formfield ??
Avatar billede erikjacobsen Ekspert
15. februar 2001 - 12:50 #7
Du laver en html-fil med

  <form action=\"ditnyescript.php\">
  <input type=\"text\" name=\"searchstring\">
  <input type=\"submit\">

Og alle der matcher, får du i ditnyescript.php ved at tilføje efter

  $q = mysql_query( $sql );

  while ($row=$mysql_fetch_array($q)) {
    echo $row[\'navn\'].\" \".$row[\'url\'].\"<br>\\n\";
  }

Avatar billede xeno-morph Nybegynder
15. februar 2001 - 13:55 #8
kewl, det virker, men nu vil jeg gerne kunne trykke : vis oplysninger, og så kommer alle butikkens oplysninger op i et nyt vindue, alle de oplysninger fra mysql databasen, for den enkelte søgning, altså, hvis jeg får :
søgeresultater :
nr1 : bla bla bla  -- Vis info
nr2 : kjdhfkjhfdkjh -- vis info

hvordan gør jeg det ?
Avatar billede xeno-morph Nybegynder
15. februar 2001 - 13:56 #9
efter som det var et nyt spørgsmål kommer der lige nogle flere point :)
Avatar billede erikjacobsen Ekspert
15. februar 2001 - 14:01 #10
echo \"<a href=\\\"\".$row[\'url\'].\"\\\">\".$row[\'navn\'].\"</a><br>\\n\";

i stedet for den echo der er nu
Avatar billede xeno-morph Nybegynder
15. februar 2001 - 14:04 #11
den har jeg.. men jeg skal ikke ind på url\'en... jeg skal vise alle de ting der står i min mysql... ALLE tingene skal listes, som feks...
I nyt vindue :
Navn = blah
url = www.blah.com
ord1 = kfg
ord2 = slkdfj

osv...
Avatar billede styrken Nybegynder
15. februar 2001 - 14:20 #12
Avatar billede xeno-morph Nybegynder
15. februar 2001 - 14:33 #13
styrken... det de har der kan jeg ikke bruge.. jeg ved allerede det de bruger, nu skal jeg bruge det jeg forklarede i forrige spørgsmål....
Avatar billede erikjacobsen Ekspert
15. februar 2001 - 16:01 #14
Så kan du lave en ny PHP-fil til at vise udtrækket. Jeg går ud fra at navnet er
unikt, så du kan bruge det som nøgle:

echo \"<a href=\\\"nyphpfil.php?navn=\".urlencode($row[\'url\']).\"\\\">\".$row[\'navn\'].\"</a><br>\\n\";

og så i nyphpfil.php aflæse $navn, lave en select og udskrive alle de ting du vil.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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