Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353

    JSP - Filtraggio e pagina dettaglio

    Avendo questa pagina
    codice:
    <%@ page language="java" import="java.sql.*" contentType="text/html;charset=KSC5601" %>
    <h1>Esempio di scrip in JSP che si connette ad un database MySQL</h1>
    <%
      String host = "127.0.0.1";
      String DB = "db_name";
      String user = "root";
      String password = "";
      String query = "SELECT * FROM username where id= ?? ";
      try {
         Class.forName("com.mysql.jdbc.Driver").newInstance();
         String url="jdbc:mysql://" + host + "/" + DB + "?user=" + user + "&password=" + password;
    
         Connection Conn=DriverManager.getConnection(url);
         Statement stmt = Conn.createStatement();
         ResultSet rs = stmt.executeQuery(query);
     
         out.println("<table>");
         while (rs.next())  {
             out.println("<tr>");
             out.println("<td><input type=\"text\" value=\"" + rs.getString(1) + "\" readonly=\"readonly\"/></td>");
             out.println("<td><input type=\"text\" value=\"" + rs.getString(2) + "\" readonly=\"readonly\"/></td>");
             out.println("<td><input type=\"text\" value=\"" + rs.getString(3) + "\" readonly=\"readonly\"/></td>");
             out.println("</tr>");
    
          }
          out.println("</table>");
          stmt.close();
          Conn.close();
       } catch (SQLException e) {
          out.println("  ERRORE ");
          out.println("
    ");
          out.println("  ERRORE - Codice : " + e.getErrorCode());
          out.println("
    ");
          out.println("  ERRORE - Messaggio : " + e.getMessage());
          out.println("
    ");
       }   
    %>

    vorrei fare un filtraggio e mettere un form dove digitando un nome,anche parziare esegua una ricerca su un campo.Si utilizza like? Cosa si mette dove ci sono i "??" ?

    Se si dovesse aprire una pagina di dettaglio di un prodotto per ogni record come si può passare l' id ad un altra pagina?
    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    puoi usare LIKE e le wildcards (trattasi di problema MySQL)
    Se poi vuoi anche utilizzare un qualche modo "carino" di mostrare i risultati parziali, puoi prevedere l'uso di ajax (javascript) per l'esecuzione in background della pagina di ricerca e quindi visualizzare i risultati man mano che l'utente digita parte della chiave di ricerca.

    Per quanto riguarda l'avere una pagina per "prodotto" (o id, qualsiasi cosa vada a rappresentare)... in questo caso, un modo pratico per passare l'id è quello di mandarlo in query-string con l'indirizzo del link alla pagina (generica) che effettua il caricamento dei prodotti:
    codice:
    <%
    while (rs.next())  { %>
    Dettaglio <% out.print(rs.getTuoCampoDescrizioneProdotto());%>
    
    <% } // chiude while %>
    Dove ovviamente getTuoCampoId e getTuoCampoDescrizione andranno sostituiti con gli appropriati (suppongo getInt(1) per l'id e l'appropriato getString(n) per la descrizione)

    Nella "landing page", in request.getParameter("id") troverai il tuo id passato in argomento. Fondamentale verificarne a questo punto l'integrità (onde evitare spiacevoli tentativi di hacking) ed eseguire quindi la select sul prodotto selezionato.

    Buon lavoro.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    grazie mille,domani provo e faccio sapere
    grazie davvero!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    ad esempio
    codice:
    <input name="n_vino" type="text" id="n_vino" value="<%=nomev%>" readonly="readonly" />
    come si può creare una "sezione ripetuta",nel senso che si ripeta per tutti i record del recordset?

    Inoltre se si volesse aggiungere un campo "+" da aprire l' altra pagina del recordset con il dettaglio?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    avendo
    codice:
    ResultSet rs = stmt.executeQuery(query);
     
         out.println("<table>");
         while (rs.next())  {
             
             out.println("<tr>");
             out.println("<td><input type=\"text\" value=\"" + rs.getString(1) + "\" readonly=\"readonly\"/></td>");
             out.println("<td><input type=\"text\" value=\"" + rs.getString(2) + "\" readonly=\"readonly\"/></td>");
             out.println("<td><input type=\"text\" value=\"" + rs.getString(3) + "\" readonly=\"readonly\"/></td>");
             out.println("<td><input type=\"text\" value=\"" + rs.getString(4) + "\" readonly=\"readonly\"/></td>");
             out.println("<td><input type=\"text\" value=\"" + rs.getString(5) + "\" readonly=\"readonly\"/></td>");
             
             //out.println("<td> "+"<A HREF=\"ris.jsp\ " +   "dettagli" + "</td>");
             
             int u=rs.getInt(2);
             
             
             out.println("<td><A HREF=\"ris.jsp?userid=u\">dettagli</A>");  <-----E' CORRETTO??
    
             out.println("</tr>");
    
          }

    ,il campo è un intero
    dall' altra pagina


    String userin=request.getParameter("userid");


    userin=userin.getInt();


    però non prende il valore dall' altra pagina,come mai?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    allora, secondo me conviene che per iniziare leggi una guida di programmazione JSP (quella che trovi qui su html.it è più che valida ed in italiano se non ti va di fare un po' di lettura in madrelingua programmazione) perché sono tutte domande tipiche di cui prova a programmare senza un minimo di conoscenza di base.

    In query-string arriva tutto in formato testuale (String per intenderci): sei tu che dovrai discernere che cosa è chi e ,con gli appositi classi-wrapper e i metodi forniti a corredo, filtrare, assegnare e manipolare agevolmente i dati passati.

    Integer.parseInt ad esempio prova a "trasformare" la rappresentazione String di un numero nel corrispondente oggetto Integer (ed eventualmente in int).
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    il dubbio era su "ris.jsp?userid=u"

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Al posto di "u" ci deve andare l'id che poi vuoi andare a recuperare nell'altra pagina
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    353
    adesso prende il valore,però forse serve un array?
    codice:
    out.println("<td><input type=\"text\" value=\"" + rs.getString(5) + "\" readonly=\"readonly\"/></td>");
             ....
    .............
             //out.println("<td> "+"<A HREF=\"ris.jsp\ " +   "dettagli" + "</td>");
             ArrayList ar=new ArrayList();
             
             int u=rs.getInt(2);
            
             int userin=u;
             
             
             out.println("<td><A HREF=\"ris.jsp?userin\">dettagli</A>");
    
             out.println("</tr>");
    
          }
    per avere la corrispondenza di tutti gli id,altrimenti tiene solo il primo

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non ci siamo ancora:
    un URL utile" sarà qualcosa del genere:
    quindi:
    codice:
    [...]
    int u=rs.getInt(2);
    out.println("<td><a href=\"ris.jsp?userin="+u+"\">dettagli</a>");
    [...]
    L'altro discorso dell'array non l'ho capito. In generale in query string (quindi in GET) si passano quanti parametri vuoi (con delle limitazioni imposte solo dalla lunghezza massima di una query-string), ma normalmente questi parametri sono tutti diversi. Se devi passare un array di parametri nominalmente uguali allora conviene rivedere la struttura (form e POST). Se sembra arabo, vale sempre il discorso fatto sopra: se mancano le basi di html e gestione di form, conviene dare una letta ad una guida piuttosto che qualcuno qui sul forum riscriva la guida a tuo uso e consumo.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.