[ASP] si può fare?

  • Creatore Discussione Creatore Discussione dariov
  • Data di inizio Data di inizio

dariov

Nuovo Utente
4 Mar 2018
28
1
3
58
Ciao a tutti, vista la mia scarsa esperienza con la asp, prima di ingarbugliarmi in un tentativo che non porta a nessun risultato, chiedo se possibile fare la seguente cosa:

Una pagina asp HTML contiene un menu a tendina e una tabella contenente dei valori.

È possibile sulla stessa pagina In base alla selezione del menu a tendina filtrare la tabella, o bisogna passare a una seconda pagina Il risultato della selezione del menu stesso?

Potete indicarmi qualche strada?

Grazie
 
Ciao a tutti, vista la mia scarsa esperienza con la asp, prima di ingarbugliarmi in un tentativo che non porta a nessun risultato, chiedo se possibile fare la seguente cosa:

Una pagina asp HTML contiene un menu a tendina e una tabella contenente dei valori.

È possibile sulla stessa pagina In base alla selezione del menu a tendina filtrare la tabella, o bisogna passare a una seconda pagina Il risultato della selezione del menu stesso?

Potete indicarmi qualche strada?

Grazie
1 caso
Puoi fare una chiamata Ajax a un modulo ASP, passandogli i parametri via querystring e vedere il risultato nella risposta...
2 caso
Oppure puoi chiamare una seconda pagina via POST passandogli il parametro su un campo form hidden dopo averlo caricato con la selezione
La pagina chiamata leggerà in request.form(nomecampo) il valore da usare...
la tua pagina supponiamo ha un form di nome formname

Facciamo un esempio:
se chiami una altra pagina via post
nella sezione head devi creare una funzione con ilparametro in ingresso via querystring
Codice:
function SelezionaPagina(selezione) {
  document.formname.action="programma.asp?parametro="+selezione;
  document.formname.submit();
  return true;
}
...
oppure

via POST e basta dopo aver caricato il campo hidden

function SelezionaPagina(selezione) {
  document.getElementById(campohidden).value=selezione;
  document.formname.action="programma.asp";
  document.formname.submit();
  return true;
}

Se invece usii AJAX la cosa è più complessa ma puoi rimanere nella stessa pagina dove esegui la richiesta ricaricando
il blocco dove vuoi con la risposta del server opo l'esecuzione del modulo chiamato...

Codice:
datiform="?selezione="+selezione;
  var ans;
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     alert(this.responseText);
    }
  };
  xhttp.open("GET", "programmachiamato.asp?"+datiform, true);
  xhttp.send();
  }

Spero che l'esempio ti possa aiutare a studiare e continuare..

ciao

[/code]



usando un evento sul menu, avrai una funzione Javascript a cui passi il valore della riga menu selezionata.
Nella funzionechiamata farai una chiamata ad Ajax per eseguire il modulo richiesto e avrai il risultato nella response.text
 
Ultima modifica:
ti ringrazio per la risposta ma non ci capisco nulla... sono due giorni che cerco di capire e trovare argomenti da guardare ma va di male in peggio.
probabilmente è troppo complicato per le mie capacità
 
ti ringrazio per la risposta ma non ci capisco nulla... sono due giorni che cerco di capire e trovare argomenti da guardare ma va di male in peggio.
probabilmente è troppo complicato per le mie capacità
Non ti buttare giù, è piu semplice di quanto pensi...
cerco un esempio semplice e te lo posto:
una pagina con tre righe descrizione tipo menu che chiama pagine diverse
passandogli i dati da usare nella pagina chiamata con POST
pagina 1 file=Esempio1.asp
Codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="it" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Senza nome 1</title>
<script type="text/javascript">
function OpenPage(pagina){
    document.frmprova.action = pagina;
    document.frmprova.submit();
    return true;
}
</script>
</head>

<body>
<form name="frmprova" id="frmprova" method="post" action="" >
<p>PAGINA DI ESEMPIO CHE CHIAMA 3 PAGINE DIVERSE</p>
<p>Esempio</p>
   <p>questi campi possono essere visti in POST dalle pagine chiamete</p>
   <p>campo 1 id="campo1" qui a lato il campo di testo <input type="text" id="campo1" name="campo1" value="11111" /></p>
   <p>campo 1 id="campo1" qui a lato il campo di testo <input type="text" id="campo2" name="campo2" value="22222" /></p>
   <p>campo 1 id="campo1" qui a lato il campo di testo <input type="text" id="campo3" name="campo3" value="33333" /></p>   
   <p>&nbsp;</p>
