Gå til innhold

Søkemotor og dropdownlist


Anbefalte innlegg

Den nye siden ble ferdig i dag, men søkemotoren sluttet å virke når jeg gikk fra vanlig html til php. Det skjer ingenting når jeg klikker på "søk"-knappen.

 

Så søkte jeg litt innpå forumet her og fant denne:

 

CODE 

 

 

<form action="index.php" method="GET">

 

<input type="hidden" name="Page" Value="Søk"> <!--for å få rett side -->

 

<input type="text" name="Streng">

 

<input type="submit" value="Søk!">

 

 

 

 

Så behandler man den slik

 

CODE 

 

 

<?php

 

if (!empty($_GET['Streng'])

 

{

 

$ord=explode(' ', $_GET['Streng']);

 

$query="SELECT * FROM Pages WHERE Content LIKE ";

 

foreach($ord as $target)

 

  $query .= "%target% OR CONTENT LIKE ";

 

$query=substr($query, 0, strlen($query)-15); //fjern den siste or-en

 

mysql_query($query) or die("Kunne ikke utføre spørringen '$query' pga. feilen '".mysql_error()."'");

 

while($rad=mysql_fetch_assoc($resultat))

 

   echo "$rad[iD], $rad[Title], ".substr($rad[Content], 1, 30).'<BR>';

 

};

 

?>

 

 

 

Kan jeg bruke denne, hvordan vil selve siden bli? Jeg trodde lissom det øverste var selve scriptet, men hva betyr "og så behandler man den slik:"?

 

---

 

Så var det en ting til jeg lurte på som jeg ikke fant her inne. Jeg tenkte at de som var innom siden min titt og ofte kunne legge igjen e-post adressen sin og trykke på en knapp, slik at den adressen kom til meg, slik at jeg kunne samle disse og sendte ut en mail hver gang jeg oppdaterte siden med et nytt reisebrev.

 

Er det noen lettvint måte å gjøre dette på? Og er det mulig, litt offtopic men, å få disse til å e-postadressene til å havne automatisk i en mappe i Outlook?

Endret av Sigmoideus
Lenke til kommentar
Videoannonse
Annonse

Jeg tok en kikk på siden din - og har en liten kommentar. Du må tilpasse størrelsen - bredden er alt for vid - husker ikke tallene i hodet, med det er et enormt flertall som bruker skjemstørrelser på eller under 1024 x 768. Siden din er for bred å man må scrolle ut i kantene!

 

Så til problemet med å søke...

som du selv skriver <form...

du har ikke med disse i søkefeltet - dvs. det blir ikke opprettet noe skema, bare felter som ikke sendes noen steder!

Legg til <form... info!> og </form> på slutten av skjemaet.

 

Det øverste er selve skjemaet... det nederste er hva php skal gjøre med verdiene du sender!

 

I steden for å lage en mailingliste i outlook - kan du bare laste ned et ferdig script fra www.hotscripts.com

 

Good luck! :thumbs:

Lenke til kommentar
Jeg tok en kikk på siden din - og har en liten kommentar. Du må tilpasse størrelsen - bredden er alt for vid - husker ikke tallene i hodet, med det er et enormt flertall som bruker skjemstørrelser på eller under 1024 x 768. Siden din er for bred å man må scrolle ut i kantene!

 

Enig, og har fått råd om dette på "webdesign". Skal bli forsøkt gjort noe med i morra (mandag).

 

Så til problemet med å søke...

som du selv skriver <form...

du har ikke med disse i søkefeltet - dvs. det blir ikke opprettet noe skema, bare felter som ikke sendes noen steder!

Legg til <form... info!> og </form> på slutten av skjemaet.

 

Det øverste er selve skjemaet... det nederste er hva php skal gjøre med verdiene du sender!

 

Dere må tro jeg er helt grønn :green: , men det første du skrev (<form... info!> og </form>), skulle jeg legge til den i søkefunksjonen jeg allerede har? Og det scriptet jeg fant, skal jeg bare legge det inn i notepad etterhverandre, og så funker det? Trenger som dere ser litt hjelp her. Lærer jo mye av dette, men jeg trenger fortsatt noen mentorer... :w00t:

Lenke til kommentar

Dersom selve siden du søker med også er siden som skal vise resultatet kan du legge det inn på samme side - pass på at form action settes til samme side.

 

Tror de fleste SQL databaser ville sette pris på om du bruke ' rundt LIKE ordene f.eks. where content like '%noe'

 

Slapp av - ingen som tror du er grønn. Det er en vanlig del av programmering å overse de små feilene. De alle fleste programmerere har slitt i timer for å finne en liten feil som var så åpenbar at de ikke sjekket det en gang! :wallbash:

Lenke til kommentar
  • 4 uker senere...

Har hatt en del andre ting å gjøre i det siste, men nå ser det ut til at jeg endelig får tid til å få i gang søkemotoren min igjen.

 

Har prøvd å fått til scriptet over, uten hell.

 

Hvordan vil scriptet se ut i sin helhet? Slik at det bare er til å lime inn i notepad og lagre det. Vet det er mye å spørre om, men jeg står litt fast her nå.

 

Det jeg i hvert fall er ute etter er en søkemotor som søker igjennom alle sidene på domene www.endeligferie.com. Jeg har et includescript på siden min, og jeg vil at søkemotoren skal være inkludert i siden, altså at søkesiden for samme oppsettet med menyen og slikt. Men det fikser den vel selv? Når jeg søker vil jeg at resultatet skal komme i samme vindu, også dette med "includemalen" rundt.

 

Håper jeg ikke skrev meg helt bort her nå, og at noen skjønte hva jeg mente... Håper også noen er snille nok (jula varer helt til påske) til å enten skrive ned scriptet, eller gi meg et spark bak med noen tips. Jeg er vel det man kaller ekstrem nybegynner på php og slikt, men jeg har jo klart å sette opp et forum vaffal :roll:

 

PS. Hvilket filformat skal søkemotorfilen være? htm eller php?

Endret av EndeligFerie
Lenke til kommentar
Jeg tok en kikk på siden din - og har en liten kommentar. Du må tilpasse størrelsen - bredden er alt for vid - husker ikke tallene i hodet, med det er et enormt flertall som bruker skjemstørrelser på eller under 1024 x 768. Siden din er for bred å man må scrolle ut i kantene!

 

Enig, og har fått råd om dette på "webdesign". Skal bli forsøkt gjort noe med i morra (mandag).

er ikke veldig netscape-entusiast, men sitter tilfeldigvis på det nå - og bredden er fremdeles for stor. er det fordi jeg kjører netscape eller er det andre grunner?

Lenke til kommentar

<?php

if (!empty($_GET['Streng'])){
 $ord=explode(" ", trim($_GET['Streng']));
 $query="SELECT * FROM Pages WHERE Content LIKE ";
 foreach($ord as $target){
   $query .= "'%$target%' OR CONTENT LIKE ";
 }
 $query=substr($query, 0, strlen($query)-16);

 $query = mysql_escape_string($query); // Passer på at det ikke er noen som forsøker å hacke databasen din!

 $resultat = mysql_query($query) or die("Kunne ikke utføre spørringen '$query' pga. feilen '".mysql_error()."'");

 if(mysql_num_rows($resultat) <= 0){
   // Dersom det ikke finnes noen reiser i databasen som matcher søket
   echo "Beklager, vi kunne ikke finne noen ferier som matchet dine søke kriterier";
 }else{
   while($rad=mysql_fetch_array($resultat)){
     echo $rad['ID'].", ".$rad['Title'].", ".substr($rad['Content'], 1, 30)."<BR>";
   }
 }
}

?>

 

Du hadde glemt noen små ting her og der, men ellers ser det greit ut. Du burde også fjerne tegn som % og _ i søkestringen, ellers henter den alt som ligger i databasen din dersom noen f.eks. bare søker etter %. (LIKE '%%%'). Du kan rett og slett bare fjerne tegnene % og _, eller så kan du bytte ut % med \% og _ med \_.

Sett inn linjene:

$query = str_replace("%", "\%", $query);

$query = str_replace("_", "\_", $query);

før $query = mysql_escape_string($query);

Endret av ????????
Lenke til kommentar
... og jeg vil at søkemotoren skal være inkludert i siden, altså at søkesiden for samme oppsettet med menyen og slikt...

 

PS. Hvilket filformat skal søkemotorfilen være? htm eller php?

Mest sansynlig må søkefilen være i php, dersom serveren ikke kjører html som php da.

 

Hvis du vil beholde alle menyer som de er bruker du bare include søkefilen der du vil at teksten skal være.

Lenke til kommentar

Takker for koden ?xmange. Driver å hjelper bror min med å flytte på fjerde dagen på rad, så det blir litt knapp tid, men i morgen er han ferdig. Så da får jeg prøve å få til dette.

 

Det var litt av en saftig kode ;) Får håper jeg kan skjønne noe av den, og håpe den fungerer. Det gjør den sikkert...

 

