Distinguere l’input di due pulsanti

  • Creatore Discussione Creatore Discussione mario22
  • Data di inizio Data di inizio

mario22

Nuovo Utente
30 Nov 2012
5
0
1
Ciao Ragazzi, e scusate in anticipo la mia domanda da “novello principiante”, ma tale sono.

È mia intenzione aggiornare un database tramite un form di selezione, aggiungere una voce o cancellare una voce.
Allo scopo ho realizzato due pagine asp una per la richiesta e l’altra per ricevere la selezione effettuata.

La mia domanda è: in ricezione come faccio a distinguere il pulsante che ho pigiato?
Ovvero se ho spinto il pulsante “Submit Aggiungi” piuttosto che “Submit Cancella”?

Ho letto che bisognerebbe “sfruttare” la proprietà name dell’input type, ma in che modo?
Un piccolo esempio mi sarebbe di grande aiuto. Confido in voi per amare questo materia.

Inoltre perché nella pagina di ricezione non mi si visualizza il parametro codice?
Grazie a tutti.

Ecco quello che sono riuscito a fare fino ad ora.

1)File asp per la richiesta
HTML:
<% 
Dim strCodice: codice = session("codice")
codice="3355"
%>

<form name"riviste" method="post" action="eleriviste.asp" >
	<select name="selriviste"> 
		<option value="RIVISTA-1" selected="selected">Rivista-1</option>
		<option value="RIVISTA-2">Rivista-2</option>
		<option value="RIVISTA-3">Rivista-3</option>
		<option value="RIVISTA-4">Rivista-4</option>
	</select>
		<input type="submit" name="Aggiungi" value="Aggiungi"> 
		<input type="submit" name="Cancella" value="Cancella">
</form>

2) File asp per la ricezione
HTML:
<%
 Dim strRivista
 Dim strCodice: codice = session("codice")
 strRivista = request.form("selriviste")
 response.write strRivista
 response.write strCodice
 %>
 
Ciao,

non ho capito cosa serve con i pulsanti, hai due type=submit ma uno deve cancellare.......

per il resto

Codice:
<% 
Dim strCodice 
strCodice="3355"
session("codice") = strCodice
%>


Codice:
<%
 Dim strRivista
 Dim strCodice 
 strCodice = session("codice")
 strRivista = request.form("selriviste")
 response.write strRivista
 response.write strCodice
 %>

Valeria.
 
Vale, grazie per l'aiuto sulla seconda domanda. L'ho provato e funziona benissimo, non avevo dubbi.
Con la prima domanda intendo aggiornare una database.
1) Scelgo un valore dalla Select
2) Lo invio alla pagina di ricezione con uno dei due pulsanti
3) Se ho premuto Aggiungi, aggiungerò il valore al database
4) Se ho premuto Cancella, eliminerò il valore dal database.

Quindi domando; nella pagina di ricezione come riconosco il pulsante che ho premuto?

Per brevità non ho postato la parte della scrittura o cancellazione sul database, cosa che spero di saper fare.

Mi viene un dubbio, ho forse impostato male il problema? Questa cosa di scrivere o cancellare
un record dal database si può fare in un altro modo?
Grazie ancora per la tua disponibilità
 
Ciao,

per sapere quale pulsante è stato premuto devi impostare in una if recuperando il nome (name) e il value del pulsante.

Se vuoi far eseguire una determinata operazione al pulsante Aggiungi

Codice:
If request("Aggiungi")="Aggiungi" then

operazione da eseguire

end if

dove fra le parentesi tonde va il name del pulsante = "" il value ="Aggiungi"

es: sempre con il precedente esempio, con l'aggiunta di una condizione di controllo per sapere quale tasto è stato premuto


Codice:
<%
dim pippo
If request("Aggiungi")="Aggiungi" then
pippo="Tasto premuto Aggiungi"
else
pippo="Tasto premuto Cancella"
end if
Dim strRivista
Dim strCodice 
strCodice = session("codice")
strRivista = request.form("selriviste")
response.write strRivista & " "
response.write strCodice & " "
response.write pippo
%>

adesso stampa il value selezionato dall'option della select, la variabile di sessione e quale tasto è stato premuto

dovendo solo stampare un testo basta un else in altro fai una if per i due pulsanti.

per le operazioni inserimento o cancallazione dati non è appropriato farlo in questo modo, almeno per la cancellazione dove è bene cancellare dati per un valore univoco un ID , un campo contatore che non può mai avere due o più valori uguali 1 2 3 4 ..... 100 se un ID viene cancellato non esisterà più, se hai 10 record e cancelli quello con valore (ID 10) quell'ID non sarà più recuperabile, cancello il 10, 8 9 11 il successivo ID dopo il 9 diventa l'11°.

Quindi per la funzione DELETE di asp si passa un valore univoco in querystring alla pagina che si occuperà di cancellare tutti i dati relativi a quell'ID.

Faccio un esempio, ho 10 record e voglio cancellare il 4 (quarto ID=4)

