Newsgroup: it.comp.www.asp
Titolo: Ritorno ad una linea dello script

Ciao a tutti. Anzitutto grazie per la pazienza che dimostrate nei miei
confronti, visto che mi state aiutando molto a capire il vasto mondo di ASP
:-))) e complimentoni per la preparazione e la bravura che dimostrate.
Ho ancora una volta un quesito per il NG: ho implementato questo
semplicissimo script collocato in una pagina che, per semplicità, chiamo
prova.asp
<%
dim objStream, apriFileLettura, apriFileScrittura, nomeFile, numeroCasuale,
valoreRitorno
valoreRitorno = 0
Set objStream = Server.CreateObject("Scripting.FileSystemObject")
nomeFile = Server.MapPath("txt/ricpub.txt")
Set apriFileLettura = objStream.OpenTextFile(nomeFile,1)
Set apriFileScrittura = objStream.OpenTextFile(nomeFile,8)
Randomize
numeroCasuale = Int(58 * Rnd + 1)
Do While Not apriFileLettura.AtEndOfStream
    dim lineaFile
    lineaFile = CLng(apriFileLettura.ReadLine)
    If lineaFile = numeroCasuale Then
        valoreRitorno = 1
        'ritorno a Randomize
    End If
Loop
If valoreRitorno = 0 Then
    apriFileScrittura.WriteLine numeroCasuale
End If
apriFileLettura.Close
apriFileScrittura.Close
%>
La domanda a questo punto è semplice: è possibile fare in modo che lo script
ritorni alla linea in cui è collocato Randomize, secondo quanto impostato
nel commento? Se non è possibile, come posso ovviare a questo inconveniente?
Ah, ora che ci sono, un'altra domanda: mi servirebbe che lo script fosse
avviato una volta a settimana. Ora, correggetemi se sbaglio, io so che lo
script viene avviato ogni volta che viene consultata la pagina, quindi non
posso mettere soltanto come condizione di avvio il raggiungimento di un
giorno della settimana (es. Domenica) ma di un giorno e di un'ora ben
precisi (compresi minuti e secondi). Vero? Ma anche in questo caso, se non
vado errato, sorgerebbe il problema che, per ogni utente che si collega, per
es., domenica alle ore 00:00:00 venga generato un numero differente. Come
posso ovviare a quest'altro inconveniente?
Grazie mille e ciao

posso ovviare a quest'altro inconveniente?
Ma se tu spiegassi COSA vuoi fare invece che cercare di farci
"digerire" la tua soluzione... forse potremmi darti qualche
dritta...
Davide

 dritta...
Scusami tanto, anzi scusatemi tanto. Allora, io ho un database di ricette, e
voglio pubblicare una a settimana, scegliendo in maniera casuale all'interno
del database.
Ogni volta che una ricetta viene pubblicata, il suo ID di riconoscimento
viene inserito all'interno di un file di testo, tramite il quale posso sia
verificare quali ricette sono state pubblicate, sia costruire un sommario
con le ricette pubblicate. Ora, a me serve che la ricetta pubblicata
settimanalmente sia unica, in modo tale che ogni utente che si collega in
quella data settimana visualizzi la stessa ricetta. Spero di essere stato
chiaro.
Ciao

del database.
<ZAP>
Aaaaah ! Mo' ce siamo.
Idea 1:
Tu hai il database delle ricette, in una tabella hai la "ricetta della
settimana" (un unico campo ID che "punta" alla tabella "ricette"),
in questa tabella ci metti un campo numerico dove indichi il numero
della settimana.
Ogni volta che qualcuno si connette al sito (nella Application_OnStart
del Global.asa), testi questo numero e lo confronti con la settimana
corrente, se e' diverso (la ricetta e' vecchia), aggiorni la ricetta
ed il corrispondente "id di settimana". In questo modo, il primo che
"becca" la ricetta vecchia la aggiorna e finita li'.
Idea 2:
Stessa cosa, ma invece di scrivere il dato in un database, tu lo
scrivi in un file ascii sul server e poi verifichi la data di
aggiornamento del file stesso. Se e' piu' vecchio di 7 giorni,
aggiorni i dati.
Davide

 >del database.
Ci può anche essere una soluzione "alternativa" che già ho applicato con
successo ossia aggiungere un campo per ogni ricetta che riporti la data in
cui quest'ultima deve essere visualizzata poi, quando il db viene aperto,
ricercare questa data ... o meglio ... ricercare confrontanto la differenza
in giorni dalla data attuale. Se dalla data attuale la differenza:
Giorni = DateDiff("d", DataDB, Date())
è compresa tra 0 (zero) e 6 (sei) significa che quella è la ricetta della
settimana.
Questo discorso l'ho applicato in una situazione similare ma, anzichè "della
settimana" riguardava "del mese" ossia l'intervallo dei giorni era compreso
tra 0 (zero) ed il numero di giorni che componeva il mese in corso (28 ...
29 ... 30 ... 31).
Ciao
Michele Mariotti

 successo...
Grazie mille, è proprio la soluzione che avevo considerato e che ho
applicato.
A proposito, posso farti una domanda? Se applichi una soluzione similare per
pubblicare una ricetta al mese, non sarebbe più semplice aggiungere al
database un campo in riporti il mese di pubblicazione, e nello script prima
ti crei un array in cui riporti i nomi dei mesi, poi controlli in quale mese
sei e ritrovi il valore all'interno dell'array, dopodiché selezioni
all'interno del database il record che presenta quel dato valore del mese?
Dico bene o sto sbagliando? Ho provato solo a ricambiare il favore, se non
ci sono riuscito, scusami :-))))

 ci sono riuscito, scusami :-))))
Hai ragione, ma non hai tenuto conto di un piccolo fattore: creando uno
script che "conti" i giorni, lo posso riciclare anche per altri siti,
modificando unicamente il numero dei giorni ... in questo modo posso
risparmiare molto tempo ...
Se vuoi veramente ricambiarmi il favore, mandami un assegno in bianco
(firmato e "coperto"), al resto penso io! eh eh eh
Michele Mariotti