Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    25

    [jsp] assegnare un valore automaticamente alla URL

    CIao a tutti
    ho una url www.miosito.it/DisplayQuestion?qId=2
    vorrei cambiare automaticamente il valore "2" con valori id presi da un database.
    Come posso fare?
    ho provato a creare una variabile e ad inserirla al posto di 2 ma mi dava errore...
    sono un nubbone qualche suggerimento??
    grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Non è che si capisca molto, né di cosa vuoi fare, né di quando vuoi farlo, né, tantomeno, di come hai provato a farlo (non hai postato nemmeno una riga do codice).

    Cerca di essere più preciso, spiegare meglio il problema a posta il codice che hai provato a scrivere, così almeno abbiamo un'idea di cosa hai per le mani.


    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

  3. #3
    Utente di HTML.it L'avatar di Renny
    Registrato dal
    Nov 2012
    Messaggi
    16
    Avresti dovuto postare il tuo codice e spiegare meglio il tuo problema (come ha già detto LeleFT), ma proverò a darti una risposta.
    Se hai una variabile chiamata Id contente l'id che ti serve, il link sarà così Per maggiori informazioni puoi leggere qui http://docs.oracle.com/cd/E23507_01/Platform.20073/ATGBCCAdminGuide/html/s0810settingurlparameterstodynamicval01.html

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    25
    ciao grazie mille esatto @renny il problema è proprio questo !! ho trovato molto utili le guide ma il mio problema è il seguente

    tramite la mia servlet inserisco nel db un topic,

    codice:
    Connection connection = null;
                PreparedStatement preparedStatement = null;
                String insertQuestionSql = "INSERT INTO question "
                        + "(text,insert_date,is_active,asker_id,up_vote,down_vote)"
                           +" VALUES (?,?,?,?,?,? )";
                
                try {
                    
                        //long currentTime = System.currentTimeMillis();
                                
                        connection = DBConnectionUtil.getConnection();    
                        
                        preparedStatement = connection.prepareStatement(insertQuestionSql);
                        
                        preparedStatement.setString(1, text);
                        preparedStatement.setTimestamp(2, new Timestamp(new Date().getTime()));
                        preparedStatement.setBoolean(3, true);
                        preparedStatement.setLong(4, userid);
                        preparedStatement.setInt(5,0);
                        preparedStatement.setInt(6, 0);    
                        connection.setAutoCommit(true);
                        preparedStatement.executeUpdate();
                        
                        
                        response.sendRedirect("DisplayQuestion?qId=$[userid]");

    alla fine faccio un redirect verso la pagina Displayquestion, dove se voglio che si veda l'ultimo topic inserito, devo inserire nella url l'id dell'ultimo topic inserito presa dal database , ad esempio:

    codice:
    response.sendRedirect("DisplayQuestion?qId=16");

    come posso fare? come posso fare inserire nella url automaticamente ll'id del topic appena inserito?
    Ultima modifica di LeleFT; 30-12-2014 a 14:08 Motivo: Aggiunti i tag CODE

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Semplicemente con una concatenazione:


    codice:
    response.sendRedirect("DisplayQuestion?qId=" + userid);

    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

  6. #6
    Utente di HTML.it L'avatar di Renny
    Registrato dal
    Nov 2012
    Messaggi
    16
    Per prima cosa fai una query dove vai a selezionare l'ultimo id inserito, cioè qualcosa del genere:
    codice:
    //Salto la connessione al database, ma tu devi farla comunque
    PreparedStatement pstmt = connection.prepareStatement("SELECT id FROM question LIMIT 1 ORDER BY id DESC");
    ResultSet rs = pstmt.executeQuery();
    if(rs.next()){
    int id = rs.getInt("id"); // dove "id" è la colonna del database contenente gli id
    }
    E dopo fatto questo fai un redirect alla pagina, ho studiato poco le servlet quindi non ricordo bene come fare, ma credo che come ti abbia suggerito LeleFT sia corretto. Ovvero:
    codice:
    response.sendRedirect("DisplayQuestion?qId="+ id);

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    25
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Semplicemente con una concatenazione:


    codice:
    response.sendRedirect("DisplayQuestion?qId=" + userid);

    Ciao.

    ottimo!!!! grazie
    il problema è che non devo ricavare il numero da "userid" ma dal valore "id" che viene assegnato automaticamente ogni volta che inserisco un nuovo topic nel db... che faccio secondo te?
    faccio

    int id = select id from question where user_id = userid

    e poi inserisco tale valore nella url secondo il metodo che mi hai descritto tu in precedenza?
    per cui

    "DisplayQuestion?qId="+ id

    grazie ancora

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ah... io non ho guardato la semantica.
    Beh, per ottenere l'ID devi effettuare, appunto, una seconda query sul DB, esattamente come hai fatto.


    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

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    25
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Ah... io non ho guardato la semantica.
    Beh, per ottenere l'ID devi effettuare, appunto, una seconda query sul DB, esattamente come hai fatto.


    Ciao.
    grazie ci sto impazzendo perchè non so se devo aprire una nuova conection... mi potresti fare un esempio su come fare la query ?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    No, non devi aprire una seconda connection.
    Semplicemente, ottieni una nuova PreparedStatement, ci passi il parametro della WHERE e la esegui.


    codice:
    String redirectUrl = "...";   // Pagina di errore, in caso qualcosa vada storto
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    int id = -1;
    try {
       pstmt = connection.prepareStatement("SELECT id FROM question WHERE user_id = ?");
       pstmt.setInt(1, userid);
    
       rs = pstmt.executeQuery();
       if ((rs != null) && rs.next()) {
          id = rs.getInt( 1 );
       }
    } catch (Exception e) {
       e.printStackTrace();
    } finally {
       if (rs != null) {
          try { rs.close(); } catch (Exception e) { }
       }
       if (pstmt != null) {
          try { pstmt.close(); } catch (Exception e) { }
       }
    
       // Solo se questa è l'ultima volta che fai query, prima di inviare la response al client
       if (connection != null) {
          try { connection.close(); } catch (Exception e) { }
       }
    }
    
    if (id >= 0) {
       redirectUrl = "DisplayQuestion?qId="+ id;
    }
    
    response.sendRedirect( redirectUrl );

    Ciao.
    Ultima modifica di LeleFT; 30-12-2014 a 17:47
    "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

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.