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

    Php duplica righe di una table ad ogni refresh della pagina

    Ciao a tutti .....ho bisogno di voi


    Ho creato un banale form dove registrare ogni giorno la mia pressione arteriosa


    DATA - MATTINA /SERA - MASSIMA - MINIMA -PULSAZIONI - ORARIO ...... ed un pulsante REGISTRA per inviare i dati al db


    Tutto funziona correttamente , io inserisco i dati nel form e correttamente vengono inseriti nel db e poi visualizzati al disotto del form stesso, all' interno della stessa pagina in una riga di una tabella.


    IL PROBLEMA : E' che ad ogni refresh della pagina viene duplicata l'ultima riga inserita , nonostante i campi del form siano vuoti . Anche cliccando sul pulsante REGISTRA , senza aver compilato nulla ,
    succede la stessa cosa !!!....


    ...........QUESTO E' IL PEZZETTINO DI CODICE DI APERTURA CHE HO SCRITTO ......................

    Codice PHP:
    ?php 
    ob_start
    ();session_start();

    // Includo la connessione al database
    require('config.php');
    ?> 

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>    
          <head>        
             <link rel="stylesheet" media="screen" href="PICCOLOri.css"/>        
                 <link rel="stylesheet" media="screen and (min-width: 1800px)" href="GRANDEri.css"/>                    <title>Misurazione Pressione</title>                
        <meta http-equiv="content-type" content="text/html; charset=utf-8">                
    <meta name="generator" content="HAPedit 3.0"> 

    .....Poi ho composto il form e le le varie query e tabelle per la registrazione e visualizzazione dei dati .

    Alla fine chiudo il tutto così...

    Codice PHP:
    mysqli_close($connessione);?>

                   </table>
                  </div>
                </div>
              </div> 
           </body>
    </html>

    <?php ob_end_flush();?>

    In giro nel web non ho trovato nulla che potesse aiutarmi , qualcuno potrebbe darmi una mano a risolvere la cosa ?


    Grazie in anticipo!

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Visto che il codice non è completo, tiro a indovinare:
    Se fai tutto in una pagina (form + salvataggio su db), dopo il primo post (il submit della form) il browser ha in "memoria" l'ultima azione (http request) fatta (l'invio del dei dati). Se fai il refresh il browser ripete questa azione, quindi è come se rinviassi di nuovo i dati postati in precedenza.
    Puoi ovviare in diversi modi, ma ti consiglio di separare le operazioni in due pagine. Nella prima mostri i dati ed il form. l'action del form porta alla seconda dove salvi i dati e alla fine fai un redirect alla prima pagina.
    Ultima modifica di boots; 23-01-2024 a 11:26

  3. #3
    Ciao boots, grazie per la risposta

    in realtà preferirei mantenere il tutto su un unica pagina , "svuotando" la memoria del browser.
    Mi era già capitato in un altro progetto praticamente uguale ...... ma molti anni fa ..... ed un amico mi aveva risolto il problema , ma non ho più modo di contattarlo ne di andarmi a guardare il vecchio progetto per capire .

    Non sapresti come potrei fare per mantenere tutto su un unica pagina ?

    Anche perchè non ho ben capito, dovrei mettere su una pagina " A " il form da compilare che una volta inviati mi indirizza ad una pagina " B "dove ho l'elenco dei dati inseriti e per poi ritornare al form dovrei praticamente tornare indietro con la freccetta del browser?

    Scusa la banalità delle mie domande ma sono solo un amatore che cerca di fare delle cosette in html/php ...... certo non sono un esperto

    Grazie ancora

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Allora, esattamente dopo aver fatto l'inserimento nel database, aggiungi

    header('Location: '.$_SERVER['PHP_SELF']);
    die;

    Tieni presente però che potresti avere un errore del tipo "header already sent". In questo caso dovresti riorganizzare il tuo codice mettendo per prima cosa il salvataggio nel db

    Facendo con due pagine avresti qualcosa del tipo:
    - pagina_a.php

    <form action="pagina_b.php>
    ...i tuo campi da salvare
    </form>
    ... codice per stampare i record nel db

    -pagina_b.php
    codice per salvare i dati sul db
    header('Location: pagina_a.php'); //dopo il salvataggio torni alla pagina a, che rileggerà il db e mostrerà il record nuovo

  5. #5
    Grazie per la pronta risposta.....

    appena posso provo e ti faccio sapere

    grazie

  6. #6
    Quote Originariamente inviata da boots Visualizza il messaggio
    allora, esattamente dopo aver fatto l'inserimento nel database, aggiungi

    header('location: '.$_server['php_self']);
    die;
    Ho provato questo dei tuoi metodi che mi hai indicato e .......sembra funzionare!!!!!!

    GRAZIE DAVVERO PER IL SUPPORTO

    UN SALUTO!!!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.