<p style="cursor:pointer;" title="seleziona pagina 1.1"><a onclick="OpenPage('Esempio1_1.asp')">1. PAGINA ESEMPIO 1.1</a> </p>
<p style="cursor:pointer;" title="seleziona pagina 1.2"><a onclick="OpenPage('Esempio1_2.asp')">2. PAGINA ESEMPIO 1.2</a></p>
<p style="cursor:pointer;" title="seleziona pagina 1.3"><a onclick="OpenPage('Esempio1_3.asp')">3. PAGINA ESEMPIO 1.3</a></p>
</form>
</body>
</html>

ora le 3 pagine da chiamare
Esempio1_1.asp
Codice:
<%
Dim campo1,campo2,campo3
for i=1 to Request.Form("campo1").Count
  campo1 =  Request.Form("campo1")(i)
next
for i=1 to Request.Form("campo2").Count
  campo2 =  Request.Form("campo2")(i)
next
for i=1 to Request.Form("campo3").Count
  campo3 =  Request.Form("campo3")(i)
next

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Esempio</title>
</head>

<body>
PAGINA 1
PROVA ricezione valori da pagina iniziale via POST
<%
response.write("<br>il campo1 vale="&campo1)
response.write("<br>il campo2 vale="&campo2)
response.write("<br>il campo3 vale="&campo3)
%>
</body>
</html>

pagina 2
Esempio1_2.asp
Codice:
<%
Dim campo1,campo2,campo3
for i=1 to Request.Form("campo1").Count
  campo1 =  Request.Form("campo1")(i)
next
for i=1 to Request.Form("campo2").Count
  campo2 =  Request.Form("campo2")(i)
next
for i=1 to Request.Form("campo3").Count
  campo3 =  Request.Form("campo3")(i)
next

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Esempio</title>
</head>

<body>
PAGINA 2
PROVA ricezione valori da pagina iniziale via POST
<%
response.write("<br>il campo1 vale="&campo1)
response.write("<br>il campo2 vale="&campo2)
response.write("<br>il campo3 vale="&campo3)
%>
</body>
</html>

pagina n.3
Codice:
<%
Dim campo1,campo2,campo3
for i=1 to Request.Form("campo1").Count
  campo1 =  Request.Form("campo1")(i)
next
for i=1 to Request.Form("campo2").Count
  campo2 =  Request.Form("campo2")(i)
next
for i=1 to Request.Form("campo3").Count
  campo3 =  Request.Form("campo3")(i)
next

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Esempio</title>
</head>

<body>
PAGINA 3
PROVA ricezione valori da pagina iniziale via POST
<%
response.write("<br>il campo1 vale="&campo1)
response.write("<br>il campo2 vale="&campo2)
response.write("<br>il campo3 vale="&campo3)
%>
</body>

salva le 4 pagine con i nomi indicati e provale su un server ASP naturalmente
Spero ti possa essere utile per farepratica
 
Ti ringrazio degli esempi, finalmente una cosa comprensibile:D

ho modificato un pò e sono arrivato a utilizzare le select invece dei campi text e funziona con due select :D:D e il link per spostarsi in una nuova pagina (ho spostato lo script in un file "gare.js")

però avrei bisogno se possibile di avere una terza select popolata in base alla scelta della seconda sulla stessa pagina, quindi non dovere usare il link per richiamare una nuova pagina, ma filtrare i valori al cambiamento della seconda select.
ho provato a sperimentare un pò ma senza risultati
 
ti allego il codice da me modificato

esempo3.asp
Codice:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
    'Call CnClose()
    Call CnOpen()
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta content="it" http-equiv="Content-Language" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>pagina principale</title>
  
    <script type="text/javascript" src="gare.js"></script>
  
  
</head>

