Avatar billede nyst Nybegynder
07. oktober 2003 - 14:00 Der er 5 kommentarer og
1 løsning

ved søgning i database vis også lidt af tekst

Hi there,

følgende kode bruger jeg til at søge med og det virker fornær at vise de første 50 tegn for hvert resultat, det viser det kun for det sidste???

<?php
if($search){   
    $db = mysql_connect("xxx.dk", "yyy", "zzz");
    mysql_select_db("xzxz", $db);
    $noResult = "<BR>Deres søgning gav intet resultat.";   
    $query = mysql_query("SELECT * FROM sider WHERE indhold LIKE '%$search%' ORDER BY afdeling");
    echo mysql_num_rows($query) . " resultater blev fundet og vist efter afdeling.<BR><BR>";
    while($row = mysql_fetch_array($query)){
        $id = $row["id"];
        $afdeling = $row["afdeling"];
        $overskrift = $row["overskrift"];
        $filnavn = $row["filnavn"];
        $indhold = $row["indhold"];
        echo ("$afdeling<BR>");
        echo ("<a href=/$filnavn class=xxx>$overskrift</a><BR><BR>");
    }
if (strlen ($indhold) > 50) {
    $indhold = substr($indhold, 0, 50);
    $indhold = $indhold . "..." ;
    echo ("$indhold<BR>");
}       
if (!$id) 
    {
        print ("$noResult");
    }
}
?>

Kan nogen se hvad der er galt???

Mvh Nyst
Avatar billede Slettet bruger
07. oktober 2003 - 16:45 #1
Du kan sætte følgende ind nederst i din while løkke:

echo strlen($indhold) > 50 ? substr($indhold, 0, 50)."..." : $indhold;
     
Og så skal du fjerne de første 5 linjer efter din while løkke (if(strlen...)
Avatar billede nyst Nybegynder
07. oktober 2003 - 17:45 #2
Hej mercur8,

det virker og så dog ikke alligevel...

Først min nye kode:

<?php
if($search){   
    $db = mysql_connect("xxx.dk", "yyy", "zzz");
    mysql_select_db("xzxz", $db);
    $noResult = "<BR>Deres søgning gav intet resultat.";   
    $query = mysql_query("SELECT * FROM sider WHERE indhold LIKE '%$search%' ORDER BY afdeling");
    echo mysql_num_rows($query) . " resultater blev fundet og vist efter afdeling.<BR><BR>";
    while($row = mysql_fetch_array($query)){
        $id = $row["id"];
        $afdeling = $row["afdeling"];
        $overskrift = $row["overskrift"];
        $filnavn = $row["filnavn"];
        $indhold = $row["indhold"];
        echo ("$afdeling<BR>");
        echo ("<a href=/$filnavn class=xxx>$overskrift</a><BR>");
        echo strlen($indhold) > 50 ? substr($indhold, 0, 50)."..." : $indhold;
        echo ("<BR><BR>");       
    }
if (!$id){
        print ("$noResult");
    }
}
    mysql_close();
?>

Den viser rigtigt nok de 50 første tegn i databasen>celle>indhold
men men
i nogle celler har jeg html feks. <h2> <b> eller <ul>
og så går det først helt galt med søgeresultatet,
det smadrer faktisk hele siden...

Har du nogen forklaring på hvad jeg her skal gøre...

PS. send lige så du kan få points for den første...

*S* nyst
Avatar billede Slettet bruger
07. oktober 2003 - 18:06 #3
Du skal vælge om du vil fjerne de tags helt, eller om du vil udskrive værdien af dem (istedet for at de fortolkes).

Fjern dem med:

strip_tags()
http://dk.php.net/manual/en/function.strip-tags.php

Udskriv værdien af dem med:

htmlentities()
http://dk.php.net/manual/en/function.htmlentities.php

Eksempelvis:

$indhold = strip_tags($indhold);
echo strlen($indhold) > 50 ? substr($indhold, 0, 50)."..." : $indhold;
Avatar billede nyst Nybegynder
07. oktober 2003 - 18:30 #4
Hej mercur8,

tak for hjælpen - et selvfølgeligt valg måtte blive strip_tags...

Viser her hele koden:

<?php
if($search){   
    $db = mysql_connect("xxx.dk", "yyy", "zzz");
    mysql_select_db("xzxz", $db);
    $noResult = "<BR>Deres søgning gav intet resultat.";   
    $query = mysql_query("SELECT * FROM sider WHERE indhold LIKE '%$search%' ORDER BY afdeling");
    echo mysql_num_rows($query) . " resultater blev fundet og vist efter afdeling.<BR><BR>";
    while($row = mysql_fetch_array($query)){
        $id = $row["id"];
        $afdeling = $row["afdeling"];
        $overskrift = $row["overskrift"];
        $filnavn = $row["filnavn"];
        $indhold = $row["indhold"];
        $indhold = strip_tags($indhold);
        echo ("$afdeling<BR>");
        echo ("<a href=/$filnavn class=xxx>$overskrift</a><BR>");
        echo strlen($indhold) > 65 ? substr($indhold, 0, 65)."..." : $indhold;
        echo ("<BR><BR>");       
    }
if (!$id){
        print ("$noResult");
    }
}
    mysql_close();
?>

Andre kan måske bruge den, men kan du forklare hvorfor der ikke skal (" ") omkring strlen udsagnet
og lige til sidst
Hvis jeg ville have de 65 tegn udskrevet i kursiv, hvor sætter jeg det.

Husk at du skal have 30 flere points!!!

Tak for denne gang*S*
nyst
Avatar billede nyst Nybegynder
14. oktober 2003 - 14:45 #5
Lukket
Avatar billede nyst Nybegynder
09. februar 2004 - 12:55 #6
Hej mercur8,

kan jeg fortsætte her,

jeg har nogle udvidelser!!!
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