Avatar billede mekaniker Nybegynder
23. december 2001 - 15:49 Der er 34 kommentarer og
1 løsning

søgning & redirect

Jeg har en søge funktion, hvor formen ligger i venstre frame og resultatet vises i højre frame.

Dette er en del af søgescriptet som tjekker om der er skrevet noget i feltet, hvis ikke redirecter det til formen igen, men den vises så i mainframen.

Hvordan for jeg den til at vise formen i den venstre frame og indholdet af mainframen bliver som det var.
--------------------------------------------------

<%
\' Henter værdien fra search.htm
strKeyword = Trim(Request.Form(\"Keyword\"))

If Len(strKeyword) = 0 Then
\' Hvis der ikke er skrevet i feltet
response.clear
response.redirect(\"search.htm\")

Else

\' Hvis der er skrevet i feltet
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")

End If

\' Opbygger en dynamisk SQL streng
strSQL = \"SELECT Id, varenr, varebeskrivelse, stor_beskrivelse, udsalgspris_incl_moms, leverandoer, indkoebspris_excl_moms, Forhandlerpris_excl_moms FROM produkter WHERE\"
strSQL = strSQL & \" (Id LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (varenr LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (varebeskrivelse LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (stor_beskrivelse LIKE \'%\" & strKeyword & \"%\')\"

Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"../db/varer.mdb\")

set rs = myconn.execute(strSQL)
Avatar billede virus Nybegynder
23. december 2001 - 15:51 #1
Hvorfor ikke bare
<%
\' Henter værdien fra search.htm
strKeyword = Trim(Request.Form(\"Keyword\"))

If Len(strKeyword) = 0 Then
\' Hvis der ikke er skrevet i feltet
response.clear
response.write \"din html med form osv\"
Else

\' Hvis der er skrevet i feltet
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")

End If

\' Opbygger en dynamisk SQL streng
strSQL = \"SELECT Id, varenr, varebeskrivelse, stor_beskrivelse, udsalgspris_incl_moms, leverandoer, indkoebspris_excl_moms, Forhandlerpris_excl_moms FROM produkter WHERE\"
strSQL = strSQL & \" (Id LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (varenr LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (varebeskrivelse LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (stor_beskrivelse LIKE \'%\" & strKeyword & \"%\')\"

Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"../db/varer.mdb\")

set rs = myconn.execute(strSQL)
Avatar billede mekaniker Nybegynder
23. december 2001 - 16:02 #2
det er også det jeg gør, men jeg skal på en eller anden måde have et target på, så den ikke loades i mainframen
Avatar billede virus Nybegynder
23. december 2001 - 16:05 #3
uhhh ha, det skal klares i JavaScript så.....
/doh sorry men så er jeg ikke den som skal kommentere mere
Avatar billede nikolajdu Nybegynder
23. december 2001 - 23:32 #4
Jeg forstår ikke helt problemstilingen??

:))
Avatar billede virus Nybegynder
23. december 2001 - 23:40 #5
gør jeg :)
Avatar billede nikolajdu Nybegynder
23. december 2001 - 23:46 #6
Fint at du gør, men jeg har meget svært med at komme med et forslag uden at fate en brik :))
Avatar billede virus Nybegynder
23. december 2001 - 23:47 #7
Skriver om 2 min skal lige se en film færdig :;)
Avatar billede virus Nybegynder
23. december 2001 - 23:57 #8
han problem er at siden SKAL åbnes i en speciel frame lad os sige left

hvordan pløjer man den med javascript MÅ kun åbnes i left :)
Avatar billede virus Nybegynder
23. december 2001 - 23:57 #9
han +s
Avatar billede nikolajdu Nybegynder
24. december 2001 - 00:00 #10
Ehem hvorforsmider du ikke bare hele formen over i venstre frame???
Avatar billede virus Nybegynder
24. december 2001 - 00:03 #11
ahhhh Mekaniker nu har jeg det :)
Avatar billede virus Nybegynder
24. december 2001 - 00:04 #12
Det han sikkert gør er at sende søgeresultatet til main search.asp eller hvad den hedder, og HER checker han for om formen er tom, det skal du ikke mekaniker du skal jo checke formen inden du sender input vidre

forstår du?
Avatar billede virus Nybegynder
24. december 2001 - 00:06 #13
Det kan du jo gøre ved at kigge