nell'action del form si passa alla pagina di cancellazione dati il numero dell'ID da cancellare

es:

<form name"riviste" method="post" action="cancella.asp?ID=4">

nella pagina cancella.asp recuperi il dato passato in querystring e lo passi alla funzione delete di asp.

Per non prolungare troppo, passando l'ID come nel form (o tramite un semplice link ipertestuale), nella pagina cancella varifichi quale ID è richiesto e lo passi alla funzione DELETE di asp.

es di cancella.asp:

Codice:
<%
ID=request.QueryString("ID")

connessione al database

SQL = "DELETE FROM nome_tabella WHERE ID = " & ID &";"

eseguo la query e cancello l'ID  4

questa è il metodo logico per le DELETE o UPDATE

Valeria.
 
Valeria, grazie per le preziose informazioni, le studierò con cura e sicuramente ne trarrò buon profitto.
Grazie ancora ti terrò aggiornata.
 
Distinguere l’input di due pulsanti + checkBox

Ciao Valeria, My teacher, grazie ancora per le “dritte” che mi hai dato, ho passato questi giorni a studiarle e applicarle e ti confesso che ho ottenuto buoni risultati.
Ora ho un’altra richiesta da fare, riguardo le checkBox.
E’ possibile attivare e/o disattivare queste caselline ed immediatamente far registrare il loro cambiamento in un database?
Intendo far registrare il loro stato nel database al solo cambio del segno di spunta, senza dover premere altri pulsanti per inviare il comando?
Grazie in anticipo per la prossima dritta.
Ciao mario22
 
Ciao Valeria, My teacher, grazie ancora per le “dritte” che mi hai dato, ho passato questi giorni a studiarle e applicarle e ti confesso che ho ottenuto buoni risultati.
Ora ho un’altra richiesta da fare, riguardo le checkBox.
E’ possibile attivare e/o disattivare queste caselline ed immediatamente far registrare il loro cambiamento in un database?
Intendo far registrare il loro stato nel database al solo cambio del segno di spunta, senza dover premere altri pulsanti per inviare il comando?
Grazie in anticipo per la prossima dritta.
Ciao mario22


Ciao,

i checkbox sono per selezioni multiple, se vuoi fare un'azione quando uno è attivo non puoi solo con ASP senza un'action di un form, javascript associando la funzione ASP all'evento onclick di javascript, ma è alquanto scomodo e inutile. Vedi tu.


Valeria.
 
Distinguere l’input di due pulsanti + checkBox

Vale grazie per la risposta. Nel frattempo ho risolto in questo modo:
nel campo del database faccio scrivere “SI” se la checkBox è attiva
Come prima cosa leggo il database
Poi scrivo il codice qui sotto
Passo i parametri alla pagina asp del database, lo aggiorno e ritorno indietro sulla mia pagina con la checkBox variata di stato.

Un pò macchinoso ma funge.
Grazie ancora, e mi prenoto per un prossimo consiglio.


HTML:
<%if intervista(4)="SI" then tipo="C4B" else tipo="C4A" end if%>
<input type="checkbox" name="check1" value="1"  onClick="parent.location = '/dbIntervista.asp?scelta=<%Response.Write(tipo)%>'"<% If intervista(4) = "SI" Then %> checked="" <%ELSE%> "" <% End If %> />
 
Vale grazie per la risposta. Nel frattempo ho risolto in questo modo:
nel campo del database faccio scrivere “SI” se la checkBox è attiva
Come prima cosa leggo il database
Poi scrivo il codice qui sotto
Passo i parametri alla pagina asp del database, lo aggiorno e ritorno indietro sulla mia pagina con la checkBox variata di stato.

Un pò macchinoso ma funge.
Grazie ancora, e mi prenoto per un prossimo consiglio.


HTML:
<%if intervista(4)="SI" then tipo="C4B" else tipo="C4A" end if%>
<input type="checkbox" name="check1" value="1"  onClick="parent.location = '/dbIntervista.asp?scelta=<%Response.Write(tipo)%>'"<% If intervista(4) = "SI" Then %> checked="" <%ELSE%> "" <% End If %> />


Ciao,

come detto in precedenza devi usare funzioni e metodi di javascript, hai pensato al fatto che è possibile aggionare lo stato del checkbox senza nessun click?

basta scrivere la url della pagina dbIntervista.asp?scelta=<%Response.Write(tipo)%>

es: se il tuo host (o sito in locale) URL/dbIntervista.asp?scelta=C4B o C4A per modificarne lo stato.

Ti consiglio di usare un form e mettere la destinazione nell'action + un controllo che verifichi che i dati passati alla pagina dbIntervista.asp non siano accessibili a modifiche dirette. Controlla il referer.

Al posto di un campo testo dove confronti una stringa usa un campo SI/NO dove cambi lo stato da 0 a 1 (NO SI). Se è flaggato è 1 se non lo è 0

Metti una querystring al posto del response.write.

Valeria.
 

Discussioni simili