Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quote Originariamente inviata da patdepri
    Così funziona "alla grande".
    Salve, mi fa piacere tu sia riuscito a risolvere in qualche modo.

    Giusto per completezza riporto comunque alcune considerazioni su quanto hai indicato.
    Vado per ordine:

    Quote Originariamente inviata da patdepri
    ho letto centinaia di pagine a proposito dell’argomento cache, perché intuivo che il problema fosse proprio lì.
    Infatti... il problema non è solo mio, o meglio, ma di tutti i browser che oltretutto si comportano anche in maniera differente.
    Penso che quello della cache fosse un problema marginale dovuto a quell'autocomplete che, se ho capito bene, non hai disattivato come suggerito.

    Resto invece dell'idea che il problema principale fosse da ricercare piuttosto sulla mancata scrittura o lettura del file txt.

    Suppongo infatti che, non essendo eseguita la corretta lettura dei dati salvati nel txt, i campi venivano ripristinati semplicemente in base a quanto era stato precedentemente impostato dall'utente, pescando appunto dalla cache del browser per via dell'autocomplete che di default è attivo.

    Quote Originariamente inviata da patdepri
    Ci sono effettivamente dei modi per eseguire un reset di files ... PHP clearstatcache()
    Bene che tu abbia fatto delle ricerche ma in questo caso mi pare non ci sia motivo di usare tale funzione. Il file txt viene infatti scritto oppure letto, ma le due cose non vengono fatte assieme nell'esecuzione dello script, per cui non influisce il fatto di una eventuale cache e, di conseguenza, non hai bisogno di pulirla.

    Da precisare comunque che tale funzione riguarda la cache dei metadati del file, non del suo contenuto; per cui potrebbe risultare in cache giusto il valore di quel filesize("data.txt") usato per dare la lunghezza a fread() ma che non incide ad ogni modo sul corretto risultato per lo script in esame.

    Quote Originariamente inviata da patdepri
    ma di variabili in memoria del browser: nulla tranne l’intervento manuale
    Non posso che ripetere che la cache nel browser, per quanto riguarda i valori impostati nei campi, è gestita da quell'autocomplete.
    Ad ogni modo, anche forzando la rimozione della cache, il problema resta se per qualche altro motivo non viene correttamente scritto/letto il txt.

    Certo, per poter approfondire, sarebbe stato utile analizzare lo script da te modificato fino a quel punto ma a quanto pare hai risolto optando per una differente impostazione

    Quote Originariamente inviata da patdepri
    Credo di aver ricostruito il tutto, ma mi sembra che sia corretto:
    Noto giusto qualche piccolezza:

    - vedo la chiusura del body ma non l'apertura(<body>). Suppongo tu l'abbia rimossa involontariamente per riportare qui il codice ripulito.
    Giusto per puntualizzare, con HTML5 è consentito omettere questi tag (come anche <head> e addirittura <html> con alcuni accorgimenti) - il codice HTML risulterà comunque valido - ma se non c'è un valido motivo per ommetterli, è preferibile specificare sia i tag di apertura sia quelli di chiusura.

    - qui ci sono due $_POST[...] inutili:
    Codice PHP:
          // Riporto i valori per ripristinare il form
          
    $fixed_text_1 $divide[0];
          
    $checkbox1 =    $divide[1];
          
    $_POST["fixed_text_1"];
          
    $_POST["checkbox1"]; 
    Il resto mi sembra buono.

    Buon proseguimento
    Ultima modifica di KillerWorm; 08-12-2023 a 12:16
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  2. #12
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    Ecco qui quello che desidero chiederti.

    Per comodità e per evitare di ritrascrivere in varie parti il carattere separatore ";" ho assegnato:

    Codice PHP:
    $char_divider ";"// Carattere che divide gli elementi 
    Questo perché ho bisogno di cambiare in alcuni momenti il tipo di separatore:

    Il sistema originale è così:

    codice:
    file_put_contents('data.txt', '');        $fp = fopen('data.txt', 'a');
            $all_data = $textdata1.";".$checkbox1.";".$checkbox2;
            fwrite($fp, $all_data,);
            fclose($fp);
    Ma ho provato a sostituire:
    ";"
    nel codice qui sopra con:
    $char_divider
    ma non mi funziona più. La pagina ricaricata mi mette il tutto solo nel primo campo.
    Perché?
    Dove sbaglio?

    Qui sotto il codice come lo avevo modificato:

    codice:
    file_put_contents('data.txt', '');        $fp = fopen('data.txt', 'a');
            $all_data = $textdata1.$char_divider.$checkbox1.$char_divider.$checkbox2;
            fwrite($fp, $all_data,);
            fclose($fp);

  3. #13
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quote Originariamente inviata da patdepri
    La pagina ricaricata mi mette il tutto solo nel primo campo.
    Perché?
    Dove sbaglio?
    Bisogna capire dove hai definito la variabile $char_divider. E' possibile infatti che non risulti definita o visibile nel punto in cui la stai usando.

    In base al codice finora esaminato, dovresti definirla ad inizio script, prima delle condizioni, così che sia utilizzabile sia nella condizione di lettura sia in quella di scrittura.

    Tra le altre cose, se tra gli altri dati stai salvando anche del testo inserito da utente, dovresti provvedere a fare un adeguato escape per gli eventuali caratteri presenti nel testo che corrispondono al separatore, oppure impedire che sia usato tale carattere, diversamente i dati risulteranno corrotti in lettura se nel testo viene appunto usato il carattere separatore. Potresti fare un escape manualmente o appoggiarti a funzioni di lettura scrittura dati CSV.
    Valuta tu.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #14
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    Per quanto riguarda il carattere separatore, mi sono accorto di NON aver messo la variabile in questione all’inizio come variabile globale. Era quello l’errore.
    Buona serata.
    Ultima modifica di patdepri; 11-12-2023 a 22:45

  5. #15
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    In questi giorni ho avuto molto da fare per cui non sono riuscito a rispondere.
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Penso che quello della cache fosse un problema marginale dovuto a quell'autocomplete che, se ho capito bene, non hai disattivato come suggerito.
    Nei vari esperimenti ho cercato di fare anche questo e non ho avuto una risposta come mi aspettavo. Con tutta probabilità a causa della mia scarsa esperienza.

    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Noto giusto qualche piccolezza:

    - vedo la chiusura del body ma non l'apertura(<body>). Suppongo tu l'abbia rimossa involontariamente per riportare qui il codice ripulito.
    Giusto per puntualizzare, con HTML5 è consentito omettere questi tag (come anche <head> e addirittura <html> con alcuni accorgimenti) - il codice HTML risulterà comunque valido - ma se non c'è un valido motivo per ommetterli, è preferibile specificare sia i tag di apertura sia quelli di chiusura.
    Per la fretta di rispondere e per il codice articolato che ho messo in piedi ho tralasciato inavvertitamente alcune parti che tu giustamente hai fatto notare. Inoltre, come da tuo consiglio, ho fatto validare il codice html su: https://validator.w3.org/ che mi ha messo alla luce degli errori in una tabella creata nel codice completo.
    Grazie di tutto. Ti offro una pizza virtuale.
    Ultima modifica di patdepri; 11-12-2023 a 22:51

  6. #16
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Quote Originariamente inviata da patdepri
    ...
    Grazie di tutto. Ti offro una pizza virtuale.
    Sei il benvenuto
    Buon proseguimento
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #17
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Ciao e scusa ma perché questo costrutto?
    Codice PHP:
    file_put_contents('data.txt''');        
            
    $fp fopen('data.txt''a');
            
    $all_data $textdata1.$char_divider.$checkbox1.$char_divider.$checkbox2;
            
    fwrite($fp$all_data,);
            
    fclose($fp); 
    Praticamente non ha senso.

    file_put_contents() riporta tre paramentri, di cui il terzo è opzionale, se omesso sovrascrive il file se presente (se non esiste va da se che lo crea nuovo) e se ho compreso cosa stai combinando, tu con questa espressione ('data.txt', '') vuoi sovrascrivere data.txt con un blank in modo da cancellare ciò che c'era scritto prima, ma non ti serve a nulla.
    Come non si capisce perché poi utilizzi il costrutto fopen(); fwrite(); fclose(); invece di riutilizzare semplicemente file_put_contents(), che come dice il manula sostituisce l'altro costrutto.

    In pratica scrivi due volte le stesse cose, inultilmente, così da rendere il tuo codice incasinato, soprattutto a te che devi leggerlo e magari rileggerlo tra qualche anno per effettuare una modifica.

    Tutto quel codice si poteva riassumete in una sola riga, così da renderlo più semplice e semplificre anche il lavoro al server che non deve processare più linee di codice inutile.
    Codice PHP:
    file_put_contents('data.txt'$textdata1.$char_divider.$checkbox1.$char_divider.$checkbox2); 

Tag per questa discussione

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.