<body>
    <%dim atleta %>
    <form name="frmprova" id="frmprova" method="post" action="" >
        <p>PAGINA DI ESEMPIO CHE CHIAMA 1 PAGINA DIVERSA</p>
        <p>Esempio</p>
      
        <p>&nbsp;</p>
      
    <select name="atleta">
        <option value="0"></option>
        <%
        Dim SQL2
        SQL2 = "SELECT * FROM giocatori ORDER BY nome ASC"
        rs.Open SQL2, cn, 1
        While rs.EOF = False
            %>
            <option value="<%=rs("IDgioc")%>"><%=rs("nome")%></option>
            <%
            rs.MoveNext
        Wend
        rs.Close
      
        %>
        </select>
    <!-- </form> -->
  
    <br><br>
  
    <%dim gare %>
    <!-- <form name="frmgare" id="frmgare" method="post" action=""> -->
        <select name="gare"> <!-- onchange="Batterie(this.value)"> -->
        <option value="0"></option>
        <%
        Dim SQL
        SQL = "SELECT * FROM gare ORDER BY IDgara ASC"
        rs.Open SQL, cn, 1
        While rs.EOF = False
            %>
            <option value="<%=rs("IDgara")%>"><%=rs("dove")%></option>
            <%
            rs.MoveNext
        Wend
        rs.Close
        %>
    </select>
</form> 
  

        <p style="cursor:pointer;" title="seleziona pagina 1.4"><a onclick="OpenPage('Esempio1_4.asp')">4. PAGINA ESEMPIO 1.4</a></p>
</body>
</html>

pagina 1.4
Codice:
<%
Dim atleta, gare

for i=1 to Request.Form("atleta").Count
  atleta =  Request.Form("atleta")(i)
next
for i=1 to Request.Form("gare").Count
  gare =  Request.Form("gare")(i)
next
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Select</title>
</head>

<body>
PAGINA 4
PROVA ricezione valori da pagina iniziale via POST
<%

response.write("<br>l' atleta vale="&atleta)
response.write("<br>la gara vale="&gare)
%>
</body>
 
  • Like
Reactions: Paolo69
ti allego il codice da me modificato

esempo3.asp
Codice:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
    'Call CnClose()
    Call CnOpen()
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta content="it" http-equiv="Content-Language" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>pagina principale</title>
 
    <script type="text/javascript" src="gare.js"></script>
 
 
</head>

<body>
    <%dim atleta %>
    <form name="frmprova" id="frmprova" method="post" action="" >
        <p>PAGINA DI ESEMPIO CHE CHIAMA 1 PAGINA DIVERSA</p>
        <p>Esempio</p>
  
        <p>&nbsp;</p>
  
    <select name="atleta">
        <option value="0"></option>
        <%
        Dim SQL2
        SQL2 = "SELECT * FROM giocatori ORDER BY nome ASC"
        rs.Open SQL2, cn, 1
        While rs.EOF = False
            %>
            <option value="<%=rs("IDgioc")%>"><%=rs("nome")%></option>
            <%
            rs.MoveNext
        Wend
        rs.Close
  
        %>
        </select>
    <!-- </form> -->
 
    <br><br>
 
    <%dim gare %>
    <!-- <form name="frmgare" id="frmgare" method="post" action=""> -->
        <select name="gare"> <!-- onchange="Batterie(this.value)"> -->
        <option value="0"></option>
        <%
        Dim SQL
        SQL = "SELECT * FROM gare ORDER BY IDgara ASC"
        rs.Open SQL, cn, 1
        While rs.EOF = False
            %>
            <option value="<%=rs("IDgara")%>"><%=rs("dove")%></option>
            <%
            rs.MoveNext
        Wend
        rs.Close
        %>
    </select>
</form>
 

        <p style="cursor:pointer;" title="seleziona pagina 1.4"><a onclick="OpenPage('Esempio1_4.asp')">4. PAGINA ESEMPIO 1.4</a></p>
</body>
</html>

pagina 1.4
Codice:
<%
Dim atleta, gare

for i=1 to Request.Form("atleta").Count
  atleta =  Request.Form("atleta")(i)
next
for i=1 to Request.Form("gare").Count
  gare =  Request.Form("gare")(i)
next
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Select</title>
</head>

<body>
PAGINA 4
PROVA ricezione valori da pagina iniziale via POST
<%

response.write("<br>l' atleta vale="&atleta)
response.write("<br>la gara vale="&gare)
%>
</body>


