PDA

View Full Version : [ASP] Come si fa questa cosa?


gabriele81
17-06-2004, 17:43
Ho fatto una ricerca sul forum ma non ci ho capito molto...

In pratica sono costretto a convertire un sito da PHP a ASP (che non conosco), andandomi a documentare già sono riuscito a tradurre parecchie cose, tra cui anche l'interazione con DB. Però ora mi sono bloccato su questa istruzione php:

include ("nuova_pagina.php");

Come si fa una cosa del genere in ASP? Scusate se è una cosa banale ma l'ASP non lo conosco.

SteR9
17-06-2004, 18:16
devi usare execute la sintassi è questa
server.execute("Pagina.asp")
ciao :)

cionci
17-06-2004, 19:04
Solitamente si fa così:

<!--#include file="included.asp" -->

gabriele81
17-06-2004, 20:52
Originariamente inviato da cionci
Solitamente si fa così:

<!--#include file="included.asp" -->


Grande!:)

Ho fatto in questo modo e va perfettamente, con l'istruzione suggerita da SteR9 non riesco a far leggere nella pagina inclusa i valori delle variabili della pagina da cui l'ho chiamata.

Invece se voglio includere una pagina html l'istruzione server.execute("Pagina.htm") basta e avanza.

Grazie! Per ora...se ho altri problemi vi disturbo ancora, ok? :)

gabriele81
18-06-2004, 13:35
Altro quesito, però un pò diverso.

Ho questa istruzione

Server.MapPath("../database/db.mdb")


sul mio computer funziona, mentre se carico la pagina che contiene l'istruzione sul server che ospiterà il sito non funziona, mi dice che non posso mettere i caratteri ".." nel percorso. Infatti se metto una cosa tipo Server.MapPath("database/db.mdb") o qualsiasi altro percorso che non richieda di tornare indietro di una cartella va tutto ok.

Sul mio computer ho WinXP pro e IIS 5.1 mentre sul server so che c'è Windows Server 2003, non so la versione di IIS.

Secondo voi a cosa è dovuto?

cionci
18-06-2004, 14:40
E' fatto per sicurezza...ad esempio su Aruba c'è lo stesso problema, e devi mettere il persorso completo del file (per Aruba trovi spiegato sul forum quale sia)...

gabriele81
18-06-2004, 16:56
Capisco...quindi mi tocca modificare la struttura del sito...

Grazie!:)

cionci
18-06-2004, 16:59
No...ti basta specificare il percorso completo ;)

gabriele81
18-06-2004, 17:03
Originariamente inviato da cionci
No...ti basta specificare il percorso completo ;)


Visto che non lo conosco faccio prima a spostare il database :)

cionci
18-06-2004, 17:11
Ah...certo ;) Comunque te lo puoi ricavare...
Server.Mappath("/")

In questo modo hai il percorso della home directory...e da quello ottieni il percorso della directory del DB (se devi tornare indietro, fallo lavorando sulla stringa)...

gabriele81
21-06-2004, 11:35
Altra domanda: su MSDN mi sto studiando come si manipolano i files, però non ho trovato una funzione per rinominarli. In php era semplicemente rename("nuovo_nome", "vecchio_nome"), in asp vbscript come si fa? sono costretto a crearne uno nuovo, copiarci tutto il contenuto del vecchio e cancellare quest'ultmo?

gabriele81
22-06-2004, 13:57
Originariamente inviato da gabriele81
Altra domanda: su MSDN mi sto studiando come si manipolano i files, però non ho trovato una funzione per rinominarli. In php era semplicemente rename("nuovo_nome", "vecchio_nome"), in asp vbscript come si fa? sono costretto a crearne uno nuovo, copiarci tutto il contenuto del vecchio e cancellare quest'ultmo?


plis elp mi!!:D

cionci
22-06-2004, 14:18
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsmthdeletefile.asp

gabriele81
22-06-2004, 15:44
Originariamente inviato da cionci
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsmthdeletefile.asp

Ok, quello è per cancellare il file...a me serve rinominare.
Me la sono già girata in lungo e in largo MSDN, deduco che o sono scemo io o non esiste una funzione apposita (la prima ipotesi non è completamente da escludere...).

cionci
22-06-2004, 15:57
Ah...scusa ;) Ho sbagliato link...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsmthmovefile.asp
Oppure: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsmthmove.asp

gabriele81
22-06-2004, 16:33
Originariamente inviato da cionci
Ah...scusa ;) Ho sbagliato link...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsmthmovefile.asp
Oppure: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/jsmthmove.asp

:muro:

Ok sono scemo...
Quindi ad esempio a Move devo mettere come destinazione il nome con cui voglio rinominare il file (eventualmente col path), ho capito bene?

In effetti anche con la rename in php volendo si possono spostare file...

Appena posso faccio delle prove per vedere se funziona...

Grazie!

cionci
22-06-2004, 16:34
Sì...è proprio così ;)

gabriele81
30-06-2004, 12:13
Sto impazzendo...mannaggia a Zio Bill...:muro: :muro: :muro: ho dovuto rifare delle cose che con php+apache funzionavano al 100% mentre con asp+IIS niente...

Allora, in pratica se uso l'oggetto FileSystemObject in locale non mi funziona niente, per fortuna sul server remoto va quindi il sito funziona...vabbè, questo è il minimo...