er ikke veldig netscape-entusiast, men sitter tilfeldigvis på det nå - og bredden er fremdeles for stor. er det fordi jeg kjører netscape eller er det andre grunner?

 

Grunnen er vel at den fortsatt er for stor. Har ikke fått gjort så veldig mye med dette. Har fått inn en del reisebrev i det siste så jeg har prioritert dette. Men til uka har jeg litt fri og kan gjøre begge deler. Trodde egentlig jeg skulle ha fått gjort det i helga, for jeg trodde aldri noen kunne bruke 5 dager på å flytte :roll:

Lenke til kommentar

La inn denne koden:

 

<form action="index.php" method="GET">

 

<input type="hidden" name="Page" Value="Søk"> <!--for å få rett side -->

 

<input type="text" name="Streng">

 

<input type="submit" value="Søk">

 

<?php

 

if (!empty($_GET['Streng'])){

$ord=explode(" ", trim($_GET['Streng']));

$query="SELECT * FROM Pages WHERE Content LIKE ";

foreach($ord as $target){

  $query .= "'%$target%' OR CONTENT LIKE ";

}

$query=substr($query, 0, strlen($query)-16);

 

$query = str_replace("%", "\%", $query);

$query = str_replace("_", "\_", $query);

$query = mysql_escape_string($query); // Passer på at det ikke er noen som forsøker å hacke databasen din!

 

$resultat = mysql_query($query) or die("Kunne ikke utføre spørringen '$query' pga. feilen '".mysql_error()."'");

 

if(mysql_num_rows($resultat) <= 0){

  // Dersom det ikke finnes noen reiser i databasen som matcher søket

  echo "Beklager, vi kunne ikke finne noen ferier som matchet dine søke kriterier";

}else{

  while($rad=mysql_fetch_array($resultat)){

    echo $rad['ID'].", ".$rad['Title'].", ".substr($rad['Content'], 1, 30)."<BR>";

  }

}

}

 

