Avatar billede -kenner- Nybegynder
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 :)
Avatar billede cpfrande Nybegynder
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
Avatar billede -kenner- Nybegynder
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!";
 
}

?>
Avatar billede -kenner- Nybegynder
15. februar 2006 - 23:16 #3
Lukket pga. no response.
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