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
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
$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()) ..
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 :)
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
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
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
Får du stadig samme fejl?
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
Har du prøvet at smide SQL'en direkte i phpmyadmin/mysql ? og se hvad den retrnerer?
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
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)
06. juni 2004 - 13:51
#11
jep det har jeg
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?
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
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
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
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%'
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 :(
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..
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 :(
08. juni 2004 - 14:43
#20
den blev afsluttet i en ny post
Vi tilbyder markedets bedste kurser inden for webudvikling