?>

 

Prøvde å lagre den som php men det gikk ikke så greit. Prøvde jeg å lagre den som HTML så kom jeg til hovedsiden uansett hva jeg søkte etter. Jeg skulle bare lime denne koden inn i notepad og lagre den? Det er ikke noe mer som skulle ha vært med nå? Må si jeg overhode ikke har greie på php, så jeg kan dessverre ikke selv skjønne hva som er feilen :roll:

Lenke til kommentar

Jeg tok en kikk på siden din, og fant ut at søkefunksjonen din kjøres kun dersom side=Soek... så du må endre action i <form ...> - sett action til

index.php?side=Soek

 

Ta også bort linjene:

$query = str_replace("%", "\%", $query);

$query = str_replace("_", "\_", $query);

(De er plassert feil) :blush:

Lenke til kommentar

Hmm... Begynner å bli litt flaut å komme hit gang på gang :roll: Det fungerer visst ikke ennå. Tok vekk de to linjene du sa var plassert feil (Jeg plasserte dem der du sa?) og endret i tillegg det andre til index.php?side=Soek men fremdeles kommer jeg til hovedside.htm når jeg søker på noe jeg vet skal finnes på siden...

Endret av EndeligFerie
Lenke til kommentar
Husk for all del på at filendelsen skal være .php

 