if not request.form(\"dinform\") <> \"\" then
response.redirect \"search.htm\"
Avatar billede virus Nybegynder
24. december 2001 - 00:07 #14
plus lidt andet mundgodt som skal bagefter
Avatar billede virus Nybegynder
24. december 2001 - 00:07 #15
er du ikke med på den løsning nicolajdu?
Avatar billede nikolajdu Nybegynder
24. december 2001 - 00:22 #16
Muligvis er jeg for stiv, for jeg fatter stadigt minus :))
Avatar billede virus Nybegynder
24. december 2001 - 00:23 #17
lol
Avatar billede mekaniker Nybegynder
24. december 2001 - 00:24 #18
Nu er jeg her igen, der var lige nogle ting som skulle klares ;-)))

Jeg prøver lige at forklare igen.
Jeg har en helt alm. html-form liggende i en frame til venstre denne side hedder search.htm, når formen submittes vises resultatet så i min frame i midten alstå mainframen.
Siden som viser resultatet i mainframen hedder search.asp. denne indeholder følgende:

If Len(strKeyword) = 0 Then
\' Hvis der ikke er skrevet i feltet
response.clear
response.redirect(\"search.htm\")

som tjekker om der overhovedet er skrevet noget i feltet, og hvis der ikke er noget i feltet redirecter den til search.htm, men da denne ikke har noget target, loades den i mainframen.
Dette resultere i at jeg får 2 search.htm, både en i den venstre frame og en i mainframen.
Avatar billede virus Nybegynder
24. december 2001 - 00:29 #19
Upload alle dine filer så kan jeg klare det for dig :) os selvom det kun er 15 point ;)
Avatar billede nikolajdu Nybegynder
24. december 2001 - 00:33 #20
Ok selv i min monster brandert er jeg vist ved at være med nu :))

Du kan jo sætte ny action afhængigt af hvad formen indeholder. Dermed kan du gå til en specifik side når f.eks formen ikke opfylder de krav der skal til :))

document.formensNavn.action=\'nyside.asp\' // ændrer action for den pågældende form :))

/Nikolaj
Avatar billede mekaniker Nybegynder
24. december 2001 - 00:34 #21
Her er venstre frame \"search.htm\"
---------------------------------
</head>
<body leftmargin=\"0\" topmargin=\"0\">
<br>
<br>
<table width=\"120\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
    <td height=\"31\" valign=\"bottom\">
      <form method=\"POST\" action=\"search.asp\" name=\"form1\" target=\"mainFrame\">
        <div align=\"center\"><input type=\"text\" name=\"Keyword\" size=\"12\"><br>
          <a href=\'java script:document.forms[\"form1\"].submit()\'>Search</a>
        </div>
    </form>
    </td>
  </tr>
  </table>
</body>
</html>
----------------------------------
Her er noget af main framen \"search.asp\"
jeg håder at det er nok da filen er meget stor.
---------------------------------
<!-- #include file=\"ADOVBS.INC\" -->
<% Response.Buffer = True %>
<html>
<head>
<title>Search</title>
<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\">
<SCRIPT LANGUAGE=\"JavaScript\">
function multiload(URL1) {
  parent.leftframe.location.href=URL1;
  }
