Søgefunktion

Tags:    php

<< < 12 > >>
Hejsa jeg har været i gang med at lave en søgefunktion der skal søge i MYSQL db.
Jeg er ret ny til det med PHP og MySQL så i må være lidt overbærende hvis jeg ikke lige helt er med på det der svares på -skal lige lære det først ;)

Det virker til at være ret simpelt og jeg har da fået rettet de fejl der skulle være.

Ideen er at det er en htlm søge form der skal søge i en MySQL db og derefter liste det man har søgt på hvis det eksisterer. Jeg har lavet søgeformen, og men problemet er at den lister alt hvad der er i db og det er vel mærke uden at have søgt i den. JEg kan da også se at PHP koden foræller at det er det den skal. Der er en WHILE der lister hele db.
Jeg vil gerne have den til at kun liste det man har søgt i.
Så jeg tror mit problem er at knytte søgedelen til at søge i db, men hvordan gør jeg det??

Søgefunktionen er lagt op på www.senaratne.dk/search

Her er koderne.
Min connect.php fil:
Fold kodeboks ind/udKode 


min index.php fil:
Fold kodeboks ind/udKode 


Håber at der er nogen der kan hjælpe mig?

På forhånd tak.

p.s. er det kotume at give point, jeg er ikke lige vant til dette forum.





Indlæg senest redigeret d. 17.07.2008 13:48 af Bruger #13980
13 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Hej

Det er ikke så mærkeligt at den udskriver alt, da du vælger (SELECT) alt (*) fra (FROM) tabellen bpo2

Prøv og kig lidt her
http://www.tizag.com/mysqlTutorial/mysqlwhere.php

Har ikke lige testet nedenstående, men den søger efter navn og skulle gerne virke

Fold kodeboks ind/udPHP kode 


Og et lidt mere advanceret script:
Fold kodeboks ind/udPHP kode 


Du kan se det i brug her:
http://test.dumpen.dk/sogning-test.php

Den søger efter en overskrift i min tabel nyheder

Prøv og søg på Sverige eller kig efter overskrifter her http://dumpen.dk/ :P

Og mht. point så er det forskellig fra person til person. Nogle giver point, andre gør ikke.

Se eventuelt her:
http://www.udvikleren.dk/AboutUp.aspx



Indlæg senest redigeret d. 17.07.2008 14:13 af Bruger #11386
Der gik lidt tid fra jeg besluttede at bede om hjælp herinde og til jeg gjorde det, og jeg havde ellers kigget trådene igennem.
Hvis jeg nu havde havde kigget på de nye tråde inden jeg bad om hjælp kunne jeg bare have kigget i anders' tråd om hjælp med en mail form, længere nede i forum.
Der opdagede jeg at action tagget i formen henviser til en fil så jeg fil klippet php koden fra index.php og lagde det i en fil kaldet search.php nu lister den i det mindste ikke alt hvad der i db på forsiden men den lister så heller ikke det jeg søger efter, men stadig hele db dog på en ny side. Det lister uanset hvad jeg skriver i søge feltet også noget som ikke er i db.

her er mine nye filer:

Connect.php er samme som foroven.

index.php
Fold kodeboks ind/udKode 


search.php
Fold kodeboks ind/udKode 


jeg prøvede at fjerne WHILE linien men det giver ingenting




Indlæg senest redigeret d. 17.07.2008 14:09 af Bruger #13980
Hej

Har du læst mine første linjer?

"Det er ikke så mærkeligt at den udskriver alt, da du vælger (SELECT) alt (*) fra (FROM) tabellen bpo2"

Du skal dog have din while med hvis du vil have alt fra din database med

Hvis du kun vil have det første resultat skulle du gøre sådan her:
$row = mysql_fetch_assoc($query);
print $row['bpo_name2'] . " - " . $row['owner2'] . "<br/>";



du svarede mens jeg var ved at skrive det andet indlæg. jeg sidder og kigger på det nu



Indlæg senest redigeret d. 17.07.2008 14:21 af Bruger #13980
WUHUUUUUUUUU

Det virker :D:D

Eller dvs. det var ikke lige det jeg forventede, den lister stadig hele db når man går ind på siden, men nu kan man i det mindste søge på den og den lister nu kun det man har søgt på. Så det gør faktisk ikke noget at man kan se hele db hvis man nu gerne vil kigge på det hele først, så kan man bagefter søge på den og få vist det man søger på.
Når man reloader siden, så lister den dog ikke hele db, som når man første gang går ind på den.

Jeg troede man kunne søge på navnet også. feks så har Hans en ting der hedder rifter, jeg kan godt søge på rifter og få vist en liste, men jeg kan ikke søge på Hans?





Indlæg senest redigeret d. 17.07.2008 14:37 af Bruger #13980
Hvordan ser dit script ud nu?



sådan her:
Fold kodeboks ind/udKode 


har nu forstået hvad WHERE gør og kan se hvad der var galt i det første forstår dog ikke helt LIKE



Okay hvis du ikke vil have vist alle resultater skal du bruge denne linje:
if (isset($_POST["submit"])) {
}

Den checker om der er blevet trykket på knappen submit

Så sætter du din <input type="submit" value="Søg Nu!"> til:
<input type="submit" name="submit" value="Søg Nu!">

Så dit script ser sådan ud:
Fold kodeboks ind/udPHP kode 


Det vil sige den kun gør noget hvis der er trykket på submit knappen


Like er noget man bruger til at checke om der er noget der ligner noget andet

Det vil sige hvis query står til Pet og vi har Peter i databasen så kan man for eksempel bruge LIKE 'Pet%'

Det vil sige den søger efter alt der matcher Pet* og så vil den finde Peter

Hvis vi bruger LIKE '%Pet%' og vi har HejPeter i databasen så vil den også finde HejPeter da den søger efter alt der matcher *Pet*

* kaldes også wildcards i mange sprog

Du kan se mere her:
http://www.htmlite.com/mysql011.php



Indlæg senest redigeret d. 17.07.2008 15:31 af Bruger #11386
hejsa
jeg tilføjet din foreslåede kode og det giver fuldstændig samme resultat som før. den lister stadig hele db, men man kan stadig søge i den, og den lister stadig det man søger efter.
Kan man ikke have en blank side kun med søgefunktionen og så at den kun lister det man søger efter?

Man kan dog stadig ikke søge efter navne dvs. i tabelen der hedder owner2. jeg fik lavet det om så man kunne men så kunne man ikke søge efter den første række altså bpo_name2.

Koden ser nu således ud:
Fold kodeboks ind/udKode 




okay jeg fik løst problemet angående at den lister det hele på siden inden man søgte.

som tidligere(som jeg gik fra igen) har jeg delt koden op i flere filer.

connect.php som altid.

index.php: her har jeg under action tilføjet search.php så den nu hedder action="search.php"

Fold kodeboks ind/udKode 


Jeg lavede en ny fil der hedder search.php her har jeg sat koden fra den gamle index.php over i search.php.
Fold kodeboks ind/udKode 


når man loader siden på www.senaratne.dk/search har man en tom side når man søger lister dendet man søger, dog på en ny side, men det er fint nok indtil videre.



<< < 12 > >>
t