06. maj 2009 - 10:35
Der er
13 kommentarer og 1 løsning
søgefunktion med tilbagemelding
Hej, jeg har en almindelige søgefuntion der søger i databse. Denne skal udvides til at kunne give tilbagemeldning hvilke ord der søges på. Er der nogen der ved hvordan dette gøres nemmest. Tænker den måske skal kunne vise selve de ord der søges på men rapport herom måske hvornår og at den sender rapport hver måned eller man selv beder om et udtræ. Nogle gode ideer - evt. simpelt lille færdigt script. PS. den skal kunne søge i kategorier. :-)
Annonceindlæg fra Infor
Du bliver nødt til at være mere præcis. Når der bliver søgt på et (Eller flere) ord, skal disse søgeord så gemmes, så man kan få en oversigt over hvilke søgeord der bliver benyttet?
Hej, jeg skal prøve Søgefelt: <form class="search" method="post" action="search/result.php"> <input type="text" name="search" class="search"> <input type="submit" class="formsoeg" value="Søg"> </form> ----------------------------------------- Søgekoden: <?php open_db(); if(! function_exists('stripos') ) { function stripos($haystack, $needle, $offset=0) { return strpos(strtolower($haystack), strtolower($needle), $offset); } } if($search){ mysql_select_db("$db"); $noResult = "Din søgning gav intet resultat.<br><br>Prøv eventuelt igen med samme ord skrevet på en anden måde.<br><br>"; $query = mysql_query("SELECT * FROM sider WHERE ((indhold LIKE '%".addslashes($search)."%') OR (overskrift LIKE '%".addslashes($search)."%') OR (ord LIKE '%".addslashes($search)."%')) AND godkendt='ja' ORDER BY afdeling"); echo mysql_num_rows($query) . " resultat/er blev fundet og vist efter afdeling:<br><br>"; while($row = mysql_fetch_array($query)){ $indeks = $row["indeks"]; $afdeling = $row["afdeling"]; $overskrift = $row["overskrift"]; $filnavn = $row["filnavn"]; $indhold = $row["indhold"]; $indhold = strip_tags($indhold); echo ("<b>$afdeling</b><br>"); echo ("<a href=/$filnavn>» $overskrift</a><br>"); $display = 80; $pos = stripos($indhold,$search); $beginpos = $pos - $display; $endpos = $pos + $display + strlen($search); if( $beginpos < 0 ) $beginpos = 0; if( $beginpos == 0 ) $pre = ''; else $pre = '...'; if( $endpos >= strlen($indhold) ) $post = ''; else $post = '...'; $indhold = substr($indhold,$beginpos,($endpos-$beginpos+strlen($search))); $search_preg = preg_quote($search); $indhold = preg_replace("/($search_preg)/im",'<b>\1</b>',$indhold); print $pre.$indhold.$post; echo ("<br><br>"); } if (!$indeks){ print ("$noResult"); } close_db(); } ?> ---------------------------------------------- det giver så søgeresultatet. ----------------------------------------------- Det jeg gerne vil er at den registerer hvilke ord der søges på. Herefter feks en gang om måneden eller ved fremkald viser den dato der er søgt for et ord. Evt. bare kunne give feedback om de ord der er søgt på for en given periode. Håber det er klart nok ellers skriv endelig. :-)
Jamen så laver du da bare en ny tabel, hvori der lægges en række med søgeord og søgetidspunkt ( time() ) Så kan du altid lave noget script der viser søgeord for den periode du ønsker
Hej igen, jo en ny tabel er ikke noget problem, men hvilke koder 'putter' du så ind i eksisterende søgekode ??? :-)
kan og vil du hælpe med det - giver gerne 200 points *ss*
mysql_query("INSERT INTO searchwords_used (searchwords,posted) VALUES('". addslashes($_POST['search'])."','". time() ."')"); Bare lige et eks.. OG OG OG.. Husk at bruge $_POST['string']. Det er altid den bedste løsning
øh sætter du den ind før mysql_select_db("$db"); altså sådan her: } if($search){ mysql_query("INSERT INTO searchwords_used (searchwords,posted) VALUES('". addslashes($_POST['search'])."','". time() ."')"); mysql_select_db("$db"); osv osv
det er lige meget. Det skal bare være i din search funktion. Og ret det lige til, så det bliver lavet ordentligt det script der ;) if($_POST['search']){ // HUSK AT ANGIVE MED $_POST['search'] ... }
Hej igen er det den rette vej? --------------------------- <?php open_db(); if(! function_exists('stripos') ) { function stripos($haystack, $needle, $offset=0) { return strpos(strtolower($haystack), strtolower($needle), $offset); } } if($_POST['search']){ mysql_query("INSERT INTO searchwords_used (searchwords,posted) VALUES('". addslashes($_POST['search'])."','". time() ."')"); mysql_select_db("$db"); $noResult = "Din søgning gav intet resultat.<br><br>Prøv eventuelt igen med samme ord skrevet på en anden måde.<br><br>"; $query = mysql_query("SELECT * FROM sider WHERE ((indhold LIKE '%".addslashes($_POST['search'])."%') OR (overskrift LIKE '%".addslashes($_POST['search'])."%') OR (ord LIKE '%".addslashes($_POST['search'])."%')) AND godkendt='ja' ORDER BY afdeling"); echo mysql_num_rows($query) . " resultat/er blev fundet og vist efter afdeling:<br><br>"; while($row = mysql_fetch_array($query)){ $indeks = $row["indeks"]; $afdeling = $row["afdeling"]; $overskrift = $row["overskrift"]; $filnavn = $row["filnavn"]; $indhold = $row["indhold"]; $indhold = strip_tags($indhold); echo ("<b>$afdeling</b><br>"); echo ("<a href=/$filnavn>» $overskrift</a><br>"); $display = 80; $pos = stripos($indhold,$_POST['search']); $beginpos = $pos - $display; $endpos = $pos + $display + strlen($_POST['search']); if( $beginpos < 0 ) $beginpos = 0; if( $beginpos == 0 ) $pre = ''; else $pre = '...'; if( $endpos >= strlen($indhold) ) $post = ''; else $post = '...'; $indhold = substr($indhold,$beginpos,($endpos-$beginpos+strlen($_POST['search']))); $_POST['search']_preg = preg_quote($_POST['search']); $indhold = preg_replace("/($_POST['search']_preg)/im",'<b>\1</b>',$indhold); print $pre.$indhold.$post; echo ("<br><br>"); } if (!$indeks){ print ("$noResult"); } close_db(); } ?> ---------------------------------------- :-)
Ser meget fornuftigt ud. Har du lavet tabellen?
09. oktober 2009 - 11:11
#12
Hej og undskyld jeg har været væk - ved ikke om du stadig er der og vil hjælpe. Først vil jeg gerne have den gamle til at virke med $_POST['search']så den er uptodate også i PHP5 men det giver Parse error: parse error, unexpected T_STRING i ca denne linie $_POST['search']_preg = preg_quote($_POST['search']); har du en ide? :-)
12. oktober 2009 - 10:06
#13
Jeg har ændret denne: $_POST['search']_preg = preg_quote($_POST['search']); $indhold = preg_replace("/($_POST['search']_preg)/im",'<b>\1</b>',$indhold); til $search_preg = preg_quote($_POST['search']); $indhold = preg_replace("/($search_preg)/im",'<b>\1</b>',$indhold); hvilket gør den virker i både php 4 og 5 :-)
05. januar 2010 - 12:24
#14
lukker denne da ingen svar :-)
Vi tilbyder markedets bedste kurser inden for webudvikling