</script>
<script language=\"JavaScript\">
function myOpen(id) {
  myX = (screen.availWidth-350)/2;
  myY = (screen.availHeight-200)/2;
myWin = window.open(\'produktbeskrivelse.asp?id=\' + id,\'popUp\',\'width=550,height=220,screenX=\'+myX+\',left=\'+myX+\',screenY=\'+myY+\',top=\'+myY);
myWin.focus();
}
</script>
<script language=\"JavaScript\">
  function confirmDelete( url, varegruppenavn ){
  if( confirm(\"Slet \" + varegruppenavn + \" ?\" ) ){
      location.href=url;
  }
  }
</script>
</head>
<body>
<span class =\"box\">
<%
\' Henter værdien fra search.htm
strKeyword = Trim(Request.Form(\"Keyword\"))

If Len(strKeyword) = 0 Then
\' Hvis der ikke er skrevet i feltet
response.clear
response.redirect(\"search.htm\")

Else

\' Hvis der er skrevet i feltet
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")

End If

\' Opbygger en dynamisk SQL streng
strSQL = \"SELECT Id, varenr, varebeskrivelse, stor_beskrivelse, udsalgspris_incl_moms, leverandoer, indkoebspris_excl_moms, Forhandlerpris_excl_moms FROM produkter WHERE\"
strSQL = strSQL & \" (varenr LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (varebeskrivelse LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (stor_beskrivelse LIKE \'%\" & strKeyword & \"%\')\"

Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"../db/varer.mdb\")

set rs = myconn.execute(strSQL)
Avatar billede virus Nybegynder
24. december 2001 - 00:38 #22
henter lige noget brænde brb, mekaniker hvis nikolajdus eksempel ikke virker så upload det hele så får du det serverside istedet ;)
ik nikolajdu
Avatar billede mekaniker Nybegynder
24. december 2001 - 00:40 #23
jeh fatter bare ikke rigtig noget af javascript, så det ville være rart med et eksempel
//Mekaniker
Avatar billede nikolajdu Nybegynder
24. december 2001 - 00:46 #24
Nu aner je ikke helt præcist hvad du gerne vil tjeke, men idée vil være noget alá:

<form name=\"whatever\" onsubmit=\"return nyAction(this)\">

og så en funktion der siger noget alá:

<script>
function nyAction(hej){
document.whatever.action=\'nyside.asp\'
}

</script>

Det skal så kombineres med noget if/else men det afhænger af hvad du gerne vil teste :))

/Nikolaj
Avatar billede mekaniker Nybegynder
24. december 2001 - 00:48 #25
jeg skal kun teste om feltet er tomt
//Mekaniker
Avatar billede nikolajdu Nybegynder
24. december 2001 - 00:54 #26
<script>
function nyAction(hej){
if(document.formensNavn.FeltNavn.value=\"\"){
document.whatever.action=\'nyside.asp\'
}else{
document.whatever.action=\'andenSide.asp\'
}
}
Avatar billede virus Nybegynder
24. december 2001 - 01:00 #27
Det er ufedt med en alertbox ;)
Avatar billede virus Nybegynder
24. december 2001 - 01:01 #28
og ellers giver du ikke brugeren svar ¨på den måde nicolajdu har leveret, er selv meget imod clientside dynamik på sider, men aight...jeg er afmeldt fra det her spm, gider ikke proklamere mere :)
Avatar billede mekaniker Nybegynder
24. december 2001 - 01:02 #29
Ja der skal ikke være nogen alertboks, men det er der da vel heller ikke i eksemplet.
//Mekaniker
Avatar billede nikolajdu Nybegynder
24. december 2001 - 01:05 #30
Når nu vi er i gang, så bør vi ok også submitte ofrmen med det samme :))

<script>
function nyAction(hej){
if(document.formensNavn.FeltNavn.value=\"\"){
document.whatever.action=\'nyside.asp\'
whatever.submit()
}else{
document.whatever.action=\'andenSide.asp\'
whatever.submit()
}
}
Avatar billede mekaniker Nybegynder
24. december 2001 - 01:18 #31
det virker, men jeg mangler stadig et target for hvis feltet er tomt loader den nu formen i mainframen
//Mekaniker
Avatar billede nikolajdu Nybegynder
24. december 2001 - 01:24 #32
Du kan vel bare sætte target til den rigtige frame???

target=\"minRamme\"
Avatar billede mekaniker Nybegynder
26. december 2001 - 20:51 #33
Nu fungere dette men den er stadig gal med target.
Formen ser således ud, men hvis der ikke er skrevet noget i formen bliver den loadet i mainframen.
-------------------------------------------
<form name=\"form1\" onsubmit=\"return nyAction(this)\" target=\"mainFrame\" method=\"post\">
-----------------------------------------

<script>
function nyAction(form1,target){
if(form1.Keyword.value ==\"\"){
document.form1.action=\'v_frame.asp\'
}else{
document.form1.action=\'search.asp\'
form1.submit()
}
}
</script>
Avatar billede nikolajdu Nybegynder
26. december 2001 - 23:45 #34
Jeg har lige løst det for dig i det andet spørgsmål, så du kan vel godt lukke her eller er der flere problemer??

/Nikolaj
Avatar billede mekaniker Nybegynder
27. december 2001 - 10:32 #35
lukker
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
Kurser inden for grundlæggende programmering

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