33 messaggi dal 12 aprile 2006
Ciao a tutti, ho ripescato un vecchio sito fatto in ASP con database access
Dopo diverse modifiche e aggiornamenti mi si pone il seguente quesito :
una lista di soci, con nome cognome via ecc...
mi chiedono se possibile dare la possibilità di aggiungere quello che manca, senza poter modificare l'esistente

mi spiego :
un utente registrato puo aggiungere se manca la via, il numero di telefono ecc.. ma non puo cambiare il nome l'amministratore invece puo accedere a tutto e modificare tutto

Ho fatto una pagina tipo Form con accesso amministratore e quello funziona benissimo
Ho fatto una pagina tipo form con accesso user ... ma puo modificare tutto come l'amministratore
come posso impedirgli di modificare i dati già immessi ?
vorrei permettergli di inserire solo nei campi vuoti

Qualcuno ha un'idea ? coem potrei fare ? ...
10.904 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Ho fatto una pagina tipo Form con accesso amministratore
Ho fatto una pagina tipo form con accesso user


dato che le pagine per amministratore e utente sono diverse, puoi modificare la pagina per l'utente in modo che il nome non sia visualizzato in una casella di testo, ma in una semplice <div>.


Nella pagina amministratore penso che tu stia facendo una cosa simile:
<input type="text" name="nome" value="<%=rs("Nome")%>" />

Mentre nella pagina utente farai:
<div><%= rs("Nome") %><div>


In questo modo l'utente non potrà modificare il nome.
Ovviamente, anche la logica di aggiornamento del database sarà diversa. Nella pagina per l'amministratore fai:
rs("Nome") = Request.Form("nome")

Mentre nella pagina dell'utente questa riga non la metti, dato che non ha il privilegio di cambiare il nome.

L'utente ovviamente non deve accedere alla pagina riservata all'amministratore, neanche se ne conosce l'url. Probabilmente avrai messo il ruolo in una variabile di sessione. Se il ruolo è amministratore, allora può vedere la pagina, altrimenti lo ridirezioni da qualche altra parte.

ciao,
Moreno

Enjoy learning and just keep making
33 messaggi dal 12 aprile 2006
Grazie BrightSoul per la celere risposta
forse non mi sono spiegato bene :
Per la pagina dell'amministratore è ok

