Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    213

    [jsp]aggiunta al db e link

    ciao a tutti! la mia pagina jsp tramite un form fa l'aggiunta ad un db e poi dovrebbe aprire la pagina index.html. la pagina che ho fatto e che vi posto effettua l'aggiunta al db ma non mi porta alla pagina index.html, un altro problema è che mi compaiono gli alert della funzione javascript ma mi fa cmq l'aggiunta al db,cosa che non dovrebbe.
    cmq ecco il codice della pag. Registrazione.jsp
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%@ page language="java" import="java.util.*" import="java.sql.*"%>
    <html><head><title>Registrazione.jsp</title>
              <script type="text/javascript">
    	function Controlla() {
                 	var controllo = new RegExp ("^[0-9]+$");
    		for (var i=0; i < 4; i++) {
    			if (document.getElementById("s"+i).value == "") {
    				alert("Riempi tutti i campi");
    				return;
    			}
    			if (controllo.test(document.getElementById("s3").value)) {
    				alert("Il campo password non deve contenere solo numeri");
    				return;
    			}
    			else {
    				location.href = ("index.html");
    				return;
    			}
    		}	
    	}
               </script>
      </head>
      <body>
      <form method="POST">
    	<table  width="85%" id="table1">
    	      <tr>
    		<td width="275">
    			<p align="center">Nome</td>
    		<td>
    	             	
    
    <input type="text" size="60" id="s0" name=nome></p>
    		</td>
    	    </tr>
    	    <tr>
    		<td width="275">
    			<p align="center">Cognome</td>
    		<td>
    			
    
    <input type="text" size="60" id="s1" name=cogn></p>
    		</td>
                 </tr>
    	<tr>
    		<td width="275">
    			<p align="center">Username</td>
    		<td>
    			
    
    <input type="text" size="60" id="s2" name=user></p>
    		</td>
    	</tr>
    	<tr>
    		<td width="275">
    			<p align="center">Password</td>
    		<td>
    			
    
    <input type="text" size="60" id="s3" name=pwd></p>
    		</td>
    	</tr>
    	<tr>
    		<td width="275">
    			<p align="center"></p>
    			<p align="center">
    			<input type=Submit value=registrami onclick="Controlla()">
    			</p>
    		</td>
    	</tr>
    </table>
    </form>
    <%        	String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";
         	String strNomeConnessione="jdbc:odbc:database";
      	Class.forName(strDriver);
      	Connection conn=null;
      	conn=DriverManager.getConnection(strNomeConnessione);
      	Statement stmDb=conn.createStatement();
      	 	
      	Enumeration parametri = request.getParameterNames();
      	if(parametri.hasMoreElements()){
      		String strNome = request.getParameter("nome");
      		String strCognome = request.getParameter("cogn");
      		String strUser = request.getParameter("user");
      		String strPwd = request.getParameter("pwd");
      		stmDb.executeUpdate(
      		"INSERT INTO UTENTI (\"nome\", \"cognome\", \"user\", \"password\") VALUES ('"+strNome+"','"+strCognome+"','"+strUser+"','"+strPwd+"')");
      	}  	 
    %>
    </body></html>

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ciao, allora, innanzitutto sfatiamo un mito: fare i controlli lato client (javascript) non serve a gran ché tranne che a tentare di evitare il submit del form. I controlli lato client sono utili solo come cosmesi ed il fatto di averli non ti esime dal doverli riapplicare lato server.

    Per quanto riguarda il tuo caso specifico: ti conviene inserire il controllo all'evento onsubmit del tag form:
    codice:
    <form name="mioform" action="miaaction.jsp" method="post" onsubmit="return Controlla();">
    Se si verifica una condizione per cui il form non deve essere inviato, fai un
    codice:
    return false
    nella funzione javascript.

    Ripeti i controlli lato server e solo allora fai l'inserimento.

    Per quanto riguarda il redirect... o lo fai lato client (con metatag html) oppure potresti fare come fa il forum di html.it che effettua il post verso una pagina diversa e da questa ti reindirizza verso il thread. Ti eviti anche lo spiacevole effetto di submit ripetuti.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    213
    con l' onsubmit e il return false sembra che i problemi siano invariati, è anche strano che la funzione javascript funzioni tranne che x l'href,inffati non mi apre la pagina index.html...ora inserisco subito anche i controlli lato server

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    213
    inserito i controlli lato server,ora forse i problemi sono solo html,infatti non mi reindirizza alla pagina index.html e l'alert: riempi tutti i campi compare solo se non inserisco il primo campo.posto cmq la pagina modificata:
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%@ page language="java" import="java.util.*" import="java.sql.*"%>
    <html>  <head><title>Registrazione.jsp</title>
    	  <script type="text/javascript">
    		function Controlla() {
    			var controllo = new RegExp ("^[0-9]+$");
    			for (var i=0; i < 4; i++) {
    				if (document.getElementById("s"+i).value == "") {
    					alert("Riempi tutti i campi");
    					return false;					                          }
    				else {
    					location.href = ("index.html");
    					return;
    				}	
    			}	
    		}
    	</script>
      </head>
      <body>
    <form method="POST" onsubmit="Controlla()">
    	<table  width="85%" id="table1">
    		<tr>
    			<td width="275">
    			<p align="center">Nome</td>
                           		<td>
    			
    
    <input type="text" size="60" id="s0" name=nome></p>
    			</td>
    		</tr>
    		<tr>
    			<td width="275">
    			<p align="center">Cognome</td>
    			<td>
    			
    
    <input type="text" size="60" id="s1" name=cogn></p>
    			</td>
    		</tr>
    		<tr>
    			<td width="275">
    			<p align="center">Username</td>
    			<td>
    			
    
    <input type="text" size="60" id="s2" name=user></p>
    			</td>
    		</tr>
    		<tr>
    			<td width="275">
    			<p align="center">Password</td>
    			<td>
    			
    
    <input type="text" size="60" id="s3" name=pwd></p>
    			</td>
    		</tr>
    		<tr>
    			<td width="275">
    			<p align="center"></p>
    			<p align="center">
    			<input type=Submit value=registrami>
    			</p>
    			</td>
      		</tr>
    	</table>
    </form>
    <%  
    if ((request.getParameter("nome") != "")&&(request.getParameter("cogn")!= "")&&(request.getParameter("user")!= "")&&(request.getParameter("pwd")!= "")){  
         	String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";
         	String strNomeConnessione="jdbc:odbc:database";
     	Class.forName(strDriver);
     	Connection conn=null;
     	conn=DriverManager.getConnection(strNomeConnessione);
     	Statement stmDb=conn.createStatement();
      	 	
     	Enumeration parametri = request.getParameterNames();
     	if(parametri.hasMoreElements()){
     		String strNome = request.getParameter("nome");
     		String strCognome = request.getParameter("cogn");
     		String strUser = request.getParameter("user");
     		String strPwd = request.getParameter("pwd");
     		stmDb.executeUpdate(
    		"INSERT INTO UTENTI (\"nome\", \"cognome\", \"user\", \"password\") VALUES ('"+strNome+"','"+strCognome+"','"+strUser+"','"+strPwd+"')");
     	}  	 
     }	
    %>
      </body></html>

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Quel location.href="..." non va bene lì: sei ancora in javascript, ossia, lato client, e se fai quel redirect (ammesso e non concesso che vada bene a livello di sintassi) il form non verrà inviato in quanto javascript entra in azione prima del submit del form stesso.
    Se vuoi che dopo l'inserimento a database avvenga anche il redirect, fai scrivere al JSP qualcosa del genere
    codice:
    <script language="javascript">
    window.location.href="index.htm";
    </script>
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    213
    facendo così:
    codice:
    	if ((request.getParameter("nome") != "")&&(request.getParameter("cogn")!= "")&&(request.getParameter("user")!= "")&&(request.getParameter("pwd")!= "")){  
         	String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";
         	String strNomeConnessione="jdbc:odbc:database";
      	Class.forName(strDriver);
       	Connection conn=null;
       	conn=DriverManager.getConnection(strNomeConnessione);
       	Statement stmDb=conn.createStatement();
      	 	
       	Enumeration parametri = request.getParameterNames();
       	if(parametri.hasMoreElements()){
       		String strNome = request.getParameter("nome");
       		String strCognome = request.getParameter("cogn");
       		String strUser = request.getParameter("user");
       		String strPwd = request.getParameter("pwd");
       		stmDb.executeUpdate(
       			"INSERT INTO UTENTI (\"nome\", \"cognome\", \"user\", \"password\") VALUES ('"+strNome+"','"+strCognome+"','"+strUser+"','"+strPwd+"')");
       	} 
       %>
       	<script language="javascript">
    		window.location.href="index.html";
    	</script>
    <%}
    non funziona,mi riporta subito a inde.html senza farmi inserire dati nel form,vorrei che con il click del pulsante avvenisse l'aggiunta al db e che mi portasse alla pag index.html

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Per forza, guarda un po' dove l'hai messo: quel codice viene mandato in output al browser sia che la query venga effettuata che nel caso in cui non venga effettuata. Deve stare dentro l'if dove viene eseguita la query, meglio ancora, dovresti controllare che la query abbia successo e solo allora fare il redirect.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    213
    così fnziona bene:
    codice:
    	if ((request.getParameter("nome") != "")&&(request.getParameter("cogn")!= "")&&(request.getParameter("user")!= "")&&(request.getParameter("pwd")!= "")){  
         	String strDriver="sun.jdbc.odbc.JdbcOdbcDriver";
         	String strNomeConnessione="jdbc:odbc:database";
       	Class.forName(strDriver);
       	Connection conn=null;
       	conn=DriverManager.getConnection(strNomeConnessione);
       	Statement stmDb=conn.createStatement();
      	 	
       	Enumeration parametri = request.getParameterNames();
       	if(parametri.hasMoreElements()){
       		String strNome = request.getParameter("nome");
       		String strCognome = request.getParameter("cogn");
       		String strUser = request.getParameter("user");
       		String strPwd = request.getParameter("pwd");
       		stmDb.executeUpdate(
       			"INSERT INTO UTENTI (\"nome\", \"cognome\", \"user\", \"password\") VALUES ('"+strNome+"','"+strCognome+"','"+strUser+"','"+strPwd+"')");
       %>
       	<script language="javascript">
    		location.href="index.html";
    	</script>
     <%}}%>
    grazie mille!!!non sapevo che del javascript potesse essere messo in questo modo,cmq anche prima l'avevo messo dentro un if,strano che non funzionasse.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.