Avatar billede siredward Nybegynder
03. juni 2004 - 20:03 Der er 19 kommentarer og
1 løsning

Søgefunktion til søgning i SQL

Jeg har en database med et par tusinde produkter. Tabellen heder simpelthen "products" og indeholder felterne "nick", "title" og "desc", som indeholder hendholdsvis et produkt id, en produkt title og en kort beskrivelse af produktet.

Jeg kunne godt tænke mig at have en søgeboks som mine brugere kunne bruge til at søge imellem produkterne. Alt den skal gøre er at søge i "title" og "desc" og så liste alt hvad der matcher.

Nogen der har nogle ideer eller scripts?

Mvh: Lauge S Jepsen
Avatar billede dennismp Nybegynder
03. juni 2004 - 20:08 #1
$search = $_GET['search']; // evt addslashes

$sql = "SELECT *  ".
      "FROM products ".
      "WHERE title LIKE  '%$search%' OR `desc` like '%$search%' ";

$res = mysql_query($sql) or die(mysql_error()) ..
Avatar billede dennismp Nybegynder
03. juni 2004 - 20:10 #2
for at gøre det færdig:

$search = $_GET['search']; // evt addslashes

$sql = "SELECT nick, title, `desc` ".
      "FROM products ".
      "WHERE title LIKE  '%$search%' OR `desc` like '%$search%' ";


$res = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_row($res)) {
  print "id = $row['id'], title = $row['title'], desc = $row['desc']<br>";
}

Skal nok lige justeres :)
Avatar billede siredward Nybegynder
04. juni 2004 - 00:33 #3
Den har bøvl med denne linje:

$res = mysql_query($sql) or die(mysql_error());


Den siger:

Parse error: parse error, unexpected T_VARIABLE in /customers/toprankbusiness.com/toprankbusiness.com/httpd.www/cbse/result.php on line 26



Mvh Lauge S Jepsen
Avatar billede siredward Nybegynder
04. juni 2004 - 00:37 #4
Ups, min fejl. Den har et problem med denne linje:

print "id = $row['id'], title = $row['title'], desc = $row['desc']<br>";


og skriver:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /customers/toprankbusiness.com/toprankbusiness.com/httpd.www/cbse/result.php on line 27



Mvh: Lauge Jepsen
Avatar billede siredward Nybegynder
04. juni 2004 - 01:25 #5
Ok, nu har jeg leget lidt med det. Om det er blevet værre, ved jeg ikke:

if(is_array($HTTP_POST_VARS)) {
$search = $HTTP_POST_VARS['search'];
} elseif (is_array($_POST)) {
$search = $_POST['search'];
}

$sql = "SELECT 'nick', 'title', 'desc' FROM cbproducts WHERE 'title' LIKE  '%$search%' OR 'desc' like '%$search%' ";

$res = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_row($res)) {
echo "id = $row[nick], title = $row[title], desc = $row[desc]<br>";
}
exit;

Den kommer ikke længere med fejl, men den skriver heller ikke noget. "search" kommer nu fra en form fra en anden side.

Mvh Lauge
Avatar billede dennismp Nybegynder
04. juni 2004 - 12:52 #6
Får du stadig samme fejl?
Avatar billede siredward Nybegynder
04. juni 2004 - 14:22 #7
Jeg har forsimplet det lidt for at sikre mig at det ikke var $search variablen der var noget galt med:

$search = "dog training";

$sql = "SELECT 'nick', 'title', 'desc' FROM cbproducts WHERE 'title' LIKE  '%$search%' OR 'desc' like '%$search%' ";

$res = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_row($res)) {
    echo "id = $row[nick], title = $row[title], desc = $row[desc]<br>";
}
exit;


