Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Riesumo questo post, sperando qualcuno mi aiuti

    Salve a tutti,
    ho un problema con un progetto (libreria online) sviluppato tutto in jsp/javascript e db mysql..
    La situazione è questa:

    Il db ha tutte tabelle NON relazionate tra loro
    Le tabelle non sono altro che i generi(tab1=Horror, tab2=Romanzo etc).. Gli attributi sono AUTORE,TITOLO,PREZZO,ISBN

    Possibilità di usare ESCLUSIVAMENTE javascript e JSP.


    Ora veniamo al problema vero e proprio:
    L'admin ha la possibilità di eliminare un libro tramite una pagina jsp+javascript dove dovrà:
    1) selezionare il genere
    2) scegliere libro
    3) dare l'ok (che manda tutto ad un'altra pagina che elabora i dati e modifica il db )

    Ora il punto chiave è:
    Devo fare 2 dropdownList in "cascata" e dinamici, cioè

    1)La prima dropdownList dovrà avere la lista dei generi(cioè nome tabella1, _2 , _3 etc) .. e fin qui ci sono e carica i nomi dal db tramite la query(show tables) e mi crea tutta la lista con la possibilità di selezione
    2)La seconda dovrà contenere , in base alla selezione della prima, tutti gli elementi del db corrispondenti ..SEMPRE PRESI DA DB .. esempio pratico --

    Selezione drop1=Horror vedo nella seconda tutti i libri di Horror (una SELECT* from selezione_drop1)


    Sono giorni che non riesco a risolvere, riesco solo a creare dinamicamente la prima drop ma non la seconda in base alle mie esigenze...
    Cercando su internet(giorni e giorni), trovo solamente esempi con la seconda dropdown "statica"(cioè creano più option value a mano)

    HELP ME

    e grazie a tutti anticipatamente

  2. #2
    Allora per prima cosa, spero che il database nn l'abbia progettato tu perchè secondo me è orrendo....
    Venendo al probleama cioè come popolare un seconda drop-down in base alla scelta di un'altra hai due modi per farlo :

    1) "HOLD SCHOOL"
    In pratica devi fare in modo che al cambiamento del valore ("onchange") venga effettuata una post / get (segli quello che ti è più comodo) alla stessa pagina con in + il valore scelto. In questo modo nella stessa pagina potrai effettuare un controllo e vedere se esiste quel parametro (getParameter) e popolare la seconda drop-down di conseguenza.

    2) "NEW SCHOOL"
    Prevede l'uso di ajax (che ti consiglio vivamente di imparare...) grazie ad "ajax" puoi intercettare l'evento onchange della prima dropdown, prenderti il valore e poi effettuare una richiesta, tipicamente verso una servlet, che preso il valore passato ti restituisce i valori da inserire nella seconda dropdown che ovviamente dovrai aggiornare tramite javascript.

  3. #3
    Originariamente inviato da francesco.muia
    Allora per prima cosa, spero che il database nn l'abbia progettato tu perchè secondo me è orrendo....
    Venendo al probleama cioè come popolare un seconda drop-down in base alla scelta di un'altra hai due modi per farlo :

    1) "HOLD SCHOOL"
    In pratica devi fare in modo che al cambiamento del valore ("onchange") venga effettuata una post / get (segli quello che ti è più comodo) alla stessa pagina con in + il valore scelto. In questo modo nella stessa pagina potrai effettuare un controllo e vedere se esiste quel parametro (getParameter) e popolare la seconda drop-down di conseguenza.

    2) "NEW SCHOOL"
    Prevede l'uso di ajax (che ti consiglio vivamente di imparare...) grazie ad "ajax" puoi intercettare l'evento onchange della prima dropdown, prenderti il valore e poi effettuare una richiesta, tipicamente verso una servlet, che preso il valore passato ti restituisce i valori da inserire nella seconda dropdown che ovviamente dovrai aggiornare tramite javascript.
    Il database non l'ho progettato io ( ) e purtroppo ajax non è previsto (avevo pensato di sfruttarlo ma mi è stato risposto un secco NO.)

    Veniamo quindi alla HOLD SCHOOL
    In linea teorica ci sono .. il problema è a livello codice
    Per il momento sono qui:

    codice:
    <%@ page language="java" %>
    <%@page import="java.sql.*,java.util.*"%>
    
    <script language="javascript">
    //FARE ONSELECT
     
    </script>
    </head>
    <body>
    <h1>cancella libro
    
    
    </h1>
    <form name="frm" method="post" action="Aggiungi.jsp" >
    <table>
      <%
      try{// connessione al db per selezione genere!
        	Connection con=null;
        	ResultSet rst=null;
        	//Statement stmt=null;
    		Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/raccolta", "root", "pass");
            Statement statement = con.createStatement() ;
            rst =statement.executeQuery("Show tables ") ;
    %>
    
    
            <td><tr>Tipologia:<select name="sel"><option value=""><---Select---></option>
            
    <%
    
    while(rst.next()){
    String tipo = rst.getString(1);
    
    %><option value="<%= tipo %>"><%=tipo%></option>
    <%} rst.close(); statement.close(); %>
    </select>
    
    </td></tr>              
    
    
    <%
    //Stampa errore
            }
            catch(Exception e)
            {
                 out.println("Non trovo niente"+e);
            }
    %>
    </table>
    </form>
    </body>
    </html>
    Mi creo una nuova dropdown e ok , ma come faccio a popolarla(da db) in base alla select ? Ti ringrazio anticipatamente(anche se mi reindirizzerai a qualcosa di simile va bene)

    Avevo pensato anche a una query che facesse la DELETE FROM tutte_le_tab_database WHERE campo="quello selezionato" , ma non c'è soluzione

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318

    Moderazione

    Non riesumare discussioni sepolte da 5 anni per iniziare a parlare di un problema completamente differente (in comune ha solo l'uso delle dropdown list!). Era sufficiente aprire una nuova discussione.

    Ho diviso la discussione, creandone una nuova e ridando pace al defunto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5

    Re: Moderazione

    Originariamente inviato da LeleFT
    Non riesumare discussioni sepolte da 5 anni per iniziare a parlare di un problema completamente differente (in comune ha solo l'uso delle dropdown list!). Era sufficiente aprire una nuova discussione.

    Ho diviso la discussione, credndone una nuova e ridando pace al defunto.


    Ciao.
    Chiedo scusa volevo creare una nuova discussione ma ero terrorizzato dall'idea di una risposta:

    "Se usavi il tasto cerca vedevi questa discussione"


  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318

    Re: Re: Moderazione

    Originariamente inviato da Matteo901p
    Chiedo scusa volevo creare una nuova discussione ma ero terrorizzato dall'idea di una risposta:

    "Se usavi il tasto cerca vedevi questa discussione"

    Quel tipo di risposta la si ottiene, generalmente, quando un determinato argomento e quindi un determinato problema è già stato affrontato e risolto (magari molte volte)... il tuo problema, però, è diverso da quello del post in cui ti sei attaccato.

    Comunque, niente di grave... la discussione può tranquillamente proseguire qui.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Tieni questo è un esempio fatto al volo:
    codice:
    <%@ page language="java"%>
    <%@page import="java.sql.*,java.util.*"%>
    
    <script language="javascript">
    	//FARE ONSELECT
    	function onchangeFunction() {
    		var form = document.getElementById("form");
    		form.action = "select-example.jsp";
    		form.submit();
    	}
    </script>
    </head>
    <body>
    	<h1>
    		cancella libro 
    
    	</h1>
    	<form id="form" name="frm" method="post" action="Aggiungi.jsp">
    		<table>
    			<%
    				String submitSelection = request.getParameter("sel");
    				
    				try
    				{// connessione al db per selezione genere!
    					Connection con = null;
    					ResultSet rst = null;
    					//Statement stmt=null;
    					Class.forName("com.mysql.jdbc.Driver").newInstance();
    					con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jestin", "root", "psw");
    					Statement statement = con.createStatement();
    					rst = statement.executeQuery("Show tables ");
    			%>
    
    
    			<td>
    			<tr>
    				Tipologia:
    				<select id="sel" name="sel" onchange="onchangeFunction();"><option
    						value=""><---Select---></option>
    
    					<%
    						while (rst.next())
    							{
    								String tipo = rst.getString(1);
    								if (tipo.equals(submitSelection))
    								{
    					%>
    					<option value="<%=tipo%>"
    						selected="selected"><%=tipo%>
    					</option>
    					<%
    								}
    								else
    								{
    					%>
    						<option value="<%=tipo%>" ><%=tipo%> </option>
    					<%
    								}
    							}
    							rst.close();
    							statement.close();
    					%>
    				</select>
    				
    
    				</td>
    				
    				<% 
    				if(submitSelection != null){ %>
    				<td>
    					Libro :
    					<select id="selLibro" name="selLibro" ><option
    						value=""><---Libro---></option>
    					<%
    					    statement = con.createStatement();
    						rst = statement.executeQuery("SELECT * FROM "+submitSelection);
    					%>
    					<%
    						while (rst.next())
    							{
    								String tipo = rst.getString(1);
    				
    					%>
    						<option value="<%=tipo%>" ><%=tipo%> </option>
    					<%
    							}
    							rst.close();
    							statement.close();
    					%>
    				</select>
    				</td>
    				<%} %>
    			</tr>
    
    
    			<%
    				//Stampa errore
    				}
    				catch (Exception e)
    				{
    					out.println("Non trovo niente" + e);
    				}
    			%>
    		</table>
    	</form>
    </body>
    </html>

  8. #8
    Originariamente inviato da francesco.muia
    Tieni questo è un esempio fatto al volo:
    codice:
    <%@ page language="java"%>
    <%@page import="java.sql.*,java.util.*"%>
    
    <script language="javascript">
    	//FARE ONSELECT
    	function onchangeFunction() {
    		var form = document.getElementById("form");
    		form.action = "select-example.jsp";
    		form.submit();
    	}
    </script>
    </head>
    <body>
    	<h1>
    		cancella libro 
    
    	</h1>
    	<form id="form" name="frm" method="post" action="Aggiungi.jsp">
    		<table>
    			<%
    				String submitSelection = request.getParameter("sel");
    				
    				try
    				{// connessione al db per selezione genere!
    					Connection con = null;
    					ResultSet rst = null;
    					//Statement stmt=null;
    					Class.forName("com.mysql.jdbc.Driver").newInstance();
    					con = DriverManager.getConnection("jdbc:mysql://localhost:3306/jestin", "root", "psw");
    					Statement statement = con.createStatement();
    					rst = statement.executeQuery("Show tables ");
    			%>
    
    
    			<td>
    			<tr>
    				Tipologia:
    				<select id="sel" name="sel" onchange="onchangeFunction();"><option
    						value=""><---Select---></option>
    
    					<%
    						while (rst.next())
    							{
    								String tipo = rst.getString(1);
    								if (tipo.equals(submitSelection))
    								{
    					%>
    					<option value="<%=tipo%>"
    						selected="selected"><%=tipo%>
    					</option>
    					<%
    								}
    								else
    								{
    					%>
    						<option value="<%=tipo%>" ><%=tipo%> </option>
    					<%
    								}
    							}
    							rst.close();
    							statement.close();
    					%>
    				</select>
    				
    
    				</td>
    				
    				<% 
    				if(submitSelection != null){ %>
    				<td>
    					Libro :
    					<select id="selLibro" name="selLibro" ><option
    						value=""><---Libro---></option>
    					<%
    					    statement = con.createStatement();
    						rst = statement.executeQuery("SELECT * FROM "+submitSelection);
    					%>
    					<%
    						while (rst.next())
    							{
    								String tipo = rst.getString(1);
    				
    					%>
    						<option value="<%=tipo%>" ><%=tipo%> </option>
    					<%
    							}
    							rst.close();
    							statement.close();
    					%>
    				</select>
    				</td>
    				<%} %>
    			</tr>
    
    
    			<%
    				//Stampa errore
    				}
    				catch (Exception e)
    				{
    					out.println("Non trovo niente" + e);
    				}
    			%>
    		</table>
    	</form>
    </body>
    </html>
    Con le opportune modifiche, FINALMENTE è fatta .. Non so come ringraziarti ! Una birra immaginaria pagata

    Ps: Piccola accortezza che mi è venuta in mente provando il tuo codice.. Se volessi avere 3 dropdownlist (sempre in cascata) , come/dove potrei modificare il tuo codice?8che ripeto, funziona benissimo?)

    Dovrei solamente aggiungere una nuova form/select come hai fatto tu che riprende da quella precedente giusto?

  9. #9
    Bè ti basta mettere un ulteriore funzione sull'onchage della select -> effettuare il submit e recuperati il nuovo parametro che ti arriva con request.getParameter("<nome della select>").
    A questo punto fai di nuovo le stesse cose ciòè se il nuovo valore è presente (!=null) farai la query e popolarai di conseguenza.

  10. #10
    Originariamente inviato da francesco.muia
    Bè ti basta mettere un ulteriore funzione sull'onchage della select -> effettuare il submit e recuperati il nuovo parametro che ti arriva con request.getParameter("<nome della select>").
    A questo punto fai di nuovo le stesse cose ciòè se il nuovo valore è presente (!=null) farai la query e popolarai di conseguenza.
    Volevo esser sicuro Sei stato iperdisponibile e gentile

    Update: Credo di essermi impappinato(o forse non ho capito bene come pensavo)..
    L'ultima query è come se non la vedesse (ma non CREDO sia quello il problema) .. o sto sbagliando l'impostazione di qualcosa?

    codice:
    <%@ page language="java"%>
    <%@page import="java.sql.*,java.util.*"%>
    
    <script language="javascript">
    	//FARE ONSELECT
    	function onchangeFunction() {
    		var form = document.getElementById("form");
    		form.action = "ProvaDropDownDinamico.jsp";
    		form.submit();
    	}
    </script>
    </head>
    <body>
    	<h1>
    		cancella libro 
    
    	</h1>
    	<form id="form" name="frm" method="post" action="Aggiungi.jsp">
    		<table>
    			<%
    				String submitSelection = request.getParameter("sel");
    				String submitSelection2 = request.getParameter("selAutore");
    				
    				
    				try
    				{// connessione al db per selezione genere!
    					Connection con = null;
    					ResultSet rst = null;
    					//Statement stmt=null;
    					Class.forName("com.mysql.jdbc.Driver").newInstance();
    					con = DriverManager.getConnection("jdbc:mysql://localhost:3306/raccolta", "root", "pass");
    					Statement statement = con.createStatement();
    					rst = statement.executeQuery("Show tables ");
    			%>
    
    
    			<td>
    			<tr>
    				Tipologia:
    				<select id="sel" name="sel" onchange="onchangeFunction();"><option
    						value=""><---Select---></option>
    
    					<%
    						while (rst.next())
    							{
    								String tipo = rst.getString(1);
    								if (tipo.equals(submitSelection))
    								{
    					%>
    					<option value="<%=tipo%>"
    						selected="selected"><%=tipo%>
    					</option>
    					<%
    								}
    								else
    								{
    					%>
    						<option value="<%=tipo%>" ><%=tipo%> </option>
    					<%
    								}
    							}
    							rst.close();
    							statement.close();
    					%>
    				</select>
    				
    
    				</td>
    				
    				<% 
    				if(submitSelection != null){ %>
    				<td>
    					Autore :
    					<select id="selAutore" name="selAutore" ><option
    						value=""><---SELECT---></option>
    					<%
    					    statement = con.createStatement();
    						rst = statement.executeQuery("SELECT AUTORE FROM "+submitSelection);
    					%>
    					<%
    						while (rst.next())
    							{
    								String tipo = rst.getString(1);
    								
    				
    					%>
    						<option value="<%=tipo%>" ><%=tipo%> </option>
    					<%
    							}
    							rst.close();
    							statement.close();
    					%>
    				</select>
    				
    				
    				</td>
    				<%
    				if(submitSelection2 != null){ %>
    				<td>
    					Libro:
    					<select id="selLibro" name="selLibro" ><option
    						value=""><---SELECT---></option>
    					<%
    					    statement = con.createStatement();
    						rst = statement.executeQuery("SELECT LIBRO FROM "+submitSelection+"WHERE autore="+submitSelection2);
    					%>
    					<%
    						while (rst.next())
    							{
    								String tipo = rst.getString(1);		
    					%>
    						<option value="<%=tipo%>" ><%=tipo%> </option>
    					<%
    							}
    							rst.close();
    							statement.close();
    					%>
    				</select>
    				
    				<%} %>
    			</tr>
    
    
    			<%
    				//Stampa errore
    				}}
    				catch (Exception e)
    				{
    					out.println("Non trovo niente" + e);
    				}
    			%>
    		</table>
    	</form>
    </body>
    </html>

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.