Chaos komplett:(

sly69

Grünschnabel
Hallo zusammen

Erstens möchte ich mich jetzt schon bei denen Bedanken die mir helfen können.

Ich habe eine mssql database mit ca 2400 einträge von bildern.

die Funktionen die ich programmieren muss sind folgende.

ich habe eine suchfunktion und eine "weiter" funktion.

nun mein problem

ich gebe eine gewisse zahl in die suche ein und gehe damit zur db und hole mir das foto mit der entsprechenden such eingabe, nun kann es oder besser ist es so das es auch 500 fotos sein können die diese bezeichnung haben, wie kann ich diese mit der "weiter" funktion ansprechen bzw. mir die bilder nur immer dann anzeigen lassen wenn ich den weiter knopf drücke?

das wäre mal mein erstes problem.

grüsse Sly
 
Hallo

das geht am performantesten über eine Abfrage der SQL.

Wenn Du weiter klickst, musst Du die Abfrage so aufrufen, dass folgender Wert gefunden wird

select top 1 bild from tabelle where id > " & id & " order by id ASC

etc.

Die vorgehensweise ist ungefähr hier beschrieben
http://www.aspheute.com/artikel/20000403.htm
Nur damit Du verstehst, was ich meine.
 
Hallo Luzie

Danke erstmal, ich werde dieses mal einabuen und bescheid geben:)

Noch ne frage , soll ich am besten den wert den ich im suchen eingeben über Rquest.Querystring abfragen um das sql statement aufzubauen oder hast du eine elegantere weise?

gruss Sly
 
Hi

Wenn Du den Suchbegriff oder Zahl über Formular und URL weitergeben willst, dann musst Du auch über die Variable beides möglich machen.

z.b.

dim var : var = Request.Form("feld") & Request.QueryString("feld")

Hier mal ein Beispielscript von mir

