Avatar billede KHHP Juniormester
27. august 2012 - 18:33 Der er 5 kommentarer og
1 løsning

Søgefunktion viser kun et resultat

Hej
Jeg har nu for noget tid siden fået givet et site en ordentlig makeover og fjernet alt kode der ikke burde være der, samt ryddet op i diverse filer, for kun at have dem jeg skal bruge, men nu er der opstået et problem.
Før kunne jeg søge med LIKE-wildcard og via while-loop få vist samtlige resultater i en liste, men nu har jeg anvendt samme kode, og selvfølgelig rettet denne til for at passe til den nye struktur af database, og det burde jo virke, men den giver mig kun det første resultat der passer på søgningen.
Mit script ser således ud(databaseforbindelse er lavet i ekstern fil som er indsat med php include øverst i dokument, inden html struktur):
<?php
                            //Henter søgning
                            $string = mysql_real_escape_string($_POST['searchfield']);

                            if(isset($_POST['search'])) {
                                $search_query = mysql_query("SELECT * FROM biler WHERE titel LIKE '%$string%' OR beskrivelse LIKE '%$string%'");
                            }
                            if ($test = mysql_fetch_array ($search_query) > 0) {
                                while ($search = mysql_fetch_assoc($search_query)) {
                                    echo '<p><a href="../showroom.php?id='.$search['id'].'">'.$search['titel'].'</a></p>';
                                }
                            }
                            else {
                                echo '<p>Din søgning gav desværre ingen resultater</p>';
                            }
                        ?>

Forstår ikke rigtig hvorfor den ikke vil vise alle resultater, fordi den virkede inden jeg foretog ændringer, og det eneste jeg har ændret i koden er den tabel den søger i.
Avatar billede erikjacobsen Ekspert
27. august 2012 - 19:09 #1
Din if med  mysql_fetch_array  springer den første række over, og derved vil din while med mysql_fetch_assoc kun give dig fra nummer 2 og frem.
Avatar billede KHHP Juniormester
27. august 2012 - 19:19 #2
Skal jeg så bruge mysql_num_rows() i stedet, eller vil det give det samme resultat?
Avatar billede olebole Juniormester
27. august 2012 - 21:38 #3
<ole>

Prøv! Det tager en brøkdel af den tid, det tager at få et svar  *o)

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
27. august 2012 - 22:28 #4
mysql_num_rows er en mulighed. Eller du kan tælle antal rækker i while løkken, og så skriv noget ud hvis den er 0.
Avatar billede KHHP Juniormester
29. august 2012 - 13:26 #5
Så blev det testet med num_rows og det virker perfekt. Smider du lige svar erikjacobsen, eller samler du ikke på point?
Avatar billede KHHP Juniormester
10. oktober 2012 - 18:43 #6
Jeg tager dit manglende svar som et nej tak til point, så derfor lukker jeg selv
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