Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860

    problema logico su checkbox e asp

    salve ragazzi,

    io creo una pagina in cui prendo e visualizzo tutti i record che ho scelto di cestinare, quindi quelli il cui campo cesttino è "si".
    la mia visyalizzazione sarà così formata:

    checkbox - data/ora - oggetto messaggio

    ora il mio problema è: io do un nome al checkbox ma come faccio a sapere a priori quanti messaggi ho cestinato e quindi quanti checkbox visualizzarò x poi così dargli un nome?
    Idem quando devo recuperare il valore di ogni singolo checkbox via querystring

    grazie
    Linux Inside

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    ragazzi, forse mi sto perdendo in un bicchiere d'acqua, ma x la cancellazione o il ripristino dei messaggi, record del db come potrei fare?

    se uso i checkbox poi nella pagina asp di cancellarzione/ripristino come faccia a portare di là e fare una reqest di crichiamo di un numero di valori che dipende dal numero di messaggi del cestino e per lo più dall'operazione in questione quindi ripristino con update o cancellazione e delete..?

    ci sto perdendo prorprio la trabisonda...

    Grazie
    Linux Inside

  3. #3
    io fo così

    ogni checkbox si chiama IDXXX dove XXX è l'id del record
    e assume valore 1 quando selezionata

    c'è una checkbox per record

    ---

    poi c'è un campo HIDDEN in cui metto TUTTI gli id dei record stampati nella pagina divisi da un carattere speciale: es: "1|4|5|6"

    ---

    la pagina viene spedita e per esempio gli arriva

    page.asp?ids=1|4|5|6&id1=1&id6=1

    e usi questo codice

    codice:
    dim tmparr
    tmparr = split(request.querystring("ids"),"|")
    
    for ii=0 to ubound(tmparr) - 1
    if request.querystring("id" & tmparr(ii)) = 1 then
    'codice per eliminare il record con id = tmparr(ii)
    end if
    next
    sistema semplice e comodo
    senza javascript
    ovviamente consigliabile un controllo dei dati in entrata (da querystring)

    ps: forse il codice contiene errori, l'ho scritto a mano ora

    (se non ti è chiaro ti faccio una bella paginetta di esempio funzionante )
    san imente saluta

    * http://simonecingano.it *

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    grazie adotterò sicuramente questo
    Linux Inside

  5. #5
    è bello essere capiti al volo

    buon lavoro, se serve una mano sono qui
    san imente saluta

    * http://simonecingano.it *

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    ok ciao imente,

    parliamo un po' di questa soluzione, sto x incominciare a realizzarla in maniera concreta e quindi inizio a trovare gli intoppi.
    Seguendo il tuo ragionamento io pensavo di fare così:

    nel do while not EOF or not BOF della tabella, che utilizzo x visualizzare i record in questione metterei questo:

    NomeCheck="Campo" & myrs("id")

    poi <imput type="checkbox" name="<&=Nomecheck&>">

    in questa maniera ogni checkbox creato assume un valore al nome pari a campo1, campo2, campox.
    E fino a qui ci siamo con la denominazione dei checkbox.
    poi sempre dentro al do while mi creo la variabile che mi riporta il valore dell'id analizzato in quel momento + tutti quelli precedenti e futuri quindi

    Idremember=myrs("id") & "."

    Così facendo otterrò alla fine un valore del tipo (1.3.7.8.33.55.) non è il massimo x via del . finale ma si risolve.

    Immagino quindi che il tuo discorso sulla variabile da portarsi dietro

    codice:
    page.asp?ids=1|4|5|6&id1=1&id6=1
    sia ricollegabile a questa che è poi la pagina a cui punta il form

    <form method="post" action="esegui.asp?Elencoid=<%=Idremember%>">

    anche se ho qualche dubbio perchè la variabile Idremember si genera e compone dopo questa istruzione quindi non sono sicuro che il form la possa poi portare di là quindi nella pagina esegui.asp con i valori che servono...

    infine sempre seguendo il tuo ragionamento io dovrei poi fare in esegui.asp

    codice:
    scindo la stringa elencoid riportandola a valori singoli escludendo l'ultimo .
    
    if (request(pulsante)="ripristino" then
      ripristino i messaggi
    else
      elimino i messaggi
    end if
    in breve se il tasto del form ha valore ripristino allora farò il codice che ripristina tutti i messaggi riportandoli alla sezione o di posta ricevuta o inviata e visibili all'utente altrimenti li elimino dal db.

    quello che mi rimane un po' latente è la select nel senso che io x ripristinare cambio un valore di tipo stringa, un campo del db da "NO" xcui è nel cestino il record a "SI" e allora l'utente lo vede.
    ma come gli dico di prendere record via record quelli della stringa

    codice:
    dim tmparr
    tmparr = split(request.querystring("ids"),"|")
    
    for ii=0 to ubound(tmparr) - 1
    if request.querystring("id" & tmparr(ii)) = 1 then
    'codice per eliminare il record con id = tmparr(ii)
    end if
    next
    creod id essermi perso in questo codice....

    teoricamente dovrebbe essere questo il tuo ragionamento almeno fino a quando porto di là i record e i valori dei campi x poi eseguire o il ripristino o l'eliminazione giusto?

    Grazie ciao
    Linux Inside

  7. #7
    prima di tutto a questo

    <form method="post" action="esegui.asp?Elencoid=<%=Idremember%>">
    </form>

    sostituisci questo

    <form method="post" action="esegui.asp">
    <input type="hidden" name="Elencoid" id="Elencoid" value="<%=Idremember%>" />
    </form>

    così metti l'hidden dopo il loop e risolvi il tuo primo dubbio.

    ---

    ora devi spiegarmi bene una cosa
    cosa fai ai record che l'utente ha selezionato?
    modifichi un campo di quel record?
    san imente saluta

    * http://simonecingano.it *

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    dipende...

    se lui preme sul pulsante <input type="submit" name="rirpistino" value="ripristino"> allora si aggiorno un campo del db riportando il suo valore da (no) a (si) questo gli permetterà di visualizzarli nuovamente nella sezione di competenza quindi ricevuti o inviati

    altrimenti se l'utente preme sul pulsante <input type="submit" name="cacellazione" value="cancellazione"> dico addio al record

    quindi è ovvio che i vari checkbox rientrano all'interno di un form che appunto terminerà con questi due pulsanti.
    in ogni caso pensavo che a prescindere da quale di questi pulsanti lui premesse entrambi mandassero ad una medesima pagina quindi esegui.asp e poi lì a seconda di quale pulsante è stato premuto e quindi di quale valore si viene a recuperare si esegue un update del sincolo campo di ogni record o l'eliminazione totale del record se è il caso...


    Linux Inside

  9. #9
    esegui.asp
    codice:
    dim tmparr, SQL, sqlWHERE
    tmparr = split(request("ids"),".")
    
    sqlWHERE = ""
    
    for ii=0 to ubound(tmparr) - 1
    if request.querystring("id" & tmparr(ii)) = 1 then
    sqlWHERE = sqlWHERE & "id = " & tmparr(ii) & " OR"
    end if
    next
    
    if sqlWHERE <> "" then
    sqlWHERE = left(sqlWHERE,len(sqlWHERE)-3)
    
    if (request(pulsante)="ripristino" then
      SQL = "UPDATE ......... WHERE " & sqlWHERE 
    else
      SQL = "DELETE ......... WHERE " & sqlWHERE 
    end if
    
    response.write SQL
    
    else
    
    response.write "nessun record selezionato"
    
    end if
    controlla che stampi delle query corrette
    poi cambi il response.write con un conn.execute(SQL)
    san imente saluta

    * http://simonecingano.it *

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    860
    ti ringrazio molto, ora come ora l'ho provato così molto rapidamente ma mi pare che abbiamo tralasciato qualcosa, si certo la lista di id arriva e via dicendo ma domani con più calma controllo e ci lavoro e vedo se la mia è una questione di stanchezza o di incomprensione mia verso il tuo codice, possibilissimo, perchè c'è qualcosa che non mi ronda al momento, ma non saprei dire che è...

    grazie
    Linux Inside

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.