Code:
<%@LANGUAGE="VBSCRIPT" %>
<% option explicit 
dim strDatabase %>
<!--#include file="connections.asp" -->
<%  
' -- bildershow für Bereichte
function getBilder
dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open strDatabase
	
	dim url, id
	url = request.Servervariables("SCRIPT_NAME")
	dim pic : pic = 404
	
	dim sql1, rs1
	sql1 = "select min(ID), max(ID) from tbl_bilder where bdokID=" & pic 
	Set RS1 = Server.CreateObject("ADODB.Recordset")
	RS1.Open sql1, objConn
	dim anfang : anfang = rs1(0)
	dim ende : ende = rs1(1)
	rs1.close
	set rs1=nothing
	
	id = anfang
	if Request.QueryString("id") <> "" then id = Request.QueryString("id")
	
		dim prev : prev = Request.QueryString("prev")
	dim anext : anext = Request.QueryString("next")
	
	'++++++++++++++++++++++++++++++++++++++++++++++
	
	if prev <> "" then
	dim sql, rs
	sql = "select * from tbl_bilder where bdokID=" & pic & " and ID < " & id & " order by ID DESC"
	elseif anext <> "" then
	sql = "select * from tbl_bilder where bdokID=" & pic & " and ID > " & id & " order by ID ASC"
	else
	sql = "select * from tbl_bilder where bdokID=" & pic & " and ID =" & id
	end if
	Set RS = Server.CreateObject("ADODB.Recordset")
	RS.Open sql, objConn
	
	' --- Bilderausgabe
	
	dim AusgabeBild
	AusgabeBild = "<div style=""text-align:center;"">" & _
			"<img style=""border:1px solid #cccccc;"" src=""../pfad/" & _
			rs(2) & "_" & rs(1) & ".jpg"">" & _
			"</div>"
	
	' ---- Anfang und Ende abfragen
	
	dim mAnfang, mEnde
	if rs(0) = anfang then mAnfang = true
	if rs(0) = ende then mEnde = true	
	
	
	dim txt
	txt = AusgabeBild & "<br>"	
	
	' ---- Blätterlinks
	
	txt = txt & "<div style=""text-align:center;"">"
	if mAnfang = false then
	txt = txt & "<a href=""" & url & "?pic=" & pic & "&amp;ID=" & anfang & """>Anfang</a> | "
	txt = txt & "<a href=""" & url & "?pic=" & pic & "&amp;prev=1&amp;ID=" & rs(0) & """>prev</a> | "
	else
	txt = txt & "Anfang | prev | "
	end if
	if mEnde = false then
	txt = txt & "<a href=""" & url & "?pic=" & pic & "&amp;next=1&amp;ID=" & rs(0) & """>next</a> | "
	txt = txt & "<a href=""" & url & "?pic=" & pic & "&amp;ID=" & ende & """>Ende</a> "
	else
	txt = txt & "next | Ende"
	end if
	txt = txt & "</div>"
	
	
	
	'++++++++++++++++++++++++++++++++++++++++++++++++++++++
	rs.close
	Set RS = Nothing  
  
' -- Verbindung schließen		
objConn.close
set objConn = Nothing
getBilder = txt
end function
%>
<html>
<head>
<title>Bildershow</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body {
font-family : Verdana, Arial, Helvetica, sans-serif; 
font-size:80%;
margin:2px;
background-color:#cccccc;
text-align:center;
}
</style>
</head>

<body>
<div style="padding:10px;margin:10px;background-color:white;border:2px outset;width:550px;">
<%
Response.write getBilder
%>
</div>
<div style="font-size:70%;color:white;padding-left:10px;">&copy;PTS Training Service</div>
</body>
</html>

Das sieht dann wie folgt aus
http://www.pts.info/service/tausgabe.asp
 
heyyy Luzie

danke sehr für dein code , ist mir zu kompliziert, bin nicht so ein profi :)

was ich gerne wissen möchte ist
1.
ich brauche doch ein textfeld wo ich die zahl eingebe die das foto sucht, und ein button zum absenden.

wie bringe ich nun die zahl in eine variable die ich dann in meiner sql abfrage einbauen kann?
2.
Ist das überhaupt möglich alles auf einer seite zu machen oder muss ich auf eine 2te ausweichen oder gehe ich dass ganz falsch an



hier noch ein kleiner codeschnipsel

<%
if Request.Form("submit") then
call dbconnect()
set Rst = Conn.Execute ("SELECT pic_link FROM pic WHERE pic_m ='suche1'")%>
<td width="984" height="650"><img src="<%=Rst(0)%>" /></td>
<%Rst.Close
Set Rst = Nothing
call dbclose()
end if
%>

gruss sly
 
Hallo

klar kannst Du auch alles auf einer Seite darstellen. Das ist eben eine Sache der Abfrage. Aber die hast Du ja in Deinem Scriptcode auch schon drin.

Du musst nur einen Schritt weiter denken.
Wenn Du die Suche auf der einen Seite über eine Formular übergibst (POST), musst Du sie bei den Blätterlinks über den QueryString() übergeben (GET).

Die Variable kannst du dann definierten, wie ich es im Vorposting bereits angegeben habe.

Code:
<%
if Request.Form("submit") then
dim var : var = Request.Form("feld") & Request.QueryString("feld")
call dbconnect()
set Rst = Conn.Execute ("SELECT pic_link FROM pic WHERE pic_m ='" & var & "'")%>
....

Allerdings hat dies ein Problem, dass die über die Blätterlinks ja keinen Request.Form("submit") übergibst. Insoforn wird die Abfrage in dem Moment nicht mehr aktiv, wenn Du weiterblätterst.

Du kannst aber die Abfrage auch auf die Variable setzen, die dann sowohl über das Formular als auch über die Blätterlinks weitergegeben wird.
 
Hallo Luzie

Herzlichen dank für deine hilfe, ich bin richtig froh das du mir hilfst:)

was ich nicht verstanden habe ist warum sollte ich die abfrage auch in eine variable geben

wenn ich doch einmal eine abfrage mache dann kommen doch alle möglichen werte in das recordset stimmt das so ich frage nur?

dann könnte ich doch mit rst(0) anfangen in den link zu geben und beim blättern rst(1) usw bin ich da richtig in der annahme?

nur bring ich das rst nicht in den link rein funkz. nicht:-( , was mache ich falsch oder bin ich total auf dem holzweg

grüsse Sly
 
Hi

ja, das stimmt, es werden alle angeforderten Werte geladen, aber nur solang, bis die Seite wieder neu geladen wird und das passiert, wenn Du ein nächstes Bild aufrufst.

Ich sag es nochmal, wie Du es machst, ist eigentlich relativ egal, aber die Anforderung bzw. die Suche muss bei jedem Laden immer wieder an die Seite geschickt werden.

Wenn Du das nächste Bild laden willst, musst Du dies dem Recordset auch sagen

"Lad mir bitte das nächste Bild mit der nächst höheren ID".
 
Hi Luzie

Habs verstanden das mit der variable:) werde ich mich noch ranwagen :)

nur bin ich am stolpern und zwar, wenn ich einfach auf den Button klicke und es steht nichts in textfeld, dann kommt eine fehlermeldung mit Type mismatch: '[string: ""]'.

wie kann ich das abfangen

Code:
<% if Request.Querystring ("suche1") then
	  dim var 
	  var = Request.Form("test") & Request.QueryString("suche1")
	   call dbconnect()
     set Rst = Conn.Execute ("SELECT pic_link FROM pic Where pic_m Like'%" & var & "%'")%>
    <td width="984" height="650"><img src="<%=Rst(0)%>" width="984"  height="650"/></td>
	<%Rst.Close
	
                Set Rst = Nothing

                    call dbclose()

else%>

<td width="984" height="650"><img src="foto/first.jpg" width="984" height="650"/></td>
<%
end if%>
 
Hi

gib den Parametern mal korrekte Namen.

Du fragst den QueryString ab, dabei sollte dort immer ein Wert über die Links übergeben werden. Wenn Du auf den Button klickst und das Formularfeld ist leer, dann musst Du dieses Feld abfragen.

Code:
if Request.Form("suche") <> "" then
   dim strSuche 
   strSuche = Request.Form("suche") & Request.QueryString("suche")
....
 

Neue Beiträge

Zurück