John Barden: Variable kaputt?

Hi,

ich versuche eine Art Fotoalbum zu programmieren. Man soll oben auf zurück und weiter klicken können.
Ich habe folgendes Script geschrieben, dass komischerweise nur halbwegs funktioniert:

<% Response.Expires=0 %><html>
<head>
<title>test2</title>
</head>
<body>
<center>
<%
anzahl = 5

if not Request.QueryString("bild") = "" then
 bild = Request.QueryString("bild")
else
 bild = 1
end if

if bild <= 1 then
 Response.Write "zurück"
else
 Response.Write "<a href=""test2.asp?bild=" & bild - 1 & """>zurück</a>"
end if

Response.Write "    "

if bild >= cstr(anzahl) then
 Response.Write "weiter"
else
 Response.Write "<a href=""test2.asp?bild=" & bild + 1 & """>weiter</a>"
end if

Response.Write "<br><br>"
Response.Write bild

%>
</center>
</body>
</html>

Hier erscheinen die Links zurück und weiter. Falls man am Anfang oder am Ende ist, soll nur der Text zurück bzw. weiter erscheinen. Sonst als Link. Darunter
erscheint die Nummer, bei der man sich gerade befindet. Wenn man auf weiter klickt, zählt die nummer eins hoch. Bei zuürck wird 1 abgezogen.
So wie das Script jetzt da steht, funktioniert es auch. Aber jetzt kommt das komische daran:
Sobald die Variable anzahl eine Zahl enthält, die mehr als eine Stelle hat (also ab 10), funktioniert es nicht mehr.
Da erscheint dann (wenn man auf der 1 steht) noch der link weiter. Sobald man einmal daraufgeklickt hat, ist weiter nicht mehr als Link da, sondern nur noch als
Text. Man kann sich also nur zwischen 1 und 2 bewegen.
Wenn ich jetzt aber nicht die Variable verwende, sondern direkt die Zahl reinschreibe, funktioniert es.
also if bild >= 14 then ... anstatt if bild >= cstr(anzahl) then ...
Wieso funktioniert das? Und mit Variable nicht?

Was mir noch räzelhaft ist - wenn ich das cstr() weglasse und nur anzahl hinschreibe, dann funktioniert es überhaupt nicht.

Kann mir da jemand helfen? Mir erscheint das total unlogisch.

Danke

Grüße
John

  1. Hi John

    Response.Write "<a href=""test2.asp?bild=" & bild - 1 & """>zurück</a>"

    hier stimmt was nicht, ich würd das so machen:
    <a href="<%Response.Write "test2.asp?bild=" & bild - 1 %>">zurück</a>
    Geht auch den gesamten string per response.write ausgeben zu lassen, aber dann muss innerhalb der " mit ' gearbeitet werden um strings zu kenzeichnen.

    Response.Write "<a href=""test2.asp?bild=" & bild + 1 & """>weiter</a>"

    Also ich glaube so (nicht 100% sicher):
    Response.Write "<a href='test2.asp?bild=" & bild + 1 & "'>weiter</a>"
    probier das mal

    Gruß Netghost

  2. Hallo,

    ich glaube du arbeitest in die falsche Richtung (auch wenn ich nicht 100%ig sagen kann, ob genau da dein Problem liegt). Du versuchst z.B. die Anzahl in einen String zu verwandeln - Nun ja, Zahlen sind für gewöhnlich keine Strings. Ich würde aus diesem Grunde vorschlagen, dass du einfach deine Bild-Nummer in eine echte Zahl umwandelst (CInt oder CLng) und dann mit den echten Zahlen vergleichst:

    bild = CInt (Request("bild"))

    if (bild > 1) ...
    if (bild <= anzahl) ...

    Ach ja, nochwas, du solltest die erste Zeile hier nicht dauerhaft so lassen, sonst schieße ich deine Seite durch eine ungültige Eingabe in "bild" (z.B. ein Wort) ab...
    Dennoch ist es eben besser, die Bildnummer als das zu behandeln was sie ist, nämlich eine Zahl...

    MfG
    Rouven

    --

    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Ah ja, als integer hat es funktioniert.
      Danke!

  3. Hi John

    if bild >= cstr(anzahl) then

    ---------------^
    Das wandelt deine Zahl in einen String um, danach wird > oder < alfanumerisch verglichen, also 2 > 10

    sorry hab ich im ersten post nicht gesehen.

    Gruß Netghost