************************* NOTA TECNICA
Ciao vedo che stai facendo pratica ma naturalmente ti sei incappato nel problema più comune per chi inizia a
programmare seriamente...
Per popolare la seconda select in base alla seclta della prima l'unica strada percorribile a meno di non aver tutte le righe in memoria, di ACCEDERE A SERVER PER ESGUIRE UNA NUOVA QUERY IN BASE ALLA SCELTA DELLA PRIMA SELECT: QUESTO è POSSIBILE TRAMITE AJAX CHIAMANDO SUL SERVER UNA ROUTINE E PASSANDOGLI I PARAMETRI CORRETTI...
Allora sei pronto per capire quello che ti darò come esempio?
Quando selezioni la select nella prima select hai a disposizione l'evento onchang()....
Questo deve chiamare una funzione javascript lato client passandogli il valore della option selezionata....
Facciamo per esempio cha chiami la funzione in questo modo...
...onchange="SelezionaSelect1(this.value)"....
... e nella zona head relativa a <script... come ti faccio vedere
avrai la funzione come ti posto io con una mia versione semplificata....
la seconda select deve stare in un tag "div"
Codice:
<div id="Sel2">.....
qui c'è la seconda select con i valori iniziali che saranno poi sostituiti
da ajax
</div>
perche sarà ripiazzata da quello che ritornerà il server a fronte della scelta sulla prima select
chiamando ajax e passandogli il parametro option della prima select
Codice:
<script type="text/javascript" >
function SelezionaSelect1(opt) {
  var xhttp = new XMLHttpRequest();
var ans ' sta per answer...
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     ans=this.responseText;
     document.getElementById("Sel2").innerHTML= ans;
     }
  };
  xhttp.open("GET", "Selezione2.asp?opzione="+opt, true);
  xhttp.send();
}

Il problema è ora devi scrivere il sottoprogramma Selezione2.asp...
naturalmente questo dele solo fare un response della seconda select completa....
quindi
...
il codice del sottoprogramma circa ... come hai fatto prima sopra...
e deve avere il nome come nella chiamata ajax
naturalmente se selezioni un atleta questo vuol dire che vuoi vedere le gare di questo atleta e ho corretto la query..
ma questo lo devi vedere tu se no mi spieghi da zero cosa vuoi fare con le due select...

Codice:
 <select name="gare"> <!-- onchange="Batterie(this.value)"> -->
        <option value="0"></option>
        <%
dim opzione,atleta
for i=1 to Request.Querystring("opzione").Count
   opzione=Request.Querystring("opzione")(i)
next
atleta=opzione
   cnOpen   ' apre il recordset
        Dim SQL
        SQL = "SELECT * FROM gare  where atleta='"&atleta&"'"
        rs.Open SQL, cn, 1
        While rs.EOF = False
            %>
            <option value="<%=rs("IDgara")%>"><%=rs("dove")%></option>
            <%
            rs.MoveNext
        Wend
        rs.Close
        %>
    </select>
cnClose

Pressappoco quiesto è il codice del modulo sul server che devi chiamare ...

Naturalmente devi assemblare il tutto e testarlo.... elavorarci sopra

Se ho tempo ti farò un esempio preciso ... se hai deifficltà rispondi pure sarò paziente ad aiutarti
...
ciao
 