Så det skal være Soek.php og ikke Soek.htm mener du? Men hvordan blir det da når jeg skal linke til søkesiden fra index.php? Hva skriver jeg som hyperkobling? Nå bruker jeg bare ...side?=soek. Hvis jeg sletter html-fila vil den da automatisk vise soek.php?

 

Jeg kan jo i grunn bare prøve meg frem også :roll:

Lenke til kommentar

Jeg kikket virkelig ikke lenge nok på scriptet ditt.

I <form...

skip det jeg sa om index.php?Side=Soek

 

Jeg vet ikke helt hvordan du har bygd opp scriptet ditt, men det virker som du kan bytte ut den hidden fielden du har med

<input type='hidden' name='Side' value='Soek'>

Så kan du skippe det med ?Side=Soek i method.

 

Videre må du ta bort denne linjen:

$query = mysql_escape_string($query); // Passer på at det ikke er noen som forsøker å hacke databasen din!

Lenke til kommentar
  • 2 uker senere...
Videre må du ta bort denne linjen:

$query = mysql_escape_string($query); // Passer på at det ikke er noen som forsøker å hacke databasen din!

 

Er det så lurt egentlig? Vil ikke det da etterlate et sikkerhetshull?

 

Beklager at ting tar tid, men har litt å stri med om dagen...

Lenke til kommentar

Då må legge den til tidligere, der den er nå endrer den tegn som ' queryen - mens du bare vil endre tegnene i variablen.

 

Du må legge den i foreach og gjøre $target til f.eks.

$target = mysql_escape_string()

 

der kan du også legge til funksjonene for % og _.

 

$target = str_replace("%", "\%", $target);

$target = str_replace("_", "\_", $target);

 

 

Man burde aldri sette inn variabler fra brukeren i en database uten å sjekke de.

Lenke til kommentar
  • 4 uker senere...

Tror jeg har prøvd alle mulige måter å få til en søkefunksjon, men det lar seg altså ikke gjøre. Det er jo så mange sider som har søkemuligheter, så det burde la seg gjøre.

 

Dette er hele Soek.php

 

<form action="index.php" method="GET">

 

<input type='hidden' name='Side' value='Soek'> <!--for å få rett side -->

 

<input type="text" name="Streng">

 

<input type="submit" value="Søk">

 

<?php

 

if (!empty($_GET['Streng'])){

$ord=explode(" ", trim($_GET['Streng']));

$query="SELECT * FROM Pages WHERE Content LIKE ";

foreach($ord as $target){

  $query .= "'%$target%' OR CONTENT LIKE ";

}

$query=substr($query, 0, strlen($query)-16);

 

$resultat = mysql_query($query) or die("Kunne ikke utføre spørringen '$query' pga. feilen '".mysql_error()."'");

 

if(mysql_num_rows($resultat) <= 0){

  // Dersom det ikke finnes noen reiser i databasen som matcher søket

  echo "Beklager, vi kunne ikke finne noen ferier som matchet dine søke kriterier";

}else{

  while($rad=mysql_fetch_array($resultat)){

    echo $rad['ID'].", ".$rad['Title'].", ".substr($rad['Content'], 1, 30)."<BR>";

  }

}

}

 

?>

 

Tror jeg har fulgt alle rådene. Men den vil ikke fungere.

 

Et spørsmål til. Siden jeg bruker include på førstesiden, hvordan vil hyperkoblingen i menyen se ut når jeg linker til en annen php-fil? Hadde det vært en htm-fil er det jo bare å bruke http://www.endeligferie.com/index.php?side=Soek

 

Men dette fungerer ikke med php-filen. Det nærmeste jeg kom var at den ble åpnet uten malen som jeg bruker i include-scriptet.

 

Jeg skulle bli evig takknemlig over den personen som fikk søkefunksjonen til å fungere. Den har frustert meg veldig veldig lenge nå.

 

Og en ting til som jeg også lurer på, hvordan få denne til å fungere? Velger du et land fra listen og trykker OK, skjer det ingen verdens ting...

 

Si ifra hvis det er noe info dere trenger om siden, jeg skal hjelpe til med det jeg kan.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...