Nej den giver ingen fejl mere. Nu skriver den overhovedet ikke noget :(


Håber du kan se hvad der er galt.

Mvh Lauge Jepsen
Avatar billede dennismp Nybegynder
04. juni 2004 - 14:39 #8
Har du prøvet at smide SQL'en direkte i phpmyadmin/mysql ? og se hvad den retrnerer?
Avatar billede siredward Nybegynder
06. juni 2004 - 13:40 #9
Nu er jeg som sagt rimeligt ny til SQL/PHP/osv.

Hvad er det du vil have mig til at smide ind, og hvor?

Mvh Lauge Jepsen
Avatar billede dennismp Nybegynder
06. juni 2004 - 13:44 #10
har du phpMyAdmin som du kan bruge? (et værktøj hvor du kan se og rette i din database - de fleste webhoteller har dette installeret)
Avatar billede siredward Nybegynder
06. juni 2004 - 13:51 #11
jep det har jeg
Avatar billede dennismp Nybegynder
06. juni 2004 - 14:01 #12
Hvis vi tager din source fra før og får den til at skrive SQL'en ud:
$search = "dog training";

$sql = "SELECT 'nick', 'title', 'desc' FROM cbproducts WHERE 'title' LIKE  '%$search%' OR 'desc' like '%$search%' ";

print "SQL: $sql<br>";
$res = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_row($res)) {
    echo "id = $row[nick], title = $row[title], desc = $row[desc]<br>";
}
exit;


Gå nu ind i phpmyadmin - vælg din database. tryk på "sql" og paste din kode ind.. Når du nu udfører sql'en .. får du så også 0 rækker?
Avatar billede siredward Nybegynder
06. juni 2004 - 14:13 #13
Der skriver den:

Fejl

SQL-forespørgsel : 

$search = "dog training"

MySQL returnerede:


You have an error in your SQL syntax near '$search = "dog training"' at line 1
Avatar billede dennismp Nybegynder
06. juni 2004 - 14:23 #14
Hov, du misforstod mig :).

Brug den php-kode som jeg skrev. Når du udfører koden skriver den

SQL: SELECT `nick`, ...

så copy'n'paster du bare "SELECT `nick` .. " ind i phpmyadmin
Avatar billede siredward Nybegynder
06. juni 2004 - 14:30 #15
øhh. Jeg er bange for at jeg overhovedet ikke fatter hvad du mener nu... Jeg brugte den kode du skrev og der gav den en fejl. Skal jeg kun bruge:

SELECT 'nick', 'title', 'desc' FROM cbproducts WHERE 'title' LIKE  '%$search%' OR 'desc' like '%$search%'


Håber nu kan bære over med min langsomme opfattelsesevne :)

Mvh Lauge
Avatar billede dennismp Nybegynder
06. juni 2004 - 14:43 #16
Well, der skal to personer til at misforstå hinanden - så det er nok ligeså meget min skyld :-)

Men lad os prøve på en anden måde..

Hvis du taster følgende ind i phpmyamdin, hvad får du så tilbage:

SELECT 'nick', 'title', 'desc' FROM cbproducts WHERE 'title' LIKE  '%dog training%' OR 'desc' like '%dog training%'
Avatar billede siredward Nybegynder
06. juni 2004 - 17:40 #17
Så skriver den ikke noget tilbage. Der står bare at min SQL forespørgelse blev udført korrekt, og så ikke andet :(
Avatar billede dennismp Nybegynder
06. juni 2004 - 17:47 #18
Så er det fordi der er ikke nogen rækker hvor title eller desc matcher på 'dog training'.

prøv at tjekke dine rækker igennem og se om du kan finde een der gør.. Evt kan du paste outputtet på den title/felt du mener den bør finde..
Avatar billede siredward Nybegynder
06. juni 2004 - 18:11 #19
Det er lige meget hvad jeg skriver. Jeg har også prøvet med ord som "the", "and" og "or" som burde være i næsten alle produkt beskrivelser, men den skriver aldrig noget :(
Avatar billede siredward Nybegynder
08. juni 2004 - 14:43 #20
den blev afsluttet i en ny post
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