Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Select dinamiche (script Teorema55)

    Il titolo dovrebbe essere già esplicito...

    ho scaricato lo script di cui al titolo e funziona regolarmente; adesso sto cercando di personalizzarlo e cioè riempire la prima select secondo la sessione utente che si crea al login.

    Funziona tutto bene o quasi, infatti l'unica incongruità è che va in errore l'estrazione che, tramite una query, popola la seconda select; non è un errore dello script ma proprio un errore di estrazione, nel senso che la select non si popola correttamente ma con dati di altri utenti, esempio:

    -paolo, utente del veneto, si autentica, viene spedito al form e trova nella prima select veneto;
    -seleziona veneto e la seconda select, invece di estrarre le città del veneto, estrae le città del lazio... questo è il codice che ho personalizzato:
    codice:
     <select size="1" name="reg" style="font-size: 8 pt; font-family: Verdana" onChange="submit(this);">
                    <option value="0" selected>------TUTTI------</option>
    <%             
    
    'FACCIO POPOLARE LA PRIMA SELECT  
    
    if Session("user") = true then
    sql = "SELECT * FROM reg INNER JOIN utenti ON utenti.id = reg.id WHERE utenti.id = "& session("user") &" ORDER BY reg.ID asc"         
    else
    sql = "SELECT * FROM reg ORDER BY id asc" 
    end if
    
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, cn, 3, 3
    
    Do While Not rs.EOF
    strVAR = rs("ID")
    
    %>
    
    <option	value="<%=RS.Fields.Item("id").Value%>"
    <% 	if reg = cstr(strVar) then response.write("selected") end if%>>
    <%= RS.Fields.Item("reg").Value%></option>	
    				
    
    <%
    rs.MoveNext
    Loop
    rs.Close
    set rs = Nothing
    %>
    
                  </select>

  2. #2
    sql = "SELECT * FROM reg INNER JOIN utenti ON utenti.id = reg.id WHERE utenti.id = "& session("user") &" ORDER BY reg.ID asc"
    Mi spieghi questa query per favore?
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  3. #3
    Originariamente inviato da teorema55
    Mi spieghi questa query per favore?
    grazie per aver risposto... dunque ho creato un db nel quale ho inserito una tabella chiamata utenti nella quale ho inserito un campo chiamato utenti_id e la regione_id.
    In questi campi ho fatto un abbinamento del genere:

    utente_id = 24 (paolo)
    regione_id = 4 (veneto)

    vorrei estrarre con la query (sicuramente è sbagliata! scusa!), quando si logga "paolo", quello che è attinente al veneto.

    Mi spiego? :master:

  4. #4
    Sì, avevo immaginato.

    Per fare questo devi inserire nella tabella utenti un campo ID_regione in cui l'ID sia uguale al campo ID della regione cui l'utente appartiene, nella tabella regioni.

    La query sarà

    bla bla..... utenti inner join regioni on utenti.ID_regione = regioni.ID .....

    Controlla che per ogni utente l'ID_regione corrisponda esattamente e quello della sua regione, dovrebbe funzionare.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  5. #5
    Devo staccare, guardo stasera per vedere come sei messo, fammi sapere.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    Garzie Teo, il campo id_regione esiste già nella tabella utenti ed è uguale all'id_regione della tabella regioni... non capisco perchè non funziona...

  7. #7
    Enrique..........ricontrolla la query perchè penso che non sia corretta: infatti, se

    utenti.id = "& session("user")
    significa che l'utente ha un suo identificativo univoco (ID). Ora non può essere che la tua inner join sia relazionata

    ON utenti.id = reg.id
    altrimenti tutti gli utenti di una stessa regione dovrebbero avere lo stesso ID. Dovrai fare

    ON utenti.id_regione = reg.id
    dove id_regione è il campo della tabella utenti dove è memorizzato l'ID della regione cui l'utente appartiene.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  8. #8
    Scusa se in un post precedente ho scritto

    utenti inner join regioni
    naturalmente è

    regioni inner join utenti
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  9. #9
    Grazie Teo, ma mi sono spiegato male... il problema non è la query sulla prima select, ma l'errato popolamento della seconda select.

    Nel tuo script selezionado un valore dalla prima select automaticamente ottengo i valori corrispondenti nella seconda select; nella modifica dello script originale mi sono limitato a prevedere che la prima select si popolasse secondo la variabile session utente in modo tale che l'utente avesse la possibilità di "vedere" soltanto quello per cui è autorizzato.

    Questo funziona regolarmente, cioè l'utente "paolo" (autorizzato ed autenticato per il lazio) una volta "entrato" vede nella prima select soltanto "lazio".

    Quando seleziona dalla prima select valore "lazio", la seconda select si popola,invece dei capoluoghi di provincia del lazio, di quelli del veneto e mi sono accorto che nella barra degli indirizzi passa l'id_reg sbagliato, nel dbase l'id_reg del lazio è "1", ecco cosa vedo nella barra degli indirizzi:
    codice:
    select.asp?id_reg=2&capoluogo=0
    Il problema qual'è? La prima query che "passa" l'id_reg sbagliato o la seconda query con cui si popola la seconda select?:
    codice:
    sql1 = "select distinct cp.id_creg as codice, cp.reg as provincia from cp inner join cp on cp.id_reg = cp.id WHERE cp.id_reg = "&reg&" "
    che però nel caso dell'amministratore della pagina, che vede tutte le regioni, funziona regolarmente?

  10. #10
    Ok questo è risolto!
    Il problema era su questa parte di codice:
    codice:
    Do While Not rs.EOF
    strVAR = rs("reg_id")
    %>
    
    <option	value="<%=RS.Fields.Item("reg_id").Value%>"
    <% 	if uoat = cstr(strVar) then response.write("selected") end if%>>
    <%= RS.Fields.Item("reg").Value%></option>
    dove ho sostituito l'originale rs("id") con rs("reg_id")... bene...

    Passo successivo:
    Nel tuo script quando fai popolare la seconda select hai inserito la condizione:
    codice:
    'FACCIO POPOLARE LA SECONDA SELECT 
    'SE IL VALORE DI VARIABILE E' DIVERSO DA TUTTI
    if reg > 0  Then
    
    sql1 ....
    
    'ALTRIMENTI SE IL VALORE DI VARIABILE E' TUTTI
    'MOSTRA TUTTI I CAPOLUOGHI DI PROVINCIA
    else 
    
    sql2 ....
    dovrei quando la variabile è tutti far vedere all'utente soltanto i capoluoghi di quella regone al quale è autorizzato ed autenticato... ho scritto una query sulla falsa riga di quella con cui popolo la prima select, ma come al solito, restituisce capoluoghi errati...

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.