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

    selezionare/deselezionare campo checkbox

    Salve a tutti,

    avrei bisogno di una mano con un campo checkbox, premetto che non so molto di asp e database.
    In pratica, faccio effettuare delle prenotazioni online ad un evento, quando la prenotazione viene effettivamente confermata (di persona, pagando la quota alla segreteria dell'ente) bisognerebbe andare a mettere una spunta sulla conferma della prenotazione.
    Sono riuscita a fare mettere la spunta sulla checkbox e a fare scrivere la prenotazione sul database, ma non ho idea di come togliere la spunta dalla checkbox.

    Ho un campo si/no nel database (Access).
    Questo è il codice della pagina che contiene la checkbox

    codice:
    <form name="form2" method="post" action="admin-conferma-prenotazione.asp?id=<%= rs1("id") %>">
    <td><input id="id" name="id" type="hidden" value="<%= rs1("id") %>" />
    <input name="confermato" type="checkbox" value="<%= rs1 ("confermato") %>"<% If rs1("confermato")=true Then %> checked="checked" <% End If %> />
    <input name="conferma" type="submit" value="Conferma" class="submit2" /></td>
    </form>
    questo è il codice della pagina dove eseguo l'update nel database:

    codice:
    <% confermato=Request.Form("confermato") %> 
    <% id=Request.Form("id") %> 
    <% SQL="UPDATE prenotazioni SET confermato=true WHERE id="&id %> 
    <% conn.execute(SQL) %> 
    <% response.Redirect("admin-stato-prenotazioni-soci.asp") %>
    Mi sono resa conto che non riesco a togliere la spunta, una volta messa, per via di quel SET confermato=true nell'Update.
    Evidentemente non devo passare quel valore. Ho provato con
    SET confermato='"&confermato&"' e ottengo questo errore:

    Microsoft JET Database Engine error '80040e07'

    Tipi di dati non corrispondenti nell'espressione criterio.

    Ho provato allora con SET confermato="&confermato&" senza gli apici ma non succede proprio nulla, non viene messa la spunta sul database.

    Deve esserci qualche passaggio da fare di cui non ho idea.

    Ho passato la giornata a cercare sui forum, ma non ho trovato nulla e mi sono arresa U_U
    Ringrazio chiunque voglia darmi una mano. Spero di aver esposto il mio problema in modo comprensibile, sono un pò stanca..
    Grazie ancora
    ciao a tutti

  2. #2
    Il campo Si/no di access è una gran rottura, sempre meglio non usarlo perché:
    a. esiste solo in access
    b. restituisce valori diversi a seconda delle lingue di database e web server (true/false, vero/falso).

    Quindi fare i confronti risulta difficile.
    Se puoi taglia la testa al toro e cambia il campo in un intero (smallint) e usa 1/0 per vero/falso, oppure un campo testo lungo uno con una lettera V/F per vero/falso.
    In questo modo sarai sempre certa di quel che estrai e di come farci i confronti sopra.

    Nel tuo caso comunque per settare a false il campo dovrebbe essere sufficiente:

    codice:
    UPDATE prenotazioni SET confermato=false WHERE id=" & id
    oppure

    codice:
    UPDATE prenotazioni SET confermato=0 WHERE id=" & id
    xxx

  3. #3
    Ciao e grazie per la risposta

    il mio problema è che la spunta sulla checkbox dovrebbe poter essere messa e tolta a seconda delle esigenze della segreteria, sai tipo, la metti per errore su un campo sbagliato e salvi, allora devi toglierla...
    ho provato a cambiare il valore sia a 0 che false, ma succede che dove la spunta era già messa la tolgo, salvo, e poi non posso più rimetterla!
    Invece ho proprio bisogno di poter mettere o togliere quella spunta!
    Per i confronti, su altre pagine, true e false non mi stanno dando problemi...

    non ho capito perfettamente cosa mi suggerisci di fare mettendo un campo intero o un campo di testo lungo...
    non sarò io a gestire quelle prenotazioni e non ho idea di cosa scriveranno dentro un campo di testo O_o, in questo caso sì che temerei per i confronti!

    Comunque grazie ancora, spero di venirne a capo!
    Ciao

  4. #4
    'spetta, partiamo dal tuo problema, ovviamente devi mettere tu true/false a seconda del valore che ti serve!

    Nel form non mettere un value a caso nel checkbox, specificane uno tu. Poi il request.form ti ritornerà quel value solo se il checkbox è stato spuntato:

    codice:
    <input name="confermato" type="checkbox" value="confermato" <% If rs1("confermato")=true Then %> checked="checked" <% End If %> />
    e prima di aggiornare:

    codice:
    <% 
    If Trim(Request.Form("confermato") & "") = "confermato" Then
        SQL="UPDATE prenotazioni SET confermato=true WHERE id="&id 
    else
        SQL="UPDATE prenotazioni SET confermato=false WHERE id="&id 
    End If
    %>
    Riguardo l'utilizzo di un integer o di un char al posto del campo si/no parlavo ovviamente solo del campo del database, non di rimpiazzare un checkbox, ma era solo un suggerimento per il futuro :-)
    xxx

  5. #5
    Funziona!!!!!!!!!
    Non so come ringraziarti, mi ero proprio bloccata su questo problema!!!
    Grazie ancora!!!!!!

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.