Ultima modifica:
Ciao, ho provato oggi a seguire i tuoi suggerimenti, ma senza risultato:(

anzi mi sono scontrato con un'altro problema
premetto che sto facendo questa prove in localhost
quando ho provato a lanciare la pagina asp modificata, evidentemente male, il server locale rimane a pensare per qualche minuto e anche se lancio altre pagine rimane in attesa per un po'

oggi parto in trasferta per 3 giorni, e non so quanto riuscirò a lavorarci

ti aggiorno
 
Ciao, ho provato oggi a seguire i tuoi suggerimenti, ma senza risultato:(

anzi mi sono scontrato con un'altro problema
premetto che sto facendo questa prove in localhost
quando ho provato a lanciare la pagina asp modificata, evidentemente male, il server locale rimane a pensare per qualche minuto e anche se lancio altre pagine rimane in attesa per un po'

oggi parto in trasferta per 3 giorni, e non so quanto riuscirò a lavorarci

ti aggiorno
Ok quando torni ti do una mano da zero a 100.... fino a far girare il tutto...ciao
 
Purtroppo nessuna novità, e sempre il problema del "congelamento" del server per un po'
 
Ciao, ho letto il messaggio oggi...
ti serve una mano a far partire il server ASP?
Stasera ci sono dopo le 21:00 ... circa, oggi 22 feb 2019... scrivi quello che ti succede e la pagina che non parte...
Hai attivato il server ASP su impostazioni sistema windows e attivato le caselle relative?
fammi sapere dopo e poi il firewall deve far passare la porta 80 per http...
ne parliamo stasera se ci sei...
ciao

CfgASP.JPG
 
Ciao, non mi sono spiegato bene, strano
Il server normalmente funziona, solo che quando faccio delle modifiche a una pagina asp (evidentemente sbagliando...) il server rimane in attesa (cursore che gira) anche per qualche minuto e anche se cerco di caricare un'altra pagina non lo fa finchè il cursore non smette di girare.
Tornando a quello che vorrei fare ti riespongo l'intenzione

prima select che contiene una serie di gare

seconda select che contiene le batterie della gara scelta nella prima select (ho trovato un esempio funzionante per Regioni/province nel quale la seconda select compare dopo la scelta fatta nella prima select sulla stessa pagina
https://www.mrw.it/javascript/select-dinamiche-regioni-province-asp-ajax_7340_2.html)

terza select non legata alle prime 2 contenete gli atleti

possibilmente tutte sulla stessa pagina

Una volta fatta la selezione di tutte 3 le select poter utilizzare i valori per registrare le scelte fatte

spero di essere stato sufficientemente chiaro

purtroppo la sera lavoro sempre per l'attività sportiva, se hai pazzzzzzzzienza scrivimi che quando posso leggo e sperimento

grazie
 
Si è chiaro...
Allora hai bisogno di tre tabelle penso....
la prima carica la prima select...
A seconda di quello che selezioni con il mouse, con l'evento onchange carichi la seconda select (sempre via Ajax altrimenti non funziona...) poi fai una scelta sulla seconda select e sempre con l'evento onchange della seconda select, carichi la terza select sempre con un altro prog. ajax... Quando tutte e tre le select sono selezionate con un tasto button [salva]... vuoi salvare la tripla selezione
E' cosi?
 
Se mi dici per esempio tre liste subordinate provo a fare un esempio funzionante...
Esempio GARE ...1 select ...
selezioni la gara e si carica la select con batterie ... Cosa sono le batterie?
poi se scegli la batteria, si carica la select di Atleti....
E così? ...
conferma e domani faccio un esempio e lo provo sul mio server...e poi te lo posto
ciao
 
Naturalmente lo zip contiene un esempio di partenza da continuare a oerfezionare e testare perchè l'ho scritto in una mezz'ora e ho solo testato il funzionamento iniziale..
per fare i test bisogna caricare le gare correttamente, le batterie delle gare e gli atleti che ci partecipano esattamente...
poi quendo sono tutti i dati ok, puoi fare iltest e fare la selezione della tripletta se ti serve per archivio a stmpe varie etc...
per fare i test la cosa piu utile sono i messaggi di alert con i valori selezionati probabilmente è meglio usare lo statement
Codice:
  valore = document.getElementById(idoggetto).value;
perchè i valori sono dinamici e cambiano con il cambiare del caricamento di ajax...
ciao
 
Si è chiaro...
Allora hai bisogno di tre tabelle penso....
ciao, il DB contiene le seguenti tabelle:
gare, batterie, atleti, iscrizioni confermate
Quando tutte e tre le select sono selezionate con un tasto button [salva]... vuoi salvare la tripla selezione
E' cosi?
giusto
Se mi dici per esempio tre liste subordinate provo a fare un esempio funzionante...
Esempio GARE ...1 select ...
selezioni la gara e si carica la select con batterie ... Cosa sono le batterie?
le gare hanno una data fissa per la finale e più date per le batterie (gironi di qualificazione) e gli atleti possono scegliere la data di partecipazione, che la federazione dove confermare o meno in base alla disponibilità di posti per quella data;
poi se scegli la batteria, si carica la select di Atleti....
la terza select è indipendente dalle altre perchè sono gli atleti che scelgono una data
 
Ti posto un esempio con tutti i files per fare un test
problema, iniziamo beneo_O
lancio Gare01.asp con localhost/test/Gare01.asp e ottengo
ADODB.Connection error '800a0e7a'

Impossibile trovare il provider. È possibile che non sia installato correttamente.

/test/Connessioni.asp, riga 14
la cartella test è fisicamente in C:\inetpub\wwwroot\test
 

Discussioni simili