Eliminare resubmit form la refresh

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sterica
Mesaje: 285

Eliminare resubmit form la refresh

Salutare,

Am urmatorul cod:

Cod: Selectaţi tot

<?php
if(isset($_POST['submit'])){
    $an             = $_POST['an'];
    $id_furnizor    = $_POST['id_furnizor'];

    $array_fnc = getValoriFacturiFurnizori($database, $an, $id_furnizor);

    if(array_key_exists($id_furnizor, $array_fnc)) {
        $test = $array_fnc[$id_furnizor][2];
    }
    else {
        $test = 'nu sunt valori';
    }

}
?>
<form action="" method="post">
        <select name="an" class="selectpicker">
            <?php
                $primul_an = date ("Y")-5;
                $ultimul_an = date ("Y");
                for( $i = $primul_an; $i <= $ultimul_an; $i++ ) {
                    $selected_an = ($ultimul_an == $i) ? 'selected="selected"' : '';
                    echo "<option $selected_an value='$i'>$i</option>\n";
                };
            ?>
        </select>
        <select id="id_furnizor" name="id_furnizor" class="selectpicker" data-live-search="true">
            <?php
                foreach (getFurnizori($database) as $index => $value){
                    echo "<option value='$index' >$value</option>";
                }
                ?>
        </select>
        <script type="text/javascript">
            document.getElementById('id_furnizor').value = "<?php echo $_POST['id_furnizor'];?>";
        </script>
        <input name="submit" type="submit" class="btn btn-info" />
    </form>
    <?php echo $test; ?>
Problema mea apare in momentul in care dau refresh paginii web, in chrome apare mesaul: confirm form resubmission

Cum pot elimina acest mesaj?

Multumesc!

MarPlo Mesaje: 4343
Salut
Dupa ce sunt prelucrate instructiunile pentru datele trimise in $_POST, de la formular, aplici din php un redirect la acea pagina (sau alta care vrei sa se deschida):

Cod: Selectaţi tot

if(isset($_POST['submit'])){
  //...
  header('Location: '. $_SERVER['REQUEST_URI']);
  exit;
}

sterica Mesaje: 285
La sfarsitul codului am un echo $test, variabila ce se afla in:

Cod: Selectaţi tot

if(isset($_POST['submit'])){
- acel exit face ca variabila sa nu mai fie recunoscuta.

MarPlo Mesaje: 4343
In situatia de afisare text dupa Submit, se poate face asa:
1. Inainte de header() se adauga textul intr-un $_SESSION.
2. Dupa redirect, se afiseaza in acea pagina textul din acel $_SESSION, apoi se sterge.

- Cam asa:

Cod: Selectaţi tot

if(!isset($_SESSION)) session_start();

if(isset($_POST['submit'])){
  //...
  $_SESSION['txt_smt'] ='textul de afisat';
  header('Location: '. $_SERVER['REQUEST_URI']);
  exit;
}

if(isset($_SESSION['txt_smt'])){
  echo $_SESSION['txt_smt'];
  unset($_SESSION['txt_smt']);
}

Subiecte similare