[PHP] problema con l'utilizzo di Header

Discussione in 'PHP' iniziata da gandalf1959, 5 Luglio 2019.

  1. gandalf1959

    gandalf1959 Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    194
    Mi Piace Ricevuti:
    1
    Punteggio:
    18
    Buongiorno,
    Panorama:
    Database di ricette, suddivise su diverse tabelle (informazioni generali, ingredienti, procedimenti, foto).
    Ho sistemato tutta la parte di inserimento e va tutto bene.
    Ora sto affrontando le variazioni (se devo cambiare un titolo, un procedimento, un ingrediente eccetera).
    Per fare questo ho scritto questa semplice paginetta:
    PHP:
    <?php
    session_start
    ();
    //se non c'è la sessione registrata
    mb_internal_encoding('UTF-8');
    if (!
    $_SESSION['autorizzato']) {
      echo 
    "<h1>Area riservata, accesso negato.</h1>";
      echo 
    "Per effettuare il login clicca <a href='index.php'><font color='blue'>qui</font></a>";
      die;
    }
     
    //Altrimenti Prelevo il codice identificatico dell'utente loggato

    $cod $_SESSION['cod']; //id cod recuperato nel file di verifica


    ?>



    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Variazione date lezioni di cucina</title>
    <link href="backoffice.css" rel="stylesheet" type="text/css" />



    </head>

    <body>

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

    <p>Inserisci il numero della ricetta: <input type="text" name="codicericetta"></p>

    <hr>
    Vuoi variare:<br><br>

    <p><input type="radio" id="datigenerali" name="varia" value="1"><label for="datigenerali">Generali</label></p>
    <p><input type="radio" id="ingredienti" name="varia" value="2"><llabel for="ingredienti">Ingredienti</label></p>
    <p><input type="radio" id="procedimento" name="varia" value="3"><label for="procedimento">Procedimento</label></p>

    <input type="submit" name="vai" value="Modifica">

    </form>



    <?

    if (isset($_POST['vai'])){
    scegli();
    }


    function scegli() {
        if ($varia === "1") {
            header("location: /aggiorna_ricette.php");
        }
        if ($varia === "2") {
            header("location: /aggiorna_ingredienti.php");
        }
        if ($varia === "3") {
            header("location: /aggiorna_procedimento.php");
        }
    }



    ?>




    </body>
    </html>
    Fino a che inviavo direttamente a una delle pagine (azione del form: aggiorna_ricette.php) tutto andava bene.
    Poi, visto che l'esposizione dei dati da variare cambia parecchio, ho pensato di fare tre pagine diverse per la variazione di "Informazioni generali", "Ingredienti" e "Procedimenti" quindi di cambiare l'azione del form come la vedete adesso nella pagina postata sopra.

    Quando clicco sul pulsante "Modifica" però non succede nulla... o meglio pare che si ricarichi sempre questa pagina.

    Come mai? Forse l'utilizzo della funzione header non è adatto?

    Domanda a margine: per non tediarvi con domande ogni 5 minuti, esiste la possibilità di "vedere" cosa succede quando clicco su un pulsante per esempio? Un aiuto nel debugging, insomma... Così magari nel frattempo imparo anche qualcosa :)

    Grazie per ogni suggerimento
     
  2. Tommy03

    Tommy03 Utente Attivo

    Registrato:
    6 Giugno 2018
    Messaggi:
    69
    Mi Piace Ricevuti:
    5
    Punteggio:
    8
    Sesso:
    Maschio
    Non so se è questo il problema, ma sembra che ti manchi la riga
    PHP:
    $varia $_POST['varia'];
    per ottenere il valore dell'input
     
  3. mr.x

    mr.x Utente Attivo

    Registrato:
    9 Aprile 2016
    Messaggi:
    214
    Mi Piace Ricevuti:
    22
    Punteggio:
    28
    rileggi bene il codice php..
    ti sei dimenticato di passare i valori delle radio.... se controlli i log troverai scritto che $varia non è valorizzata.

    PHP:
    <?php
    if (isset($_POST['vai'])){
    scegli($_POST['varia']);  // <--- valore passato dal form e inviato alla funzione
    }


    function 
    scegli($varia) {   // <---- recupero il valore passato dal form
        
    if ($varia === "1") {
            
    header("location: /aggiorna_ricette.php");
        }
        if (
    $varia === "2") {
            
    header("location: /aggiorna_ingredienti.php");
        }
        if (
    $varia === "3") {
            
    header("location: /aggiorna_procedimento.php");
        }
    }
    ?>
     
  4. gandalf1959

    gandalf1959 Utente Attivo

    Registrato:
    21 Novembre 2013
    Messaggi:
    194
    Mi Piace Ricevuti:
    1
    Punteggio:
    18
    accidenti...
    grazie!!!
    Mi sa che di venerdì sono un po' fuso. Adesso ovviamente succede quello che mi aspettavo.
    Alla prossima
     
Sto caricando...

Condividi questa Pagina