Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832

    Non far re-inviare un form a refresh

    domanda semi banale, solo che non so come risolvere.
    in una pagina c'è un form che aggiorna un campo di un database.
    invio i dati, aggiornamento con successo, ma i campi rimangono li in agguato.
    se premo aggiorna pagina mi reinvia il form.
    come posso fare?

    Codice PHP:
    if(isset($_POST['commenta']) && $_POST['commenta'] == 'Aggiungi commento'){
        
    $updt mysql_query("UPDATE foto SET commento='".addslashes($_POST['commento'])."' WHERE id_foto='".$_POST['hid_foto']."' LIMIT 1");
        if(
    $updt){
            echo 
    "<script language='javascript'> alert(\"Commento inserito con successo\");</script>";
            }
        else{die(
    mysql_error());}
        unset(
    $_POST['commenta']);
        
    $_POST['commenta'] == '';
        } 
    avevo forzato, a fine procedura la cancellazione della variabile $_POST, ma non funziona
    idee?

    grazie.

  2. #2
    Il metodo più usato è quello di redirigere l'utente su un'altra pagina dopo aver processato i dati, in modo tale che se aggiorna la pagina vedrà solo quest'ultima pagina.

  3. #3
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    eh si quello lo sapevo, ma mi farebbe davvero piacere rimanere nella stessa pagina.
    come posso fare?

  4. #4
    L'alternativa sarebbe di creare un session cookie con un valore quando appare la form, e poi cancellare questo valore quando la form è inviata.
    Così lo script può controllare l'esistenza del cookie prima di procedere.

  5. #5
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    Originariamente inviato da WebHosting.it
    L'alternativa sarebbe di creare un session cookie con un valore quando appare la form, e poi cancellare questo valore quando la form è inviata.
    Così lo script può controllare l'esistenza del cookie prima di procedere.
    grazie così ho risolto al 90%.
    nel senso che i dati NON vengono piu reinviati:
    Codice PHP:
    if(isset($_POST['commenta']) && $_POST['commenta'] == 'Aggiungi commento'){
        if(isset(
    $_COOKIE['commento']) && $_COOKIE['commento'] == 'inviato'){
            
    $updt mysql_query("UPDATE foto SET commento='".addslashes($_POST['commento'])."' WHERE id_foto='".$_POST['hid_foto']."' LIMIT 1");
            if(
    $updt){
                echo 
    "<script language='javascript'> alert(\"Commento inserito con successo\");</script>";
                }
            else{die(
    mysql_error());}
            unset(
    $_POST['commenta']);
            
    $_POST['commenta'] == '';
            
    setcookie('commento','',-3600);
            unset(
    $_COOKIE['commento']);
            }
        } 
    avendo generato un cookie con un javascript :
    codice:
    function biscotto(){
    	document.cookie="commento=inviato";
    	}
    ...
    <form>
    ...
    <input type='submit' name='commenta' value='Aggiungi commento' onclick='biscotto();'>
    </form>
    l'unica scocciatura che mi è rimasta è che mi rimane il messaggio di avvertimento del browser che vorrei evitare...
    come si può ovviare?

    grazie

  6. #6
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    die();

  7. #7
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    Originariamente inviato da fostex
    die();
    eh ma col die, non mi finisce piu il resto dello script e la pagina non ricompare

  8. #8
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    Allora puoi provare:

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

    se ti da errore metti all'inizio della pagina:

    ob_start();

  9. #9
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    allora. se inserisco l'header subito dopo l'aggiornamento del database, ovviamente ricevo l'errore degli header. (alredy sent etc..)
    se metto ob_start(); ad inizio pagina perdo le informazioni sulla pagina stessa.
    visto che mando via form la stringa attaccata all'url (non mi ricordo come si chiama! )
    tipo: pagina_form.php?variabili=pippo (per capirci)
    se metto ob_start() ricarcia solo pagina_form.php...

  10. #10
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    all'inizio della pagina prima di tutto:

    <?php
    ob_start();
    ecc..

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.