E' più grave il fatto che non riesca ad aggiornare il database! Qualunque cosa faccia mi esce sempre questo errore:

ADODB.Recordset (0x800A0CB3)
Il set di record corrente non supporta l'aggiornamento. Potrebbe trattarsi di una limitazione del provider o del tipo di blocco selezionato.

Ho provato sia ad eseguire query sql (insert o update) oppure ad usare i metodi dell'oggetto recordset (tipo update), ho provato a scaricare del codice già bello e pronto ma facendolo girare si bloccava sempre allo stesso punto, nella configurazione di IIS ho abilitato tutto quello che potevo abilitare (almeno credo)...per ora sto facendo tutto in locale perchè in remoto credo ci siano delle limitazioni (solo read only), quando sarà tutto a posto dovrò farmelo sbloccare.

Stavo cercando di fare uno stupidissimo contatore per le visite con un db access sotto (dato che i files non riesco ad usarli), ma non riesco a farlo andare...
questo è il codice:


Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
connString = "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("database/contatore.mdb")
conn.Open connString

Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
Dim query
query = "SELECT numero FROM visite"
rs.Open query, conn
conta = rs.Fields("numero").Value

If Session("conta") = "" then
Session("conta") = conta
conta = conta + 1
rs.Fields("numero") = conta
rs.Update

End If

rs.close
conn.Close
set rs=nothing
set conn=nothing

e poi nella pagina
Visitatori: <%= conta %>

Mi salta sempre quando arriva a rs.Update, mentre se non c'è bisogno di aumentare il contatore mi visualizza correttamente il valore presente nel db.

:cry: :cry:

Ho provato a smanettare con i lock e i cursors ma non è che ci ho capito molto...

cionci
30-06-2004, 12:17
Prova così: rs.Open query, conn, 3, 3

gabriele81
30-06-2004, 12:23
Originariamente inviato da cionci
Prova così: rs.Open query, conn, 3, 3

Ci avevo già provato mi esce fuori questo:

Tipo di errore:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Driver ODBC Microsoft Access] Impossibile aggiornare. Database o oggetto di sola lettura

:wtf:

Il file .mdb di sicuro non è sola lettura.

cionci
30-06-2004, 12:28
Sistema operativo ? Probabilmente non hai il permesso di modifica settato su NTFS per l'utente IUSR_NOMEPC

gabriele81
30-06-2004, 12:51
WinXP Pro SP1 con tutti gli aggiornamenti possibili installati, IIS vers. 5.1

Il mio account ha i diritti di amministratore (c'è solo quello)

cionci
30-06-2004, 13:26
Gli utenti che accedono tramite il server IIS usano l'account anonimo IUSR_NOMEPC... Probabilmente il problema è che devi dare alla cartella che contiene il file mdb anche il permesso di scrittura (dalle propietà della cartella su IIS)...

gabriele81
30-06-2004, 13:44
E anche questo già l'avevo fatto...

ho impostato qualsiasi cosa in questo modo, abilitando tutto quello che potevo anche se non serviva:

http://www.vicariatusurbis.org/sanpiox/immagini/image1.gif

Ho notato però che da esplora risorse se vado a vedere le proprietà della cartella wwwroot e tutte le sottocartelle mi dà la voce sola lettura abilitata, se la tolgo mi chiede la conferma, gli dico ok ma se rivado su proprietà c'è ancora sola lettura selezionata :muro:
Questo solo sulle directory, sui singoli files la sola lettura non c'è.

gabriele81
03-07-2004, 21:58
Smanettando qua e là sono riuscito a sbloccare il divieto di scrittura, sinceramente non mi ricordo nemmeno come ho fatto...avevo pure provato a mettere l'utente IUSR_NOMEPC nel gruppo Administrators, poi ho visto che anche lasciandolo nel gruppo Guests funziona. E una è fatta, ora posso modificare il database via web. :winner:

Però ancora l'oggetto FileSystemObject non va, per fare le prove in locale devo commentare le istruzioni che lo coinvolgono altrimenti il browser fa finta di caricarlo ma non lo fa. Idee per questo?

cionci
03-07-2004, 23:55
Non ti appare nessun errore ?

gabriele81
04-07-2004, 12:09
Originariamente inviato da cionci
Non ti appare nessun errore ?


No, non succede nulla...il browser rimane con la pagina bianca e in basso dice che la pagina è in caricamento, anche se lo lascio così per qualche minuto non cambia nulla...e non è nemmeno bloccato perchè se gli faccio caricare un'altra pagina lo fa senza battere ciglio.
Il codice è corretto, perchè se lo faccio girare sul server remoto funziona alla perfezione, è un problema del mio computer.

Ad esempio per leggere e scrivere la data dell'ultima modifica di una pagina ho fatto così:

mesi = Array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre")

Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile(Server.MapPath("Home.asp"))
DataModifica = File.DateLastModified
g = Day(DataModifica)
m = Month(DataModifica)
a = Year(DataModifica)
Response.Write(g & " " & mesi(m-1) & " " & a)

Set File = Nothing
Set FSO = Nothing


sul mio pc mi carica la pagina solo se commento questa parte (nel file Home.asp ci stanno anche altre parti di codice, non solo questa), mentre in remoto è ok.