# Änderung des Wertes einer Variable beim Klick auf Link



## tr (22. Feb 2006)

Hallo,

Ich habe vor kurzem mit dem Programmieren von Servltes begonnen und habe folgendes Problem:

Ich möchte, dass sich beim Klick auf einem Link, der Wert einer Variable ändere.

Beispiel: Ich habe einen Link: *<a href=.........> test</a>* und eine Variable *i*;

Wenn man auf dem Link klickt soll sich nun der Wert dieser Variable verändern.
Die Anzahl der Links steht am Anfang nicht fest. Das heißt, dass die links über eine For-Schleife erstellt werden.

Könnt ihr mir weiterhelfen?

Danke im Voraus.


----------



## Leroy42 (22. Feb 2006)

Meinst du so etwas?


```
<html>
<body>
  <h1>Variable = <%=request.getParameter("variable")%></h1>
  <% for (int i=1; i < 10; ++i) {%>
    Link <%=i%> : [url="variable.jsp?variable=<%=i%>"]Hier ist der <%=i%>. Link[/url]

  <%}%>
</bod>
</html>
```

Die Frage gehört eigentlich in die Rubrik _Java Enterprise_


----------



## asd (22. Feb 2006)

das funktioniert irgendwie nicht


----------



## Leroy42 (22. Feb 2006)

Bei mir klappts aber   ???:L 

1. Aufruf der Seite mit Maus über Link 7 (unten wird die aufzurufende Adresse angezeigt)






2 Aufruf der Seite mit Maus nach Klick auf Link 7


----------



## Guest (22. Feb 2006)

Also das ist mein Code von dem Servlet:



```
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; 

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test2 extends HttpServlet 
{
	int counter=0, countPage=1, nrAktuell=1;
		
	Statement stmt = null;
	String query, query2;
	ResultSet rs = null;
	Connection connection = null;
	int test=1;	
	
	protected void doGet(
		HttpServletRequest request,
		HttpServletResponse response)
		throws ServletException, IOException {
			
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();		
		
		
		countPage = 1;
		counter = 0;
		
		out.println(nrAktuell);
		
		query  = "SELECT * FROM Kunden WHERE ID < 3*" + nrAktuell + "AND ID >=" + (3*nrAktuell-3);
		query2 = "SELECT * FROM Kunden";
		
			try 
			{
				Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			} 
			catch (ClassNotFoundException e) 
			{
				out.println("Treiber konnte nicht geladen werden!!!");
				e.printStackTrace();
			}
			try 
			{
				connection = DriverManager.getConnection("jdbc:odbc:test");		
			} 
			catch (SQLException e1) 
			{
				out.println("Fehler beim Aufbau der Verbindung mit der Datenbank!");
			}
			try 
			{
				stmt = connection.createStatement();
				rs = stmt.executeQuery(query); 
				
				out.println("<table width = 100% border=1 bgcolor=yellow>");
				
				while(rs.next())
				{
					out.println("<tr>");
					out.println   ("<td>");
					out.println       (rs.getString(1));
					out.println   ("</td>");
					out.println   ("<td>");
					out.println       (rs.getString(2));
					out.println   ("</td>");
					out.println   ("<td>");
					out.println       (rs.getString(3));
					out.println   ("</td>");
					out.println("</tr>");
				} 
				out.println("</table>");
				
				rs = stmt.executeQuery(query2); 				
				
				while(rs.next())
				{
					counter++;
					
					if(counter>=3)
					{
						counter=0;
						countPage++;
					}
				} 
				
				for(int i=1;i<=countPage;i++)
				{
					//nrAktuell ++;
					test = i;
					out.println("<a href=http://p132355:50400/firstWeb/servlet/com.sap.Test2?"+(nrAktuell=i)+">"+i+"</a>");

				}
					
			} 
			catch (SQLException e2) 
			{
				e2.printStackTrace();
				out.println("Fehler bei Statement!");
			}							
	}

}
```


----------



## Leroy42 (22. Feb 2006)

> ```
> out.println("<a href=http://p132355:50400/firstWeb/servlet/com.sap.Test2?"+(nrAktuell=i)+">"+i+"</a>");
> ```



Deine Variable _nrAktuell_ ist vom Typ _int_. Du erzeugst also URLs(URIs?) des Typs

http://p132355:50400/firstWeb/servlet/com.sap.Test2?1
http://p132355:50400/firstWeb/servlet/com.sap.Test2?2
http://p132355:50400/firstWeb/servlet/com.sap.Test2?3

Da fehlt doch noch ein Variablenname wie

http://p132355:50400/firstWeb/servlet/com.sap.Test2?variablenname=2

oder wie :autsch:


----------



## ed (23. Feb 2006)

Wie sollte ich es dann schreiben, damit der Variable nrAktuell den Wert von i zugewiesen wird?


----------



## Leroy42 (23. Feb 2006)

In deinem Servlet _http://p132355:50400/firstWeb/servlet/com.sap.Test2_

```
int nrAktuell = Integer.parseInt(request.getParameter("nrAktuell"));
```
falls das Servlet *immer* mit korrekt belegtem _nrAktuell=..._ aufgerufen wird;
sonst erstmal testen ob _nrAktuell_ überhaupt gesetzt und eine gültigen Denotation eines int's ist.

Und in deinem _Aufruf_-Servlet

```
out.println("<a href=http://p132355:50400/firstWeb/servlet/com.sap.Test2?nrAktuell="+(nrAktuell=i)+">"+i+"</a>");
```

Oder wir reden hier aneinander vorbei  :shock:


----------

