Avatar billede albert Juniormester
03. august 2011 - 23:22 Der er 13 kommentarer og
1 løsning

Highlight søgekriterie

Det er vedr at jeg godt kunne tænke mig at highlight noget ud fra et søge ord jeg har fra en form. jeg har lavet denne kode:


<form method="post" action="search.php">
<input type="text" name="name">
<input type="submit" name="submit" value="Search">
</form>

<?php
if(isset($_POST['submit'])){
    $name = addslashes($_POST['name']);
    $query = mysqli_query($conn, "SELECT id, name, lastname FROM tblName WHERE  name LIKE '%" . $name . "%' OR LastName LIKE '%" . $name  ."%'");
   
    echo "Søgeresultatet ".$name." fandt disse resultater:<br />";
    while($result = mysqli_fetch_array($query)){
        $var = $result['name']."&nbsp;".$result['lastname']."<br />";
        echo str_replace($name,"<div class\"name\" style=\"font-weight:bold;\">".$name."</div>",$var);
    };
};
?>


Det virker også sådan næsten, men den har et eller et andet skjult brake i str_replace hvor den splitter mine fundne resultater op før og efter str_replace.

Nogen der kan hjælpe mig?
Avatar billede olebole Juniormester
04. august 2011 - 01:04 #1
<ole>

Skjulte bremser i str_replace? Dem har jeg aldrig hørt om  =)

Prøv med et span i stedet for et div. Problemet opstår, fordi du bør lære de allermest grundlæggende egenskaber ved HTML's mest benyttede elementer, inden du kan lave noget brugbart i PHP  *o)

/mvh
</bole>
Avatar billede cronaldo Nybegynder
04. august 2011 - 01:05 #2
<?php
if(isset($_POST['submit'])){
    $name = addslashes($_POST['name']);
    $query = mysqli_query($conn, "SELECT id, name, lastname FROM tblName WHERE  name LIKE '%" . $name . "%' OR LastName LIKE '%" . $name  ."%'");
   
    echo "Søgeresultatet ".$name." fandt disse resultater:<br />";
    while($result = mysqli_fetch_array($query)){
        $var = $result['name']."&nbsp;".$result['lastname']."<br />";
        echo str_replace($name,'<div class="name" style="font-weight:bold;">'.$name.'</div>',$var);
    };
};
?>

Prøv lige det der - for det første slipper du for at escape og for det andet ser det ud som om du har glemt et "=" (lig med-tegn) efter "class" i din div. :-)
Avatar billede cronaldo Nybegynder
04. august 2011 - 01:08 #3
Derudover har ole ret - men jeg går ud fra at du har noget float på dine elementer siden du bruger en class...

Men i øvrigt enig med olebole omkring brugen af <span> i stedet for <div> ;)

Så her er muligvis et mere korrekt svar - for god ordens skyld bør ole have pointene! Jeg håber, det virker. :)


<?php
if(isset($_POST['submit'])){
    $name = addslashes($_POST['name']);
    $query = mysqli_query($conn, "SELECT id, name, lastname FROM tblName WHERE  name LIKE '%" . $name . "%' OR LastName LIKE '%" . $name  ."%'");
   
    echo "Søgeresultatet ".$name." fandt disse resultater:<br />";
    while($result = mysqli_fetch_array($query)){
        $var = $result['name']."&nbsp;".$result['lastname']."<br />";
        echo str_replace($name,'<span class="name" style="font-weight:bold;">'.$name.'</span>',$var);
    };
};
?>
Avatar billede albert Juniormester
04. august 2011 - 01:09 #4
Ja godmorgen mig!! Det koster vidst lige en kvajebajer...
Jeg ved ikk lige hvad der skete for mig der... Men tak olebole.. xD
Avatar billede albert Juniormester
04. august 2011 - 01:10 #5
Kan i ikke lige ligge et svar begge to? :-)
Avatar billede olebole Juniormester
04. august 2011 - 01:13 #6
Ellers tak, jeg samler ikke points ... men napper gerne en kvaje-Tuborg: {  *o)
Avatar billede albert Juniormester
04. august 2011 - 01:14 #7
Har desværre været sygemeldt i snart et år, så det er så lang tid siden jeg har rodet med det.. :-/
Avatar billede olebole Juniormester
04. august 2011 - 01:30 #8
Øv! Det gør mig ondt at høre, men velkommen tibage på hesten. Håber, det at lave noget kreativt kan hjælpe lidt  =)
Avatar billede albert Juniormester
04. august 2011 - 01:38 #9
Men det jeg nu har virker sådan næsten, kan du så komme med et forslag til at den skal være ligeglad med at jeg har et navn som albert inde i DB, men hvis jeg så skriver Albert med stor a, så virker min str_replace ikk mere? JEg er sikker på at man skal have fat i noget str_uppercase eller lowercase?
Avatar billede olebole Juniormester
04. august 2011 - 01:50 #10
str_ireplace er case-insensetive:
    http://www.php.net/manual/en/function.str-ireplace.php

Den burde du kunne bruge i stedet
Avatar billede albert Juniormester
04. august 2011 - 14:45 #11
Men det jeg nu har virker sådan næsten, kan du så komme med et forslag til at den skal være ligeglad med at jeg har et navn som albert inde i DB, men hvis jeg så skriver Albert med stor a, så virker min str_replace ikk mere? JEg er sikker på at man skal have fat i noget str_uppercase eller lowercase?r
Avatar billede olebole Juniormester
04. august 2011 - 15:27 #12
Jeg ved ikke lige, hvad det er, du ikke forstår. Uanset, hvor sikker du end måtte være, tager du fejl. Du skal bruge str_ireplace - og ikke str_replace
Avatar billede albert Juniormester
05. august 2011 - 13:08 #13
Jeg ved godt hvad det er du prøver at skrive til mig :-) og jeg har også forstået at str_ireplace bruges til. Men jeg hvis jeg søger under navnet "albert" med lille "a" så kan den ikk forstå at den også skal lave det med stort "A" fed? Kan du følge mig nu?
Avatar billede albert Juniormester
05. august 2011 - 13:13 #14
Det her er sikkert helt ude i skoven: xD



if(isset($name == ucfirst)){
            echo str_ireplace($name,"<span class\"name\" style=\"font-weight:bold;\">".ucfirst($name)."</span>",$var);
        }else{
            echo str_replace($name,"<span class\"name\" style=\"font-weight:bold;\">".ucfirst($name)."</span>",$var);
        }
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