Avatar billede faetter_gufguf Nybegynder
15. juni 2001 - 15:38 Der er 6 kommentarer og
1 løsning

Søgning

Hvordan laver man en søgemaskine som kan søge i en tabel??
Altså:
<input type=\"text\" name=\"søgning\"> <input type=\"sibmit\" value=\"søg\">

Så hvis man eks søger på:

Pet

så skal den finde alt i tabellen som indeholder \"Pet\"

eks:
Peter
osv!
Avatar billede gizmo-gizmo Nybegynder
15. juni 2001 - 15:42 #1
i php:
<?
if (sogning) {
$query = mysql_query(\"select * from pet where pet like = \'%sogning%\'\");
$query = mysql_fetch_array($query);
echo \"den fandt $row[pet]\";
}
?>
<form action=\"FILNAVN.PHP\" method=\"post\">
<input type=\"text\" name=\"sogning\">
<input type=\"submit\" value=\"sog\">
Avatar billede gizmo-gizmo Nybegynder
15. juni 2001 - 15:43 #2
$query = mysql_fetch_array($query);
skal være:
$row = mysql_fetch_array($query);
Avatar billede htx98i17 Professor
15. juni 2001 - 15:46 #3
den her kan søge på flere ord adskilt af mellemrum + du kan vælge om du vil søge afhængigt eller uafhængigt...

<?php
   
    $search = htmlentities($search);
    $search = stripslashes($search);

    function searchparty($search,$type) {
   
       
           
        $array = explode(\" \",$search);
        $i = -1;
   
        if($type == 1) {
               
                $type = \"OR\";
           
        } else {
               
                $type = \"AND\";
               
        }
   
        while($i<count($array)){
           
            if($i == 0) {
               
                $query .= \" detaljer LIKE \'%$array[$i]%\' \";
                $i++;
                                   
            } else {
               
                $query .= $type .\" detaljer LIKE \'%$array[$i]%\' \";
                $i++;
                                       
            }
       
            global$query;
           
        }
           
    }
   
    searchparty($search,$type);
   
    $query = \"SELECT * FROM tblarticles WHERE \".$query;

    $articlesearch = mysql_query($query);
    $count = mysql_num_rows($articlesearch);
   
   
   
?>

<p><b>Søgning:</b></p>
<p>
    <form method=\"post\" action=\"index.php?a2=search\" name=\"find\" >
          <table border=\"0\" >
              <tr>
                <td class=\"mainsmall\" ><?php
                      $browser = $HTTP_USER_AGENT;
                    if(ereg(\"MSIE\", $browser)){
                          printf(\"Søgeord: <input type=\\\"text\\\" name=\\\"search\\\" class=\\\"inputbox\\\" size=\\\"20\\\" value=\\\"$search\\\" ></td>\");
                    } else {
                        printf(\"Søgeord: <input type=\\\"text\\\" name=\\\"search\\\" class=\\\"inputbox\\\" size=\\\"10\\\" value=\\\"$search\\\"><a href=\\\"java script:document.find.submit()\\\" ><img src=\\\"goon.gif\\\" border=\\\"0\\\"></a></td>\");
                    }
                                   
                ?>
               
                <td class=\"mainsmall\" > &nbsp;Uafhængigt: <input type=\"radio\" name=\"type\" value=\"1\" class=\"mainsmall\" > Afhængigt: <input type=\"radio\" name=\"type\" value=\"2\" class=\"mainsmall\" ></td>
            </tr>
        </table>
    </form>
        Søgeresultater: <?php echo$count; ?><p>
<?php
   
    if($count>0) { ?>


    <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" >
            <tr class=\"topmenu\" >
                <td class=\"topmenu\" width=\"250\" ><b>Varetekst:</b></td>
                <td class=\"topmenu\" width=\"60\" align=\"center\" ><b>Antal:</b></td>
                <td class=\"topmenu\" width=\"50\" ><b>Pris:</b></td>
                <td class=\"topmenu\" width=\"30\" >&nbsp;</td>
                <td class=\"topmenu\" width=\"30\" >&nbsp;</td>
                <td class=\"topmenu\" width=\"30\" >&nbsp;</td>
            </tr>
<?php

   
    while($result = mysql_fetch_array($articlesearch)) {
   
?>
            <tr class=\"shopping\" valign=\"top\"  onMouseOver=\"this.style.backgroundColor=\'#51626D\';\" onMouseOut=\"this.style.backgroundColor=\'\';\">
                <td class=\"shopping\" style=\"border-bottom: solid 1px #51626D\" ><?php echo ucfirst($result[vareTekst]); ?></td>
                <td class=\"shopping\" style=\"border-bottom: solid 1px #51626D\" align=\"center\" ><?php echo$result[pakning]; ?></td>
                <td class=\"shopping\" style=\"border-bottom: solid 1px #51626D\" align=\"right\" ><?php echo$result[salgsPris]; ?></td>
                <td class=\"shopping\" style=\"border-bottom: solid 1px #51626D\" >&nbsp;kr.</td>
                <td class=\"shopping\" style=\"border-bottom: solid 1px #51626D\" ><a href=\"?a2=search&search=<?php echo$search; ?>&a1=<?php echo$result[id]; ?>\" >Køb</a></td>
                <td class=\"shopping\" style=\"border-bottom: solid 1px #51626D\" align=\"right\" ><a href=\"#\" ><a href=\"?a2=detaljer&a4=<?php echo$result[vareGruppe]; ?>&a5=<?php echo$result[underGruppe]; ?>&a6=<?php echo$result[id]; ?>&search=<?php echo$search; ?>\" >Info</a></td>
            </tr>
           
        <?php
       
        }?>
       
        </table>

<? } else {

?>

Der blev ikke fundet nogle varer der passer til søgningen: <b><?php echo$search; ?></b>
<p>
Søg kun på ord i ental.
<? } ?>
Avatar billede htx98i17 Professor
15. juni 2001 - 15:50 #4
den skal selvfølgelig tilpasses din db :o)
Avatar billede alvion Nybegynder
15. juni 2001 - 18:03 #5
Den bedste metode er at bruge FULLTEXT indeks.

http://www.eksperten.dk/spm/81387
Avatar billede htx98i17 Professor
15. juni 2001 - 18:42 #6
alvion -> jep, men kan det svare sig at lave hvis db\'en ik er vildt stor?
Avatar billede alvion Nybegynder
15. juni 2001 - 19:15 #7
Nej fordelen kommer først rigtig ved 1000+ records
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
Computerworld tilbyder specialiserede kurser i database-management

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