Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Fr 04.08.2006 09:27
Titel [ASP] Problem beim Auslesen von einem String |
|
|
Hallo Leute,
ich habe hier ein Problem bei dem ich nicht mehr weiterkomme.
Und zwar folgendes,
ich habe in einer Datenbank eine Tabellenspalte ewig viel text.
der text ist mit diversen Bildern (Eine Linie (Linie.gif)) in versch. bereiche unterteilt.
nun möchte ich das nach jeder 10ten Linie der Text (string) abgebrochen wird und ein Link produziert wird der ab der letzten Linie den weiterführenden Text zeigt.Aber auch nur soviel das wieder nur max 10 linien gezeigt werden.
falls irgendwann keine 10 mehr da sind soll er einfach abbrechen.
folgendes Script habe ich bis jetzt geschrieben
Code: |
<%
start = request.querystring("start")
pos = request.querystring("pos")
SQL="SELECT * FROM content WHERE contentID=25"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open SQL, db, 3, 3
inhalt = rs("content")
dim anzahl
dim stelle
dim datensatz
dim ausgabe
dim zeichen
anzahl = 1
stelle = 1
Do While (InStr(stelle, inhalt, "linie.gif") > 0)
Stelle = InStr(stelle, inhalt, "linie.gif") + 1
'response.write "erste schl.: " & stelle & "<br />"
anzahl = anzahl + 1
Loop
datensatz = 1
If start > 0 then
stelle = pos
Do While (InStr(stelle, inhalt, "linie.gif") > 0) AND (datensatz < start)
stelle = InStr(stelle, inhalt, "linie.gif") + 1
datensatz = datensatz + 1
'response.write datensatz
Loop
End If
'datensatz = 1
stelle = 1
Do While (InStr(stelle, inhalt, "linie.gif") > 0) AND (datensatz < start + 11)
stelle = InStr(stelle, inhalt, "linie.gif") + 1
datensatz = datensatz + 1
Loop
zeichen = stelle + 9
ausgabe = left(rs("content"), zeichen)
response.write ausgabe
start = datensatz
pos = stelle + 1
response.write "<br /><br /><br />"
%>
<a href="test3.asp?start=<% =start %>&pos=<% =pos %>" target="_self">» nächste seite</a>
<%
rs.close
%>
|
mit diesem code erhalte ich beim laden der seite auch die ersten 10 linien und danch meinen link der die seite neu lädt.
nur danach macht das script was es will.
auch die ersten linien sind dabei was ich ja absolut nicht möchte.
kann mir hier bitte jemand unter die arme greifen?
dank euch
Zuletzt bearbeitet von Sarky am Fr 04.08.2006 09:39, insgesamt 1-mal bearbeitet
|
|
|
|
|
Rob Bash
Dabei seit: 09.09.2004
Ort: Bielefeld
Alter: 42
Geschlecht:
|
Verfasst Sa 05.08.2006 14:37
Titel
|
|
|
Hallo Kash,
ich weiss nicht ob ich dein problem richtig verstanden habe. zudem hatte ich nicht die möglichkeit, etwas zu testen.
ich habe hier mal einen lösungsvorschlag. ist weitestgehen neu: (wie gesagt, ich konnte nicht testen, kann also den einen oder anderen kleinen syntax oder gedankenfehler enthalten.)
Code: | <%
dim page
dim anfang
dim ende
dim out
dim linie
dim i
page = "" & request.querystring("page")
if page = "" or not isnumeric(page) then
page = 0
else
page = cint(page)
end if
SQL="SELECT * FROM content WHERE contentID=25"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open SQL, db, 3, 3
inhalt = rs("content")
rs.close
anfang = 0
ende = 0
linie = "linie.gif"
'anfang ermitteln
for i = 0 to page * 10 ' n * anzahl der linien
if instr(anfang, inhalt, linie) > 0 then
anfang = instr(anfang, inhalt, linie) + len(linie)
end if
next
'ende ermitteln
for i = page * 10 to (page + 1) * 10 ' n * anzahl der linien
if instr(ende, inhalt, linie) > 0 then
ende = instr(ende, inhalt, linie) + len(linie)
end if
next
out = mid(inhalt, anfang, ende - anfang)
page = page + 1
response.write "<br /><br /><br />"
%>
<a href="test3.asp?page=<% =page %>" target="_self">» nächste seite</a>
|
wenn das nicht klappt, schick mir mal deine datenbank.
|
|
|
|
|
Anzeige
|
|
|
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Mo 07.08.2006 09:02
Titel
|
|
|
hallo rob bash,
leider funktioniert deine Lösung auch noch nicht so richtig.
zum beispiel zeigt er nie die zeichen bis zur ersten trennung durch 'linie.gif'.
ausgabe erfolgt erst ab dem 'linie.gif' das erste mal im text auftaucht.
dann richtiger weiße solange bis 10 linien angezeigt werden.
die datenbank kann ich dir leider nicht senden.
stell dir einfach den Inhalt in der Spalte folgend vor.
Es ist nur text enthalten, dieser wird durch eine Trennung in themenbereiche untergliedert.
diese trennung ist ein Bild > linie.gif < ziel ist es durch die neue Programmierung die ausgabe ordentlicher darzustellen.
der text ist ellenlang und es kann sein das über 40 Linien gibt.
Wir wollen pro seite immer nur soviel text zeichen wie es 10lininen gibt.
danach soll die ausgabe aufhören.
danach wird ein link projeziert der die seite neu lädt mit genau dem inhalt der nach der 10ten Linie kommt.
aber auch nur wieder 10 linien lang. oder falls es mal keine 10 pro seite gibt soviele wie übrig.
ist es jetzt klarer?
|
|
|
|
|
Rob Bash
Dabei seit: 09.09.2004
Ort: Bielefeld
Alter: 42
Geschlecht:
|
Verfasst Mo 07.08.2006 10:14
Titel
|
|
|
wer testen kann ist klar im vorteil:
Code: | <%
dim SQL
dim page
dim inhalt
dim anfang
dim ende
dim out
dim linie
dim i
page = "" & request.querystring("page")
if page = "" or not isnumeric(page) then
page = 0
else
page = cint(page)
end if
SQL="SELECT * FROM content WHERE contentID=25"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open SQL, db, 3, 3
inhalt = rs("content")
rs.close
anfang = 1
linie = "linie.gif"
'anfang ermitteln
for i = 0 to page * 10 -1' n * anzahl der linien
if InStr(anfang, inhalt, linie) > 1 then
anfang = instr(anfang, inhalt, linie) + len(linie)
end if
next
ende = anfang
'ende ermitteln
for i = page * 10 to (page + 1) * 10 ' n * anzahl der linien
if instr(ende, inhalt, linie) > 0 then
ende = instr(ende, inhalt, linie) + len(linie)
end if
next
out = mid(inhalt, anfang, ende - anfang)
page = page + 1
response.write out
response.write "<br /><br /><br />"
%>
<a href="test3.asp?page=<% =page %>" target="_self">» nächste seite</a>
|
so funzt es. problem war dass vb nicht 0 sondern 1 als startindex hat. zudem ist er auch bei der ersten seite durch die erste for schleife gelaufen. kleiner gedanklicher fehler.
|
|
|
|
|
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Mo 07.08.2006 10:59
Titel
|
|
|
hallo rob,
dank dir. es funktioniert.
ich mußte nur beim deklarieren von der var linie das ende des Image Tags noch anfügen
Code: |
Linie = "linie.gif" & Chr(34) & "/>"
|
sonst hat er jeweils die letzte linie nicht angezeigt, wie auch das ende des tags auf der nächsten seite.
wenn ich bei folgendem
Code: |
out = mid(inhalt, anfang, ende - anfang)
|
die rechnung durch
Code: |
out = mid(inhalt, anfang, ende - anfang + 1) ' plus eins erweitert
|
habe, hat er zwar die letzte linie angezeigt, jedoch auf der nächsten seite den ersten eintrag 2 mal wiederholt.
jetzt klappt es, danke!
jetzt muß ich nur angeben, das wenn keine linie mehr vorhanden ist, auch kein Link mehr angezeigt wird.
gruß
kash
|
|
|
|
|
|
|
|
Ähnliche Themen |
RegExp String zwischen 2 Zeichen in einem String entfernen
Flash-XML Problem mit Text auslesen!
director-problem beim auslesen einer xml
[AS] String als Variable
[PHP] String -> date
[PHP/MySQL] String in SQL-Abfrage ?! wie ??
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|