Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17

    Come inviare i valori di radio e checkbox da php a html

    Premessa sono molto agli inizi per cui una risposta del tipo guarda il manuale o simili, in genere non mi aiuta molto anche se a volte ricorro a quello, ma qui proprio non riesco a risolvere.
    Inoltre non ho l’elasticità mentale di un ventenne, aggiungetene altri 40 e pure molti altri…

    Veniamo al dunque. Ho un form in html simile a questo:

    <input type="checkbox" name=“fixed_text_1” value= “Example 1”> Example 1

    <label class="toggle">
    <input type="checkbox" name="checkbox1" >
    <span class="labels" data-on="ON" data-off="OFF"></span>
    </label>

    poi alla fine ho il classico:

    <input class="favorite styled" type="submit" name="confirm" value="Enter data">

    In php mi vengono salvati i dati in un file di testo (es.: data.txt) che mi vengono caricati all’inizio e che sono in grado di leggere e di riconvertirli in variabili php.

    Per cui avrò:

    $fixed_text_1 = Example 1
    e
    $checkbox1 = ON oppure OFF

    Domanda: come faccio a fare in modo che al caricamento della pagina riesca ad avere selezionato il primo checkbox nel caso in cui l’abbia selezionato e inviato in precedenza e lo stato ON oppure OFF del secondo caso?

    In pratica come posso fare per passare le variabili php ad html in modo automatico evidenziando già le scelte precedentemente fatte?
    Si può fare? Come?

    Un ringraziamento in anticipo a chi mi può aiutare soprattutto con esempi concreti.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Lo scenario descritto non è troppo chiaro.

    Due punti in particolare:

    1) Non è chiaro se il tuo documento HTML, dove hai il form, sia creato in modo dinamico attraverso PHP oppure sia un file con estensione .html (quindi HTML statico).

    Di base, per poter "passare" delle variabili da PHP ad HTML è infatti necessario che il file stesso abbia estensione .php.
    Qual è la tua situazione?

    2) Trovo confusa la gestione dei dati. Riguardo i checkbox, non mi è chiaro il criterio che stai usando per determinarne lo stato (selezionato o non selezionato) attraverso quelle variabili.

    Nello specifico, per la prima variabile hai usato un solo valore "Example 1" per stabilire che il checkbox sia selezionato; bisogna poi capire che valore ci si debba aspettare nel caso in cui il checkbox debba essere impostato come non selezionato.
    Per la seconda variabile invece hai usato i due valori "ON" e "OFF" ad indicare rispettivamente lo stato selezionato e non selezionato di quel checkbox.

    Stai quindi usando due differenti approcci per poter ottenere un risultato comunque analogo su entrambe i casi.
    Dal momento che serve giusto sapere se far risultare selezionato o meno ciascun checkbox, non sarebbe meglio uniformare il tutto usando due valori convenzionali (ad esempio "1" e "0") per ciascuna variabile?

    Mi sfugge qualcosa?
    Nel caso, sarebbero opportuni dei chiarimenti.

    ---

    Supponiamo che il form sia creato attraverso PHP, avendo quindi un file con estensione .php, e che siano usate delle variabili con valori "1" o "0" per determinare lo stato di ciascuno dei checkbox.

    Nella costruzione del form potrai usare quelle variabili per impostare opportunamente il codice HTML in uscita.

    Per rendere selezionato un checkbox, non dovrai fare altro che specificare l'attributo checked direttamente nel tag <input>.

    Puoi quindi applicare questo attributo usando delle condizioni PHP.

    Qui un esempio minimo in base a quanto indicato:

    Codice PHP:
    <?php
    /* ...
       Qui ci sarà la parte dove recuperi i valori e ottieni le due variabili
       ...
    */
      
    $fixed_text_1 "1"// "1" o "0"
      
    $checkbox1 "1"// "1" o "0"
    ?>
    <!DOCTYPE HTML>
    <html lang="it">
      <head>
        <title>Esempio</title>
      </head>
      <body>
        <form>
          <input type="checkbox" name="fixed_text_1" value="Example 1" <?php if($fixed_text_1 == "1") echo "checked"?>> Example 1
          <label class="toggle">
            <input type="checkbox" name="checkbox1" <?php if($checkbox1 == "1") echo "checked"?>>
            <span class="labels" data-on="ON" data-off="OFF"></span>
          </label>
          <input class="favorite styled" type="submit" name="confirm" value="Enter data">
        </form>
      </body>
    </html>

    Chiaramente la questione può essere risolta in tanti altri modi.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Lo scenario descritto non è troppo chiaro...

    Prima di tutto ti ringrazio per le dritte fornite precedentemente.

    Avrei dovuto descrivere il tutto già da prima per spiegare il mio progetto.
    Lo faccio ora molto in sintesi.
    Questo codice che vedrai di seguito è solo una piccolissima parte del progetto generale che dovrà essere integrato con Arduino e microprocessori vari.
    Servirà per stampare su matrici a led scritte varie e per accendere e spegnere luci e molte altre cose ancora, ma questa non è la sede.
    Per cui il mio obiettivo è quello di inviare un file grezzo da far interpretare ad Arduino e famiglia di microprocessori con del testo separato da ";" che verrà interpretato appositamente per visualizzare scritte o inviare dati per accensioni e spegnimenti vari.
    Il file base è PHP index.php, appoggiato ad un file data.txt.
    Naturalmente se desideri testarlo devi creare un file data.txt contenente:

    0;0

    niente altro. Il file data.txt serve per recuperare gli stati e le scritte inserite precedentemente per evitare di rieditarle tutte, ci sono anche testi di lunghezza sino a 200 caratteri che NON ho messo nel codice che seguirà.
    Il codice in linea di massima funziona.
    Ho fatto delle modifiche al tuo per adattarlo alle mie esigenze e mi sembra che sin qui vada abbastanza bene (nota bene il testo fisso è stato trasformato come 1 o 0, attivato non attivato, ma mi va bene anche così.

    Col ricaricamento della pagina riesco a riprendere i valori introdotti precedentemente, e questo va bene, ma se chiudo la
    pagina e la riapro mi prende valori non corretti e vedo attive le opzioni.

    Non riesco a capire questo comportamento, ignora del tutto prima parte del file in php che dovrebbe ricaricarmi le variabile già immesse, dove sbaglio?
    Purtroppo non so fare di meglio, evidentemente sono proprio un principiante.

    Se hai la pazienza di guardare e sperimentare il mio codice ti ringrazio in anticipo.

    Tutto il codice ho dovuto metterlo sotto in 2 parti:
    Ultima modifica di patdepri; 04-12-2023 a 19:10

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    codice HTML:
    <?php
        // Recupera i valori precedenti
        $myfile  = fopen("data.txt", "r") or die("Unable to open file!");
        $read = fread($myfile,filesize("data.txt"));
        echo "--- Ripristina Data ---<br><br>";
        $separator = ";";
        $divide = explode($separator, $read);
        echo $divide[0];    
        $fixed_text_1 = $divide[0];
        echo "<br>";
        echo $divide[1];
        $checkbox1 = $divide[1];
        echo "<br>";
    
        fclose($myfile);
    ?>
    <!DOCTYPE HTML>
    <html lang="it">
        <head>
            <title>Esempio</title>
    
        </head>
        <body> <font size="3" face="Verdana">
            <form action="index.php" method="post">
                <div style="overflow-x: auto;">
                    <table>
                        <tr>
                            <th>Table</th>        
                        </tr>
                        <tr>
                            <td>Fixed text</td>
                            <td>
                                <input type="checkbox" name="fixed_text_1" value="1" <?php if($fixed_text_1 == "1") echo "checked"; ?>> Example 1
                            </td>
                        </tr>
                        <tr>
                            <td>Toggle switch 1</td>
                            <td>
                                <label class="toggle">
                                    <input type="checkbox" name="checkbox1" <?php if($checkbox1 == "1") echo "checked"; ?>>
                                    <span class="labels" data-on="ON" data-off="OFF"></span>
                                </label>
                            </td>
                        </tr>
                        <tr>
                            <td>Submit data</td>
                            <td> 
                                <input class="favorite styled" type="submit" name="confirm" value="Enter data">
                            </td>
                        </tr>
                    </table>
                </div>
            </form>
        </body>
    </html>
    
    <?php
        if(isset($_POST["confirm"])){
            // echo "<br><br>--- Preview Enter Data ---<br><br>";
            if(isset($_POST["fixed_text_1"])){
                $fixed_text_1 = "1";
                // echo $fixed_text_1;
                // echo "<br>";
            } else {
                $fixed_text_1 = "0";
                // echo $fixed_text_1;
                // echo "<br>";
            }
            if(isset($_POST['checkbox1'])){
                $checkbx1 = "1";
                // echo $checkbox1;
                // echo "<br>";
            } else {
                $checkbx1 = "0";
                // echo $checkbox1;
                // echo "<br>";
            }
        } else {
            // Non fare nulla  -----------echo"<br>";
        }
        echo "<br><br>--- Enter Data ---<br><br>";
        echo $fixed_text_1."<br>".$checkbx1."<br>";
    ?>
    
    
    <?php
        /*azzera il file*/
        file_put_contents('data.txt', '');
    
        /*stampa a schermo il file*/
        echo "<br><br>--- Preview raw data loaded on data.txt ---<br><br>";
        echo $fixed_text_1."<br>".$checkbx1."<br>";
    
        $fp = fopen('data.txt', 'a');
    
        /*registra il file*/
        $all_data = $fixed_text_1.";".$checkbx1;
    
        fwrite($fp, $all_data,);
        fclose($fp);
    ?>
    Ultima modifica di patdepri; 04-12-2023 a 19:01

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    Ho tolto i CSS che metto qui:

    <style>
    p {
    font-size: 14px;
    }
    .toggle {
    --width: 100px;
    --height: calc(var(--width) / 3);
    position: relative;
    display: inline-block;
    width: var(--width);
    height: var(--height);
    box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.3);
    cursor: pointer;
    }

    .toggle input {
    display: none;
    }
    .toggle .labels {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    font-size: 15px;
    font-family: sans-serif;
    transition: all 0.4s ease-in-out;
    overflow: hidden;
    }
    .toggle .labels::after {
    content: attr(data-off);
    position: absolute;
    display: flex;
    justify-content: center;
    align-items: center;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    color: #ffffff;
    background-color: #ff0000;
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.4);
    transition: all 0.4s ease-in-out;
    }
    .toggle .labels::before {
    content: attr(data-on);
    position: absolute;
    display: flex;
    justify-content: center;
    align-items: center;
    top: 0;
    left: calc(var(--width) * -1);
    height: 100%;
    width: 100%;
    color: #ffffff;
    background-color: rgb(0, 207, 0);
    text-align: center;
    text-shadow: 1px 1px 2px rgba(35, 35, 35, 0.689);
    transition: all 0.4s ease-in-out;
    }
    .toggle input:checked~.labels::after {
    transform: translateX(var(--width));
    }
    .toggle input:checked~.labels::before {
    transform: translateX(var(--width));
    }
    input[type="text"]{
    background-color: rgba(127, 254, 0, 0.218);
    padding: 5px 5px;
    border-radius: 0px;
    color: rgb(0, 0, 0);
    font-size: 14px
    }
    table {
    font-family: verdana, sans-serif;
    border-collapse: collapse;
    width: 100%;
    }
    td {
    border: 1px solid #dddddd;
    text-align: center;
    padding: 8px;
    }
    tr:nth-child(even) {
    background-color: #dddddd;
    }
    .styled {
    border: 0;
    line-height: 2.5;
    padding: 0 15px;
    font-size: 15px;
    text-align: center;
    color: #fff;
    /*text-shadow: 1px 1px 1px #000;*/
    border-radius: 0px;
    background-color: rgba(1, 226, 255, 1);
    background-image: linear-gradient(to top left, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2) 30%, rgba(0, 0, 0, 0));
    box-shadow:
    inset 0px 0px 0px rgba(255, 255, 255, 0.6),
    inset 0px 0px 0px rgba(0, 0, 0, 0.6);
    }
    .styled:hover {
    background-color: rgba(1, 255, 6, 1);
    }
    .styled:active {
    box-shadow:
    inset -2px -2px 3px rgba(255, 255, 255, 0.6),
    inset 2px 2px 3px rgba(26, 170, 2, 0.6);
    }
    textarea {
    font-size: 1.2em;
    border: 1px solid black;
    }
    </style>
    Ultima modifica di patdepri; 04-12-2023 a 19:05

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ho analizzato il tuo codice e direi che, tra le varie cose da correggere, ce ne sono alcune fondamentali per fare in modo che il sistema possa funzionare quantomeno discretamente.

    1) Allineare la gestione dei dati, tra lettura e scrittura, con la costruzione del form

    Hai inserito le varie parti di PHP senza seguire una logica lineare che possa integrarsi correttamente anche col relativo HTML. Tutto il codice PHP sarebbe meglio metterlo PRIMA della creazione del form HTML in modo che le variabili, relative ai dati appena salvati o caricati, risultino disponibili e correttamente valorizzate per la creazione del form costruito a seguire.

    Inoltre, se lo stesso PHP restituisce del codice HTML da mostrare a video (anche qualora fosse giusto per mostrare i risultati delle variabili, come nel tuo caso) è bene che tali risultati siano inseriti sempre dentro il body (tra i tag <body></body>). In caso contrario si otterrebbe un HTML malformato e non valido che potrebbe generare dei problemi di impaginazione o dei malfunzionamenti.

    2) Salvare i dati solo quando necessario

    La parte di PHP usata per salvare i dati viene eseguita ogni volta che viene caricata la pagina, anche se non avviene alcun submit.
    Chiaramente questo non va bene. I dati devi salvarli solo quando avviene il submit del form, quindi quella parte di PHP va posta dentro la condizione if(isset($_POST["confirm"]))
    Nel tuo codice vedo invece che sta fuori.

    3) Caricare i dati solo quando necessario

    La parte di PHP che legge i dati puoi invece eseguirla quando NON avviene quella condizione, cioè nel relativo else di quella stessa condizione.
    Infatti, quando i dati vengono salvati perché la pagina è richiamata attraverso il submit, non hai bisogno di andare a ricaricarli; quelle variabili le hai già disponibili dal momento che le stai usando per salvare i relativi valori.

    4) Impedire il ripristino dei campi attraverso l'autocomplete per evitare confusione

    I moderni browser "conservano in cache", di default, le impostazioni che l'utente applica per i campi di un form, a prescindere che avvenga o meno il submit.

    Se l'utente ha effettuato dei cambiamenti per quei checkbox, SENZA però eseguire il submit, è plausibile che tali scelte siano ripristinate quando la pagina viene ricaricata o riaperta successivamente; in tal caso i dati salvati non coincideranno con quelle scelte ripristinate.

    Questo potrebbe generare confusione perché ci si aspetta che i il form risulti sempre configurato secondo i dati salvati, ogni qualvolta sia aperta o ricaricata quella pagina.

    Per impedire che il browser peschi dalla cache, è possibile definire l'attributo autocomplete="off" per i singoli campi <input> o direttamente per il tag <form>.

    5) Impedire il messaggio "Conferma reinvio modulo" al refresh della pagina

    Dopo che viene eseguito il submit, per un form in cui è stato impostato il metodo POST, se si tenta di aggiornare la finestra per ricaricare la pagina, di norma sarà rieseguito il submit. Tuttavia il browser chiederà, attraverso una finestra modale, di confermare il reinvio del modulo.

    Per evitare questo comportamento è possibile agire in vari modi. Ne accenno qualcuno:
    - usare il metodo GET anziché POST;
    - usare AJAX o sistemi affini per scrivere i dati in background;
    - usare JavaScript per manipolare la cronologia di navigazione e bypassare il reinvio.

    ---

    Per il momento integro quest'ultimo metodo JavaScript e riporto qui sotto il codice secondo quanto indicato (per sintesi ho sostituito con dei commenti le altre parti accessorie):

    Codice PHP:
    <!DOCTYPE HTML>
    <html lang="it">
      <head>
        <title>Esempio</title>
        <style>
        /* Eventuale CSS */
        </style> 
        <script>
          // Bypass "Conferma reinvio modulo" al refresh della pagina
          if (window.history.replaceState) window.history.replaceState( null, null, window.location.href );
        </script>
      </head>
        <body>
    <?php
      
    if(isset($_POST["confirm"])){
      
    // Se la pagina è stata richiamata tramite submit
        
        // Recupero i valori dal form
        
    $fixed_text_1 = isset($_POST["fixed_text_1"]) ? "1" "0";
        
    $checkbox1 = isset($_POST["checkbox1"]) ? "1" "0";

        
    // Registro i dati sul file txt
        
    file_put_contents('data.txt''');
        
    $fp fopen('data.txt''a');
        
    $all_data $fixed_text_1.";".$checkbox1;
        
    fwrite($fp$all_data,);
        
    fclose($fp);

        echo 
    "--- Dati salvati ---<br><br>";

      } else {
      
    // Se invece la pagina è stata aperta normalmente
        
        // Leggo i dati salvati nel file txt
        
    $myfile  fopen("data.txt""r") or die("Unable to open file!");
        
    $read fread($myfilefilesize("data.txt"));
        
    $divide explode(";"$read);
        
    fclose($myfile);
        
        
    // Riporto i valori per ripristinare il form
        
    $fixed_text_1 $divide[0];
        
    $checkbox1 $divide[1];

        echo 
    "--- Dati ripristinati ---<br><br>";
      }
      
    // Anteprima dei dati grezzi
      
    echo $fixed_text_1."<br>".$checkbox1."<br>";
    ?>
          <!--
            Costruzione del form 
            NOTA: autocomplete="off" impedisce di ripristinare le ultime scelte effettuate anche se non risultano salvate
          -->
          <form action="index.php" method="post" autocomplete="off">
             <hr><input type="checkbox" name="fixed_text_1" value="1"  <?php if($fixed_text_1 == "1") echo "checked"?>> Example 1
            <br><input type="checkbox" name="checkbox1" <?php if($checkbox1 == "1") echo "checked"?>>
            <hr><input class="favorite styled" type="submit" name="confirm" value="Enter data">

            <!--
              ... il resto del codice HTML
            -->
          </form>
        </body>
    </html>

    Per ora è tutto, prova ad integrarlo nel tuo progetto e fai sapere.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17

    Per ora è tutto, prova ad integrarlo nel tuo progetto e fai sapere.
    Grazie prima di tutto della tua disponibilità e competenza.
    Ho letto attentamente i consigli e le indicazioni fornite e ho già imparato molte cose, purtroppo le mie competenze sono ancora lungi a venire, ma anch’io avevo capito che la sequenza delle chiamate non era corretta e dall’ultimo esempio che hai fatto ho visto e compreso certi meccanismi.
    Ho testato il codice e purtroppo il difetto della chiusura e riapertura si ripresenta come prima, infatti va a richiamare probabilmente il primo stato.
    Il browser tiene evidentemente ancora in memoria il primo salvataggio dei dati e sembra proprio che la rilettura delle variabili venga bypassata.
    Ho provato a sostituire POST con GET, ma nulla.


    Dalla mia ignoranza autocomplete="off" teoricamente non dovrebbe esserci perché altrimenti come fa a caricare i dati prelevati dal file data.txt?


    L’unica cosa che posso intuire è che nella riapertura della finestra del browser, il file data.txt sembra proprio che non venga riletto, ma vengano rilette le variabili in memoria.
    Assurdo, ma credo sia così.
    Occorre azzerare le variabili nel browser e forzare la rilettura del file, "credo".


    Mi sono dimenticato di dire che sto testando il tutto con versione php 8 su un server esterno non in locale.
    Grazie ancora, ma non so cosa dire d’altro e cosa fare.

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Scusa il ritardo ma non avevo visto la tua risposta; ogni tanto il forum fa le bizze e non segna l'ultimo post nel riepilogo delle discussioni.

    Non so se nel mentre hai risolto qualcosa, in caso contrario bisognerebbe andare per gradi per per risalire alle eventuali cause del problema.

    Quote Originariamente inviata da patdepri
    Dalla mia ignoranza autocomplete="off" teoricamente non dovrebbe esserci perché altrimenti come fa a caricare i dati prelevati dal file data.txt?
    No, è solo una funzionalità del browser ed è indipendente da altri eventuali sistemi aggiunti dallo sviluppatore per salvare/caricare i dati nei campi.

    L'attributo html autocomplete indica al browser se fornire all'utente opzioni per il completamento basate su quanto l'utente stesso ha precedentemente immesso in un campo e se mantenere memorizzato il valore immesso per il futuro, a prescindere che tali valori siano o no salvati da qualsivoglia sistema.

    Anche se nel tuo caso, all'apertura della pagina, i campi vengono forzatamente ripopolati attraverso il tuo sistema, è possibile che le scelte visualizzate non coincidano con quelle salvate se l'utente non aveva eseguito il submit. In tal caso con un refresh della pagina, o se questa viene ripristinata all'apertura del browser, saranno mostrate le ultime scelte applicate dall'utente, sebbene non risultino salvate.

    Forse da un lato è una funzionalità che potrebbe anche tornare utile, ma nel caso si dovrebbe avvertire l'utente in qualche modo che le modifiche effettuate non risultano essere state salvate.
    Diversamente questo potrebbe creare confusione, per tale motivo a mio parere in questo caso è meglio semplicemente mantenere disattivato l'autocomplete.

    Quote Originariamente inviata da patdepri
    L’unica cosa che posso intuire è che nella riapertura della finestra del browser, il file data.txt sembra proprio che non venga riletto, ma vengano rilette le variabili in memoria.
    E' possibile che il problema principale sia nella scrittura o lettura del data.txt.
    Il fatto che vengano applicate le scelte "in memoria" potrebbe dipendere appunto dall'autocomplete (che da quanto intuisco non lo hai disattivato).

    Quote Originariamente inviata da patdepri
    purtroppo il difetto della chiusura e riapertura si ripresenta come prima
    Non per sfiducia nei tuoi confronti ma è sempre meglio riportare sul forum il codice da te modificato in modo da poter avere un riscontro più preciso di ciò che hai fatto.

    Puoi postare giusto la parte PHP/HTML, anche senza CSS, rimuovendo magari le parti non strettamente necessarie.

    Quote Originariamente inviata da patdepri
    sembra proprio che la rilettura delle variabili venga bypassata
    Hai verificato che avvenga comunque la scrittura?

    Dovresti verificare i permessi di scrittura/lettura del file data.txt e della relativa cartella.

    Se usi un client FTP dovresti poter verificare/modificare i permessi attraverso il menu contestuale dei singoli file/cartelle.

    Dove stai pubblicando il tuo elaborato?
    Tieni conto che alcuni servizi di hosting mettono a disposizione una specifica cartella pubblica con permessi di lettura e scrittura.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Scusa il ritardo ma non avevo visto la tua risposta; ogni tanto il forum fa le bizze e non segna l'ultimo post nel riepilogo delle discussioni.

    Non so se nel mentre hai risolto qualcosa, in caso contrario bisognerebbe andare per gradi per per risalire alle eventuali cause del problema.
    Carissimo buona sera,
    prima di tutto devo ringraziarti ancora per la tua disponibilità, di essere persona di parola e che non abbandona la discussione quando dall’altra parte si chiede aiuto (chi chiede aiuto ha sempre bisogno di risposte concrete).
    In questi giorni, visto che non avevi postato altro, ho pensato che ci fosse qualche problema, così nel frattempo 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.


    Ci sono effettivamente dei modi per eseguire un reset di files e altre cose vedi:


    Tip: Functions that are caching:


    PHP clearstatcache() Function


    stat()
    lstat()
    file_exists()
    is_writable()
    is_readable()
    is_executable()
    is_file()
    is_dir()
    is_link()
    filectime()
    fileatime()
    filemtime()
    fileinode()
    filegroup()
    fileowner()
    filesize()
    filetype()
    fileperms()


    ma di variabili in memoria del browser: nulla tranne l’intervento manuale che ho trovato da qualche parte in rete e che riporto esattamente:


    Come Forzare il Refresh di una Singola Pagina


    Prima di cancellare l’intera cache del browser, un trucco che potete provare è quello del “force refresh”. Di solito, quando si aggiorna una pagina, il browser serve ancora la versione in cache della pagina invece di scaricare di nuovo tutte le risorse. Ma è possibile bypassare la cache e forzare un aggiornamento completo utilizzando alcuni semplici tasti di scelta rapida:


    Browser Windows e Linux: CTRL + F5
    Apple Safari: SHIFT + pulsante della barra degli strumenti Reload
    Chrome e Firefox per Mac: CMD + SHIFT + R
    Ripetiamo, questo metodo bypassa la cache solo per la pagina specifica su cui vi trovate. Lascia il resto della cache del browser intatta. Pertanto, questa soluzione è ottima se si verificano problemi con una sola pagina. Ma se volete resettare completamente (ad esempio, per un intero sito), è meglio cancellare l’intera cache del browser.


    Comunque la tal cosa sopra menzionata a me NON VA BENE in questo caso perché ho bisogno di usare il mio file anche su iPhone, senza incertezze, non posso usare i metodi sopra menzionati.


    Allora mi sono convinto di una cosa, ho esaminato il comportamento del mio (più tuo) lavoro e ho visto che quando chiedevo il ripristino dei dati con alcune modifiche e in certe circostanze i valori non variavano.


    Allora... perché non mettere un altro form con l’intento di recuperare i dati?


    Evvaiiiiii in questo modo ho visto che al caricamento della pagina cliccando sul benedetto Reload Data... Tadaaaaaa i dati erano sempre lì a fare il loro dovere.


    Questo mi ha anche permesso di:
    - scegliere di recuperare i dati
    - oppure di iniziare tutto da zero


    Grazie per la tua pazienza e ti allego sommariamente il codice di seguito.


    Ma domani ti devo chiedere una cosettina ancora abbastanza banale.


    Il tutto è caricato su A..ba, lavora in https:// e php 8 posso controllare permessi e altro, ma non era questo il problema.

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2023
    Messaggi
    17
    Credo di aver ricostruito il tutto, ma mi sembra che sia corretto:

    codice:
    <!DOCTYPE HTML><html lang="it">
      <head>
        <title>Esempio</title>
        <link rel="stylesheet" href="./style.css">
      </head>
      <?php
      if(isset($_POST["reload_data"])){
        // Leggo i dati salvati nel file txt
          $myfile  = fopen("data.txt", "r") or die("Unable to open file!");
          $read = fread($myfile, filesize("data.txt"));
          $divide = explode(";", $read);
          fclose($myfile);
          
          // Riporto i valori per ripristinare il form
          $fixed_text_1 = $divide[0];
          $checkbox1 =    $divide[1];
          $_POST["fixed_text_1"];
          $_POST["checkbox1"];
      
          echo "--- Dati ripristinati ---<br><br>";
          // Anteprima dei dati grezzi
        echo $fixed_text_1."<br>".$checkbox1."<br>";
        }
        
        if(isset($_POST["enter_data"])){
          // Se la pagina è stata richiamata tramite submit
          
          // Recupero i valori dal form
          $fixed_text_1 = isset($_POST["fixed_text_1"]) ? "1" : "0";
          $checkbox1    = isset($_POST["checkbox1"]) ?    "1" : "0";
          
          // Registro i dati sul file txt
          file_put_contents('data.txt', '');
          $fp = fopen('data.txt', 'a');
          $all_data = $fixed_text_1.";".$checkbox1;
          fwrite($fp, $all_data,);
          fclose($fp);
          echo "--- Dati salvati ---<br><br>";
          }
      ?>
              <!--
              ... ho messo il codice HTML in una tabella che nel mio caso comprende diversi elementi
            -->
            <form action="index.php" method="post">
               <hr><input type="checkbox" name="fixed_text_1" value="1"  <?php if($fixed_text_1 == "1") echo "checked"; ?>> Example 1
              <br><input type="checkbox" name="checkbox1" <?php if($checkbox1 == "1") echo "checked"; ?>>
              <hr><input class="favorite styled" type="submit" name="enter_data" value="Enter data">
      
            </form>
            <form action="index.php" method="post">
                <hr><input class="favorite styled" type="submit" name="reload_data" value="Reload data">
            </form>
            
            <!--
                ... ho messo il codice HTML in una tabella che nel mio caso comprende diversi elementi
              -->
          </body>
      </html>

    Così funziona "alla grande".

    Accetto consigli nel caso ti sembri non sequenzialmente corretto o altro, sono qui per imparare.

    Tieni conto che passare da html a php passando anche per C e compagnia bella trovo abbastanza confuse certe scelte.
    In questo campo (php) sto imparando da zero e il codice che avevo postato all’inizio era creato fondamentalmente da me con pochissime scopiazzature.

    Buona serata e buona pazienza.
    Ultima modifica di patdepri; 07-12-2023 a 23:28

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.