Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Aggiornamento testo tramite file esterno

    Ciao a tutti, sto modificando un sito ed ho la necessità di creare una pagina html, in cui siano presenti delle offerte di prodotti, modificabili direttamente dall'esterno. Esiste qualcosa in Javascript, che mi permetta di caricare del testo da un file esterno (txt, js ...)? Ho trovato qualcosa in ASP, ma il provider abilita il servizio solo a pagamento e non va bene per il cliente.
    Grazie a tutti anticipatamente e buona giornata.

    Fabio
    Un desiderio si insegue. Una passione si vive!!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Per interagire con i files presenti sul server e' indispensabile l'uso di un linguaggio lato server.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    200
    Premesso che non ho ancora capito quali sono questi linguaggi "lato server" (qualcuno mi potrebbe delucidare a riguardo?) e che purtroppo con il JS non mi sembra si possa leggere un file dati (e non capisco proprio perchè), io sto costruendo un sito in cui non un solo dato appare nel codice sorgente bensì in file disseminati nella rete.

    Certo, l'deale sarebbe avere un web server, un linguaggio come PHP o ASP e un Dbms come Mysql.
    Tutte che ho già installato. Purtroppo non riesco a far funzionare il tool PhpMyAdmin che esordisce con un codice d'errore.

    Inoltre, come dici tu, i provider probabilmente in cambio di questo servizio richiedono un corrispettivo in denaro.

    Ho pensato di utilizzare il mio PC come server, ma proprio non so come fare. Forse dovrei comprare un IP? E dopo? Tutte domande che rivolgerò a questo forum a meno che qualche buon anima leggendo questo documento, mosso a compassione, non abbia la cortesia di fare un po' di chiarezza sottraendomi dalle tenebre in cui mi trovo.

    Comunque, per leggere i file (che possono essere aggiornati manualmente) ho escogitato questa soluzione:


    <SCRIPT language="javascript" src="..../file.js"></SCRIPT>
    <SCRIPT language="javascript"> LeggiDati </SCRIPT>

    tutto qui.


    Il "file.js" è un file che contiene i tuoi dati, facendo attenzione a rispettare questa forma:


    A=""
    +"Il vento, che stasera suona attento"
    +"|ricorda un forte scotere di lame "
    +"|-gli strumenti dei fitti alberi- "
    +"|e spazza l orizzonte di rame dove strisce di luce si protendono "
    +"|come aquiloni al cielo che rimbomba.|"


    Come vedi, ovviamente è solo codice JS.

    Tutti i dati li concateni in una variabile che in questo caso si chiama semplicemente A.

    Poni attenzione al fatto che il contenuto della variabile in questione può contenere un vero e proprio "tracciato record".

    E' sufficiente separare i campi da un simbolo che ne indica la fine (in questo esempio ho usato il simbolo "|").

    La funzione "LeggiDati" ha il solo compito di leggere i singoli campi (che ora hai a disposizione nella variabile "A") ed eventualmente presentarli come vuoi.

    Ad esempio potrebbe essere così fatta:


    function LeggiDati()
    {
    var OggettoDiv
    var Ind=0
    var Riga
    var Y=0
    var Pp=0
    var Pa=0
    var LenA=A.length
    var Parte1 = "<div> <b class='NoteTitl1'>"
    var Parte2 =""
    var Parte3 = "[/b]"
    var Parte4 = "<b class='NoteText1'>"
    var Parte5 =""
    Pa = A.indexOf("|",Pp) //** Lettura fuori ciclo **
    //
    while (Pa != -1) //** -1 = Non trovato (EoF) **
    {
    Ind = Ind + 1
    Riga=A.substring(Pp,Pa)
    //
    if (Ind == 1)
    { Parte2 = Riga }
    else
    { Parte5 = Parte5 + Riga + "
    "};
    //
    Pp=Pa+1
    Pa=A.indexOf("|",Pp)
    }
    //
    OggettoDiv= Parte1 + Parte2 + Parte3 + Parte4 + Parte5 + "[/b] </div>"
    //
    document.write(OggettoDiv)
    }



    oppure (nel caso anzichè solo testo ci fossero più campi):

    function LeggiDati()
    {
    var Provv = new Array();
    var Y=0
    var Pp=0
    var Pa=0
    var LenA=A.length
    Pa=A.indexOf("|",Pp) //** Lettura fuori ciclo **
    while (Pa != -1) //** -1 = Non trovato (EoF) **
    {
    for (X=0;((X < 3)&&(Pa != -1));X++)
    {
    Provv[X]=A.substring(Pp,Pa)
    Pp=Pa+1
    Pa=A.indexOf("|",Pp)
    }
    Campo1 [Y] =Provv[0]
    Campo2 [Y] =Provv[1]
    Campo3 [Y] =Provv[2]
    Y=Y+1
    }
    }

    Se poi dovessi ritenere che il file.js sia troppo complicato per modificarlo manualmente, potresti sempre fare un programmino JS che lo prepari, e te lo presenti a video. Dopodichè, con un semplice copy and past lo salvi dove vuoi.


    Ciao, vedrai che quanto esposto ti sarà d'aiuto.

  4. #4
    Grazie Calaf1966, questo mi è già molto di aiuto. Adeso provo ad inserire il tutto e poi ti farò sapere.
    Comunque se proprio fosse necessario dover aggiornare del testo, senza dover ricorrere a database, ASP, PHP o altro, lo si può tranquillamente fare con Flash ed un file esterno .TXT. L'ho già provato e funziona.

    Buona Giornata

    Fabio
    Un desiderio si insegue. Una passione si vive!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    200
    Sì, funzionerà, considera che nell'ultimo esempio di LeggiDati la funzione è impostata per considerare un tracciato record contenente 3 soli campi.
    Quindi il file.js dovrebbe essere impostato così:

    A=""
    +"Campo1|Campo2|Campo3"
    +"|Campo1|Campo2|Campo3"
    +"Campo1|Campo2|Campo3"
    +"Campo1|Campo2|Campo3|"
    etc...

    Puoi facilmente inserire più campi a patto di modificare la funzione LeggiDati (cambiare ad esempio il valore 3 nel valore N che ti si adatta).

    Generalizzando, il valore che indica il numero di campi potrebbe essere passato alla funzione LeggiDati come parametro.

    Lo stesso parametro potrebbe essere inserito nel file.js come dato.

    In tal modo potresti generalizzare la funzione facendola funzionare indistintamente per ogni tipo di file.

    Es.

    A=""
    +"4EOH"
    +"Campo1|Campo2|Campo3|Campo4"
    +"Campo1|Campo2|Campo3|Campo4|"
    etc.

    Dove 4 è il numero dei campi e EOH è una label che stà per "End Of Header."
    Utilizzi cioè tutto ciò che stà prima dell EOH come dati di Header che eventualmente ti potrebbero servire (come ad esempio in questo caso il numero dei campi per ogni record o magari una password per poter accedere o una data di "expiration" ed altro ancora).

    Pensa che io utilizzo i files (nell'attesa di impiantare un DBMS) come file ad indice. I contenuti cioè, spesso contengono indirizzi di altri file i quali a loro volta possono contenere indirizzi di altri file ancora, in una concatenazione padre/figlio che mi potrebbe consentire di impiantare una struttura di Menu ad albero senza limite e senza un solo dato presente nel codice sorgente (neppure gli indirizzi di eventuali altri HTML o file immagini o di dati etc.).
    Così facendo infatti, volendo sostituire i file con un DBMS le modifiche sarebbero veramente minime.

    Inoltre potresti dedicare un campo come chiave primaria.
    Una volta letto il file è facile fare una ricerca per chiave.

    Ciao.

  6. #6
    Ho inserito il tutto nella pagina, ma ora no so come inserire il testo dal file alla "text area". Il codice che ho inserito è il seguente:

    <HTML><HEAD><TITLE>Untitled</TITLE>
    <META http-equiv=Content-Type content="text/html; charset=windows-1252">
    </HEAD>
    <BODY BACKGROUND="Images/BackBlue.jpg" width="100%" height="100%" scroll="auto">

    <SCRIPT language="javascript" src="file.js"></SCRIPT>

    <SCRIPT language="javascript">
    function LeggiDati()
    {
    var OggettoDiv
    var Ind=0
    var Riga
    var Y=0
    var Pp=0
    var Pa=0
    var LenA=A.length
    var Parte1 = "<div> <b class='NoteTitl1'>"
    var Parte2 =""
    var Parte3 = "[/b]"
    var Parte4 = "<b class='NoteText1'>"
    var Parte5 =""
    Pa = A.indexOf("|",Pp) //** Lettura fuori ciclo **
    //
    while (Pa != -1) //** -1 = Non trovato (EoF) **
    {
    Ind = Ind + 1
    Riga=A.substring(Pp,Pa)
    //
    if (Ind == 1)
    { Parte2 = Riga }
    else
    { Parte5 = Parte5 + Riga + "
    "};
    //
    Pp=Pa+1
    Pa=A.indexOf("|",Pp)
    }
    //
    OggettoDiv= Parte1 + Parte2 + Parte3 + Parte4 + Parte5 + "[/b] </div>"
    //
    document.write(OggettoDiv)
    }
    </SCRIPT>

    <TABLE BORDER=0 cellspacing=0 cellpadding=0 width="100%">
    <TR>
    <TD width="33%" vAlign=middle align=center height=150>
    <TEXTAREA name=Offerta_1 rows=4 cols=32>
    ------------------------------
    OFFERTA 1
    ------------------------------
    RIGA ESTERNA_01
    RIGA ESTERNA_02
    RIGA ESTERNA_03
    .....
    ------------------------------
    </TEXTAREA>
    </TD>
    </TABLE>
    </BODY>
    </HTML>

    Se devo gestirlo diversamente, quindi non con una text area, per favore dimmi come.

    Ancora grazie

    Fabio
    Un desiderio si insegue. Una passione si vive!!

  7. #7
    Scusa Calaf1966, non ti ho detto (ma avrai capito benissimo!!) che le righe "RIGA Esterna_XX" sono di esempio.

    Fabio
    Un desiderio si insegue. Una passione si vive!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    200
    Caro Fabiotes, il codice d'esempio che ti ho fornito andrebbe studiato per interiorizzare il meccanismo di funzionamento, non solo per fare un copy ed incolla. Altrimenti non si affineranno mai le proprie capacità di programmazione.

    Comunque:

    1) Il testo che leggi lo puoi inserire in qualsiasi oggeto adatto a contenere un testo.
    2) La tecnica con la quale inserisci il testo (proveniente dal file) è quella della "creazione dinamica dell'elemento HTML".
    3) A tal scopo viene utilizzata l'istruzione JS "document.write"
    4) E' sufficiente inserire tra le parentesi della "document.write" il codice HTML da eseguire (potrebbe anche essere contenuto in una variabile.

    5) Ecco l'esempio (da prendere con un copy and paste) per la creazione di un elemento <DIV> e le righe di testo:


    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    <SCRIPT language="javascript">

    function LeggiDati()
    {

    var OggettoDiv
    var Ind=0
    var Riga
    var Y=0
    var Pp=0
    var Pa=0
    var LenA=A.length
    var Parte1 = "<div>"
    var Parte2 =""
    Pa = A.indexOf("|",Pp) //** Lettura fuori ciclo **
    //
    while (Pa != -1) //** -1 = Non trovato (EoF) **
    {
    Ind = Ind + 1
    Riga=A.substring(Pp,Pa)

    Parte2 = Parte2 + Riga + "
    "

    Pp=Pa+1
    Pa=A.indexOf("|",Pp)
    }

    OggettoDiv= Parte1 + Parte2 + "[/b] </div>"

    alert (OggettoDiv)
    document.write(OggettoDiv)
    }
    </SCRIPT>

    </head>

    <body>

    <SCRIPT language="javascript" src="file.js"></SCRIPT>
    <SCRIPT language="javascript">LeggiDati()</SCRIPT>

    </body>

    </HTML>


    6) E' stata aggiunta un "alert" per consentirti di guardare l'HTML creato

    7) Ecco l'esempio (da prendere con il copy and paste) per il caso di una "Textarea":



    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transational//IT">
    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


    <SCRIPT language="javascript">

    function LeggiDati()
    {
    alert ("LeggiDati")
    var OggettoDiv
    var Ind=0
    var Riga
    var Y=0
    var Pp=0
    var Pa=0
    var LenA=A.length
    var Parte1 = "<TABLE BORDER=0 cellspacing=0 cellpadding=0 width='100%'>"
    + "<TR>"
    + "<TD width='33%' vAlign=middle align=center height=150>"
    + "<TEXTAREA name=Offerta_1 rows=4 cols=32>"

    var Parte2 =""
    Pa = A.indexOf("|",Pp) //** Lettura fuori ciclo **

    while (Pa != -1) //** -1 = Non trovato (EoF) **
    {
    Ind = Ind + 1
    Riga=A.substring(Pp,Pa)

    Parte2 = Parte2 + Riga + "\n"

    Pp=Pa+1
    Pa=A.indexOf("|",Pp)
    }

    OggettoDiv= Parte1 + Parte2 + "</Textarea>" + "</TD>" + "</TR>" + "</Table"

    alert (OggettoDiv)
    document.write(OggettoDiv)
    }
    </SCRIPT>

    </head>

    <body>

    <SCRIPT language="javascript" src="file.js"></SCRIPT>
    <SCRIPT language="javascript">LeggiDati()</SCRIPT>

    </body>

    </HTML>


    8) Le funzioni definiscile dentro il tag "<Head>"
    9) Cerca di usare i fogli di StyleSheet (CSS)
    10) Nel caso del file testo, il separatore "|" ti serve per poter stabilire esattamente quando vuoi andare a capo. Quindi per ogni "|" incontrato verrà eseguito un ritorno a capo. Ciò ti consente di formattare il testo come vuoi.

    11) Nel "<DIV>" per tornare a capo basta inserire un "
    "
    12 Nella "textarea" devi necessariamente inserire un "\n".

    13) Ricordati che con la programmazione puoi formattare il testo del file come meglio credi (evidenziando in grassetto ad esempio l'intestazione)

    Fammi sapere com'è andata.

    Ciao.

  9. #9
    Calaf1966 sei un grande, funziona perfettamente e l'ho modificata in maniera da poter scrivere più offerte all'interno della pagina.
    Per quanto riguarda i tuoi consigli riguardo i CSS ed altro, considera che il codice che ho scritto è solo per un esempio, perchè per abitudine gestisco le pagine in maniera completamente differente.
    Preciso che la mia è solamente una precisazione ed in nessuna maniera una critica ai tuoi suggerimenti.
    Ancora grazie mille per l'aiuto e la disponibilità.

    Fabio

    P.S.= Prometto che appena avrò un po di tempo libero mi dedicherò di più allo studio di Javascript, anche perché mi rendo conto che è sempre più di maggior utilizzo.
    Un desiderio si insegue. Una passione si vive!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    200
    Grazie del complimento, ma a dire la verità è da pochissimo che mi stò dedicando alle "nuove tecnologie". Io provengo dal mondo dei Main frame ed il mondo client/server è per me più che altro un hobby (anche se nel mio lavoro c'è comunque un interfacciamento con la piattaforma client/server che viene utilizzata ad esempio per fornire i servizi di home banking la cui elaborazione avviene esclusivamente sui grandi calcolatori. I Main frame appunto.)

    Per cui anch'io avrò molte domande da fare (anche perchè c'è da impazzire per il gran caos che tutta questa marea di prodotti, ciascuna con le sue versioni e release, riesce a produrre nella mia mente). Mettendo da parte comunque le mie analisi su tutto ciò che ruota attorno al mondo client/server, ritengo che sia stata proprio una bella coincidenza che tu abbia dovuto affrontare questo tipo di problema (lettura di un file), poichè è solo da un mesetto circa che mi sono messo d'impegno per trovare una soluzione a me soddisfacente. Infatti, dopo aver chiesto un pò in giro ed aver appurato che la cosa non si poteva fare, mi sono prima informato sui cookies (ma ne ho escluso l'uso perchè non sono adatti allo scopo, in quanto questi possono essere memorizzati solo in locale, mentre io avevo l'esigenza di leggere anche files sparsi nella rete. Uso solo HTML e Javascript.) e poi ho ideato questa soluzione in barba un po' a tutti.

    Bella coincidenza davvero.

    Ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.