nella pagina utente la mia intenzione è di creare un gruppo di persone per diverse riunioni
le diverse persone accedono alla pagina di tipo Form con il medesimo utente e password
una volta dentro si possono iscrivere a una o piu riunioni e salvano.
Il successivo utente potrà iscriversi come il precedente, potrà vede chi si è iscritto ma non deve poter cancellare o modificare i nomi già inseriti in precedenza (solo l'amministratore potrà farlo)


in pratica è una tabella con diverse date-riunioni e per ogni riunione ci vogliono 5 partecipanti
il primo partecipante si iscrive e salva nelle date a lui disponibili
il secondo vede quando c'è il primo e si iscrive e salva
....

il settimo partecipante vede gli iscritti e si iscrive in una data restante e salva

Vorrei far vedere dei record (bloccati) e dei record (scrivibili - liberi)
Dove c'è un nome (solo testo) dove manca un nome (form - insert)
Mammano che si iscrivono la tabella cambia ...
10.904 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Dove c'è un nome (solo testo) dove manca un nome (form - insert)

Ok, puoi fare proprio così come hai descritto. Posta un po' di codice per far vedere cosa hai ora, così possiamo dargli una sistemata.
In linea di principio, ti basta fare verificare cosa c'è nei vari campi del recordset e decidere se mostrare caselle o testo in sola lettura.

If rs("Partecipante1") = "" Then
'Se il partecipante1 non era stato ancora compilato, mostra una casella di testo
Response.Write "<input type=""text"" name=""Partecipante1"" value=""" />"
Else
'Altrimenti, testo in sola lettura
Response.Write rs("Partecipante1")
End If


Poi, quando il form viene inviato, verifica nel database quali valori erano ancora vuoti e vedi se l'utente ti ha mandato il valore relativo. In questo caso, salvalo.

If rs("Partecipante1") == "" Then
'Il partecipante1 era vuoto, vediamo se l'utente ha compilato la casella
  If Request.Form("Partecipante1") <> "" Then
    'Bene, aveva compilato la casella, allora copio il valore nel recordset
    rs("Partecipante1") = Request.Form("Partecipante1")
  End If
End
'Aggiorniamo il database
rs.Update


ciao,
Moreno

Enjoy learning and just keep making
33 messaggi dal 12 aprile 2006
Ciao Moreno
Mi sto perdendo via ... utilizzo Dramweaver CS3
Inserire, visualizzare, modificare e cancellare record in pagine dedicate funziona tutto
Non riesco a capire dove eseguire il controllo
parto da una pagina che mi visualizza una tabella con i record prelevati dal database:

<tr>
<td width="140" align="center" valign="middle"><%=(picchetti.Fields.Item("nomeevento").Value)%></td>
<td width="120" align="center" valign="middle"><%=(picchetti.Fields.Item("dataevento").Value)%></td>
<td width="120" align="center" valign="middle"><%=(picchetti.Fields.Item("sub1").Value)%></td>
<td width="120" align="center" valign="middle"><%=(picchetti.Fields.Item("sub2").Value)%></td>
<td width="120" align="center" valign="middle"><%=(picchetti.Fields.Item("os1").Value)%></td>
<td width="120" align="center" valign="middle"><%=(picchetti.Fields.Item("os2").Value)%></td>
</tr>

Nella pagina di modifica/inserimento, vorrei dare la possibilità ad esempio di scrivere nel record "sub1" solo se il record è vuoto, se è già pieno vorrei leggerne il contenuto

Attualmente la parte di funzione d'inserimento è tipo questa

// boolean to abort record edit
var MM_abortEdit = false;
%>
<%
if (String(Request("MM_insert")) == "form1") {
if (!MM_abortEdit) {
// execute the insert

var MM_editCmd = Server.CreateObject ("ADODB.Command");
MM_editCmd.ActiveConnection = MM_sociSSS_STRING;
MM_editCmd.CommandText = "INSERT INTO Dati_anagrafici_e_tecnici (Tipo_socio, Nome, Cognome, Nr_brevetto, Monitore, Pilota, Sub, Apneista, Op_sup, Funzione, Indirizzo, Località, Tel_privato, Tel_ufficio, Cellulare, [E-mail], Data_di_nascita, Data_entrata, Scadenza_prova, Data_uscita, Armadietto, Chiave_Entrata, Mag, Com, Osservazioni, Scadenza_Base_PlusPool, Scadenza_Exp_BPP, Licenza_natante, Scadenza_Modulo_Laghi, Scadenza_Exp_ML, Scadenza_Modulo_Fiumi, Scadenza_Exp_MF, Didattica, Scadenza_BLS_AED, Scadenza_Exp_BLS_AED, Livello, Tecnica, Scadenza_modulo_SSS, Scadenza_Exp_Metodica, Scadenza_ResQ, Altri_brevetti, Scadenza_Amba, Ipotermia, Scadenza_Apnea1, Scadenza_Apnea2) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
MM_editCmd.Prepared = true;
MM_editCmd.Parameters.Append(MM_editCmd.CreateParameter("param1", 202, 1, 50, Request.Form("textfield1"))); // adVarWChar
MM_editCmd.Parameters.Append(MM_editCmd.CreateParameter("param2", 202, 1, 50, Request.Form("textfield2"))); // adVarWChar
MM_editCmd.Parameters.Append(MM_editCmd.CreateParameter("param3", 202, 1, 50, Request.Form("textfield3"))); // adVarWChar
MM_editCmd.Parameters.Append(MM_editCmd.CreateParameter("param4", 5, 1, -1, (String(Request.Form("textfield4")) != "undefined" && String(Request.Form("textfield4")) != "") ? Request.Form("textfield4") : null)); // adDouble
MM_editCmd.Parameters.Append(MM_editCmd.CreateParameter("param5", 202, 1, 5, Request.Form("textfield5"))); // adVarWChar

...

MM_editCmd.Parameters.Append(MM_editCmd.CreateParameter("param44", 135, 1, -1, (String(Request.Form("textfield40")) != "undefined" && String(Request.Form("textfield40")) != "") ? Request.Form("textfield40") : null)); // adDBTimeStamp
MM_editCmd.Parameters.Append(MM_editCmd.CreateParameter("param45", 135, 1, -1, (String(Request.Form("textfield41")) != "undefined" && String(Request.Form("textfield41")) != "") ? Request.Form("textfield41") : null)); // adDBTimeStamp
MM_editCmd.Execute();
MM_editCmd.ActiveConnection.Close();

// append the query string to the redirect URL
var MM_editRedirectUrl = "910_soci.asp";
if (MM_editRedirectUrl && Request.QueryString && Request.QueryString.Count > 0) {
MM_editRedirectUrl += ((MM_editRedirectUrl.indexOf('?') == -1) ? "?" : "&") + Request.QueryString;
}
Response.Redirect(MM_editRedirectUrl)
}
}
%>
Modificato da jamaeb1 il 15 febbraio 2018 21.48 -
33 messaggi dal 12 aprile 2006
non riesco a trovare la sintassi giusta ...

non mi da risultati sulla pagina :

<td width="120" align="center" valign="middle">
<script>
if rs("<%=(picchetti.Fields.Item("sub1").Value)%>")= "" Then
Response.Write "<input type="text" name="sub1" value="" />"
Else
Response.Write rs("<%=(picchetti.Fields.Item("sub1").Value)%>")
End If
</script>
</td>

Mi da errore all'apertura della pagina

<%
if rs("(picchetti.Fields.Item("sub1").Value)")= "" Then
Response.Write "<input type="text" name="sub1" value="" />"
Else
Response.Write rs("(picchetti.Fields.Item("sub1").Value)")
End If
%>


Qualcuno mi può dare qualche spunto ?
Grazie
10.904 messaggi dal 09 febbraio 2002
Contributi
Ciao,
fai attenzione, non copiare pari pari i suggerimenti, altrimenti non funzioneranno mai nel tuo contesto.
Il mio oggetto rs rappresenta un recordset, che nel tuo caso hai chiamato picchetti.

Quindi prova con:
<td width="120" align="center" valign="middle">
<%
if picchetti.Fields.Item("sub1").Value = "" Then
  Response.Write "<input type=""text"" name=""sub1"" value="""" />"
Else
  Response.Write picchetti.Fields.Item("sub1").Value
End If 
%>
</td>

Oppure, in maniera più concisa:
<td width="120" align="center" valign="middle">
<%
if picchetti("sub1") = "" Then
  Response.Write "<input type=""text"" name=""sub1"" value="""" />"
Else
  Response.Write picchetti("sub1")
End If 
%>
</td>


A proposito del tuo precedente post sull'inserimento: in quel caso il record è nuovo e tutti i suoi campi si dovranno presentare vuoti e con caselle di testo, in modo che possano essere compilati tutti.
Se ho capito bene, il problema di consentire la modifica solo ai campi vuoti, si presenta solo al successivo aggiornamento di un record esistente.

Ciao,
Moreno
Modificato da BrightSoul il 19 febbraio 2018 13.18 -

Enjoy learning and just keep making
33 messaggi dal 12 aprile 2006
Ciao Moreno
ho provato in tutte le salse, suppongo che qualcosa nella sintassi non passa
ad esempio

<td width="120" align="center" valign="middle">
<%
if picchetti.Fields.Item("sub1").Value = "" Then
Response.Write "<label><input type="text" name="sub1" value="" /></label>"
Else
Response.Write picchetti.Fields.Item("sub1").Value
End If
%>
</td>

mi da come risultato

Errore di compilazione di Microsoft JScript error '800a03ed'

Previsto '('

/lavori/1001_iscrizione_eventi.asp, riga 193
if picchetti.Fields.Item("sub1").Value = "" Then
---^

Ho provato ad aggiungere "picchetti... "(picchetti ... ("picchetti ...
mi da sempre errore su quella riga

Attraverso il DB popolo la tabella con i record esistenti e non
nella pagina di aggiornamento mi appaiono i campi pieni ed i campi vuoti
tutti non modificabili, se li scrivo come
<td width="120" align="center" valign="middle"><%=(picchetti.Fields.Item("sub1").Value)%></td>

o tutti modificabili se li scrivo come

<td width="120" align="center" valign="middle"><label><input name="sub1" type="text" id="sub1" value="<%=(picchetti.Fields.Item("sub1").Value)%>" /></label></td>

appena tento di inserire il controllo if , mi viene fuori l'errore

a presto
Jean

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.