16. januar 2006 - 00:57
Der er
2 kommentarer og
1 løsning
Soegefunktion fra bunden.
Hej Eksperter,
Jeg sidder og skal have lavet en soegefunktion, og alt hvad jeg har proevet har ikke rigtig blevet godt nok, saa nu proever jeg at putte det hele i jeres haender, og der efter laese koden igennem, saa jeg kan se hvordan jeg skulle have kodet det.
Soegefunktionen skal:
- Sortere efter hvor stort et match der er paa teksten den soeger paa.
- Alle tegn skal virke som en seperator med undtagelse af - der er brugt til at forbinde ord med.(f.eks. anne-marie).
- Der skal ikke goeres foreskel paa STORE og smaa bogstaver, saa 'STORE' vil finde 'store' som et match.
- Der skal soeges i to tabeller, 'koder' og 'tutorial'.
- den fundet information skal udskrives i en tabel med felterne: Titel | Beskrivelse | Kode
Der skal soeges efter soegeordet i disse felte i databasen:
- Titel
- Beskrivelse
- Kode
Kenneth :)
16. januar 2006 - 11:56
#1
Hvordan ser din kode ud? Hvad gør den? Hvad burde den gøre?
Eksperten.dk er ikke en kode-fabrik, men en hjælp til sine egne koder, hvis man går i stå eller det rækker ud over ens viden.
--
Kristian
16. januar 2006 - 22:05
#2
Det er jo ogsaa praecist hvad der er sket, men hvis du insistere paa at se min gamle kode, saa kan du da godt faa et copy n' paste af den.
Kode:
<?php
if(!empty($_POST['sSearch']))
{
$search_org = mysql_escape_string(strtolower($_POST['sSearch']));
$search_org=preg_replace("/[^a-z0-9+ ]/i", "", $search_org);
$search=" ".preg_replace("/ \+|\+/", " ", $search_org);
$search_titel = "LOWER(Titel) LIKE '%".str_replace(" ", "%' OR LOWER(Titel) LIKE '%", $search)."%'";
$search_beskrivelse = "LOWER(Beskrivelse) LIKE '%".str_replace(" ", "%' OR LOWER(Beskrivelse) LIKE '%", $search)."%'";
$search_kode = "LOWER(Kode) LIKE '%".str_replace(" ", "%' OR LOWER(Kode) LIKE '%", $search)."%'";
$query = mysql_query("SELECT * FROM koder WHERE $search_titel OR $search_beskrivelse OR $search_kode AND Godkendt = 'Y'") or die(mysql_error());
$maxCount = 0;
$result = array();
//Vi fandt noget...
$search = explode(" ",$search);
if(count($search) < 2){
$search = mysql_escape_string(strtolower($_POST['sSearch']));
$search[1] = $search;
}
while($row = mysql_fetch_array($query))
{
$i = 1;
$tempCount = 0;
$temp_total = 0;
while(isset($search[$i])) {
//--> Her er ændret fra
$reg_pat="/\W{1}".$search[$i]."\W{1}/";
preg_match_all($reg_pat, strtolower($row['Titel']), $s);
$tempCount=count($s[0])*2;
preg_match_all($reg_pat, strtolower($row['Beskrivelse']), $s);
$tempCount=$tempCount+count($s[0]);
preg_match_all($reg_pat, strtolower($row['Kode']), $s);
$tempCount=$tempCount+count($s[0]);
//--> Her er første ændring slut
$temp_total = $tempCount + $temp_total;
$i++;
}
$temp_total = $temp_total * 100;
if($temp_total != 0){
while(isset($result[$temp_total])){
$temp_total = $temp_total + 1;
}
}
$result[$temp_total] = htmlentities($row['Titel'])."~¤~". htmlentities($row['Beskrivelse'])."~¤~". $row['ID']."~¤~". $temp_total;
}
if($result){
$i = 4000;//udskriv resultatet..
$a = 0;
while($i != 1){
if(isset($result[$i])){
$vis = explode('~¤~',$result[$i]);
$k = 1;
while(isset($search[$k])){
if($k == 1){
//--> Her er anden ændring
$reg_pat="/(\W{1}".$search[$k]."\W{1})/i";
$Beskrivelse=preg_replace($reg_pat, "<b>$1</b>",$vis[1]); }
else {
$reg_pat="/(\W{1}".$search[$k]."\W{1})/i";
$Beskrivelse=preg_replace($reg_pat, "<b>$1</b>",$Beskrivelse);
//--> Anden ændring slut
}
$k++;
}
echo"<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellspan=\"0\"><tr><td class=\"tekst\">";
echo"<b>".$vis[0]."</b><br>".$Beskrivelse ."(".$vis[3].")<br>";
echo"<a href=\"index.php?H=Koder&K=".$vis[2]."\">Gå til koden »</a>";
echo"</td></tr></table><br>\n\n";
$a++;
}
$i = $i -1;
}
if($a == 1){
echo"Der blev fundet $a resultat!";
} elseif($a > 1) {
echo"Der blev fundet $a resultater!";
} else{
echo "Desværre, $search_org kunne ikke findes!";
}
}
else
{
//Vi fandt ikke noget...
echo "Desværre, $search_org kunne ikke findes!";
}
}
?>