[PHP] refresh della pagina dopo submit

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti,
sto scrivendo una procedura che dovrebbe permettere di inserire dalla stessa pagina più date per lo stesso evento. Nella prima pagina inserisco il tipo di evento, il prezzo per lezione, i posti dispnibili (cioè i dati generali del ciclo di lezioni).
Nella seconda pagina recupero i dati inseriti e con un form chiedo di inserire il numero di lezioni.
Inserito il numero, genero le righe necessarie per inserire le date e i dettagli della singola lezione del ciclo.
In ogni riga ho messo un bottone "registra" (all'interno del ciclo while).
A questo punto ho due problemi:
1) i tre dati giorno, mese e anno non vengono registrati nel db
2) premendo il pulsante "registra" si effettua un refresh e quindi sparisce tutto
Ecco il codice della pagina:
Codice:
<?php
session_start();
//se non c'è la sessione registrata
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


/* Recupero i dati delle lezioni */
$evento = $_POST['evento'];
$chef2 = $_POST['chef2'];
$titolo2 = $_POST['titolo2'];
$sottotitolo = $_POST['sottotitolo'];
$euro2 = $_POST['prezzo2'];
$posti2 = $_POST['posti2'];


?>


<!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>Inserimento calendario scuola di cucina</title>
<link href="backoffice.css" rel="stylesheet" type="text/css" />
<script src="backoffice.js"></script>



</head>


<body>


<div id="inserimento" class="testi">
  Bene, <? echo "$cod"; ?> <br />
  Ti ricordo che stai registrando:<br>
  <b><? echo "$evento"; ?></b><br>
  A cura dello chef <? echo "$chef2"; ?><br>
  Titolo: <? echo "$titolo2"; ?><br>
  (<? echo "$sottotitolo"; ?>)<br>
  Dettagli:<br>
  <? echo "$dettagli2"; ?><br>
  I posti disponibili sono: <? echo "$posti2"; ?> e il prezzo indicato è di Euro <? echo "$euro2"; ?>.<br>
  <hr>
  <p>
    <form name="appuntamenti" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <b>INSERISCI IL NUMERO DI APPUNTAMENTI: </b>

    <input name="evento" type="hidden" value="<? echo $evento; ?>">
    <input name="chef" type="hidden" value="<? echo $chef2; ?>">
    <input name="titolo" type="hidden" value="<? echo $titolo2; ?>">
    <input name="sottotitolo" type="hidden" value="<? echo $sottotitolo; ?>">
    <input name="euro" type="hidden" value="<? echo $euro2; ?>">
    <input name="posti" type="hidden" value="<? echo $posti2; ?>">
  
    <input name="appuntamenti" id="appuntamenti" type="text" size="3">
    &nbsp; &nbsp; &nbsp;
    <input name="ok" type="submit" id="ok" value=" Conferma "/>
  </form>
  </p>
</div>

  

  <div id="lerighe">

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

    <table width="600px" border="0" cellspacing="0" cellpadding="0" bgcolor="#CCCCCC" >

      <tr>
        <td class="rosso"><? echo $_POST['evento']; ?></td>
      </tr>
      <tr>
        <td>
          Chef: <? echo $_POST['chef']; ?><br>
            Titolo: <? echo $_POST['titolo']; ?><br>
            (<? echo $_POST['sottotitolo']; ?>)<br>
            Prezzo: Euro <? echo $_POST['euro']; ?>, posti disponibili: <? echo $_POST['posti']; ?>
          </td>
          <td>&nbsp;</td>
          <input name="loevento" type="hidden" value="<? echo $_POST['evento']; ?>">
          <input name="lochef" type="hidden" value="<? echo $_POST['chef']; ?>">
          <input name="lotitolo" type="hidden" value="<? echo $_POST['titolo']; ?>">
          <input name="losottotitolo" type="hidden" value="<? echo $_POST['sottotitolo']; ?>">
          <input name="loprezzo" type="hidden" value="<? echo $_POST['euro']; ?>">
          <input name="loposto" type="hidden" value="<? echo $_POST['posti']; ?>">
      </tr>
      <tr><td colspan="2"><hr></td></tr>
    <?

    if (isset($_POST['ok']))
      righe();

      function righe() {
        $righe = $_POST['appuntamenti'];

        while ($righe > 0) {
          echo "<tr>";
          echo "<td bgcolor='#FFFFFF'>";
          echo "Anno: ";
          echo "<select name='anno1' id='anno1' class='h5b'>
                  <option value='' selected='selected'>==</option>
                  <option value='2013'>2013</option>
                  <option value='2014'>2014</option>
                  <option value='2015'>2015</option>
                  <option value='2016'>2016</option>
                  <option value='2017'>2017</option>
                  <option value='2018'>2018</option>
                  <option value='2019'>2019</option>
                  <option value='2020'>2020</option>
                </select>";
          echo "Mese: ";
          echo "<select name='mese1' id='mese1' class='h5b'>
                  <option value='' selected='selected'>==</option>
                  <option value='1'>Gennaio</option>
                  <option value='2'>Febbraio</option>
                  <option value='3'>Marzo</option>
                  <option value='4'>Aprile</option>
                  <option value='5'>Maggio</option>
                  <option value='6'>Giugno</option>
                  <option value='7'>Luglio</option>
                  <option value='8'>Agosto</option>
                  <option value='9'>Settembre</option>
                  <option value='10'>Ottobre</option>
                  <option value='11'>Novembre</option>
                  <option value='12'>Dicembre</option>
                </select>";
          echo "Giorno: ";
          echo "<select name='giorno1' id='giorno1' class='h7b'>
                  <option value='' selected='selected'>==</option>
                  <option value='1'>1</option>
                  <option value='2'>2</option>
                  <option value='3'>3</option>
                  <option value='4'>4</option>
                  <option value='5'>5</option>
                  <option value='6'>6</option>
                  <option value='7'>7</option>
                  <option value='8'>8</option>
                  <option value='9'>9</option>
                  <option value='10'>10</option>
                  <option value='11'>11</option>
                  <option value='12'>12</option>
                  <option value='13'>13</option>
                  <option value='14'>14</option>
                  <option value='15'>15</option>
                  <option value='16'>16</option>
                  <option value='17'>17</option>
                  <option value='18'>18</option>
                  <option value='19'>19</option>
                  <option value='20'>20</option>
                  <option value='21'>21</option>
                  <option value='22'>22</option>
                  <option value='23'>23</option>
                  <option value='24'>24</option>
                  <option value='25'>25</option>
                  <option value='26'>26</option>
                  <option value='27'>27</option>
                  <option value='28'>28</option>
                  <option value='29'>29</option>
                  <option value='30'>30</option>
                  <option value='31'>31</option>
                </select>";
           echo "</td>";
           echo "<td>&nbsp;</td>";
           echo "</tr>";
           echo "<br>";
           echo "<tr><td valign='top'>";
           echo "Dettagli: ";
           echo "<textarea name='dettagli' id='dettagli' cols='50' rows='6'></textarea>";
           echo "</td>";
           $idregistra = "registra".$righe;
           $idvaria = "varia".$righe;
           echo "<td><input id='$idregistra' name='registra' type='submit' value=' REGISTRA ' style='display:block'>
                    <input id='$idvaria' name='varia' type='submit' value=' MODIFICA ' style='display:none'></td>";
           echo "</tr>";
           echo "<br>";

          $righe--;
        }
      }

      if (isset($_POST['registra']))
      registrazione();

    function registrazione() {
      $anno2 = $_POST['anno1'];
      $mese2 = $_POST['mese1'];
      $giorno2 = $_POST['giorno1'];
      $eventook = $_POST['loevento'];
      $chefok = $_POST['lochef'];
      $iltitolo = $_POST['lotitolo'];
      $ilsottotitolo = $_POST['losottotitolo'];
      $ilprezzo = $_POST['loprezzo'];
      $ilposto = $_POST['loposto'];
      $dettagli = $_POST['dettagli'];

      include 'connect.php';

      $query2 = ("INSERT INTO calendario VALUES ('','1', '$anno2', '$mese2', '$giorno2', '', '$eventook', '$chefok', '$iltitolo', '$ilsottotitolo', '$dettagli', '$ilprezzo', '$ilposto')");
      $result2 = mysql_query($query2);

      

    }
      
    ?>
  </table>
</form>
  </div>



</body>
</html>
Esiste un modo per "mantenere tutto com'e'" quando premo il pulsante "registra"?
E poi, perchè gli altri dati vengono regolarmente inseriti nel db, mentre giorno, mese e anno no?

Grazie per i suggerimenti
 
Dunque...
ovviamente la soluzione è l'utilizzo di ajax. E comunque il codice qui sopra è incasinato.
Ho riscritto il tutto, e sto testando i vari step prima di procedere.
Obbiettivo:
una pagina composta da un numero x di righe (indicate dall'operatore), ciascuna con un bottone, cliccando sul quale, tramite Ajax, registro la riga nel db.
Quindi sulla pagina c'e' un primo piccolo form che permette di indicare di quante righe ha bisogno l'utente, e fin qui tutto bene.
Ricevuto il valore, all'interno di un ciclo "while" genero delle righe di tabella nel numero richiesto. E fin qui è ok.
Per recuperare i dati da spedire alla pagina php esterna, devo identificare la riga, quindi il bottone ha questo codice:
Codice:
<input id='$idregistra' name='registra' type='button' value=' REGISTRA ' style='display:block' onClick='formami($idform)'>

La funzione richiamata formami():
Codice:
function formami(formid) {
 ...qui recupero i dati dal form con nome 'formid'...
Per testare se formid arriva correttamente alla funzione ho messo un semplice alert:
Codice:
alert(formid);
Ma nell'alert, invece di leggere il valore corretto leggo:
[object HTMLFormElement]
Perchè non passa il valore della variabile?
Questo è il codice della funzione che gestisce la generazione delle righe:
Codice:
function righe() {
        $righe = $_POST['appuntamenti'];
        

        $evento = $_POST['evento'];
        $chef = $_POST['chef'];
        $titolo = $_POST['titolo'];
        $sottotitolo = $_POST['sottotitolo'];
        $euro = $_POST['euro'];
        $posti = $_POST['posti'];

        

        while ($righe > 0) {
          $idform = "registrazione".$righe;
          echo "<form name='$idform' id='$idform' >";

          $idanno = "anno".$righe;
          $idmese = "mese".$righe;
          $idgiorno = "giorno".$righe;

          echo "<input name='evento' type='hidden' value='$evento'>";
          echo "<input name='chef' type='hidden' value='$chef'>";
          echo "<input name='titolo' type='hidden' value='$titolo'>";
          echo "<input name='sottotitolo' type='hidden' value='$sottotitolo'>";
          echo "<input name='euro' type='hidden' value='$euro'>";
          echo "<input name='posti' type='hidden' value='$posti'>";
          echo "<input name='ilform' type='hidden' value='$idform'>";
          echo "<input name='giorno' type='hidden' value='$idgiorno'>";
          echo "<input name='mese' type='hidden' value='$idmese'>";
          echo "<input name='anno' type='hidden' value='$idanno'>";

          echo "<tr>";
          echo "<td bgcolor='#FFFFFF'>";
          echo "Anno: ";
          echo "<select name='$idanno' id='anno' class='h5b'>
                  <option value='' selected='selected'>==</option>
                  <option value='2013'>2013</option>
                  <option value='2014'>2014</option>
                  <option value='2015'>2015</option>
                  <option value='2016'>2016</option>
                  <option value='2017'>2017</option>
                  <option value='2018'>2018</option>
                  <option value='2019'>2019</option>
                  <option value='2020'>2020</option>
                </select>";
          echo "Mese: ";
          echo "<select name='$idmese' id='mese' class='h5b'>
                  <option value='' selected='selected'>==</option>
                  <option value='1'>Gennaio</option>
                  <option value='2'>Febbraio</option>
                  <option value='3'>Marzo</option>
                  <option value='4'>Aprile</option>
                  <option value='5'>Maggio</option>
                  <option value='6'>Giugno</option>
                  <option value='7'>Luglio</option>
                  <option value='8'>Agosto</option>
                  <option value='9'>Settembre</option>
                  <option value='10'>Ottobre</option>
                  <option value='11'>Novembre</option>
                  <option value='12'>Dicembre</option>
                </select>";
          echo "Giorno: ";
          echo "<select name='$idgiorno' id='giorno' class='h7b'>
                  <option value='' selected='selected'>==</option>
                  <option value='1'>1</option>
                  <option value='2'>2</option>
                  <option value='3'>3</option>
                  <option value='4'>4</option>
                  <option value='5'>5</option>
                  <option value='6'>6</option>
                  <option value='7'>7</option>
                  <option value='8'>8</option>
                  <option value='9'>9</option>
                  <option value='10'>10</option>
                  <option value='11'>11</option>
                  <option value='12'>12</option>
                  <option value='13'>13</option>
                  <option value='14'>14</option>
                  <option value='15'>15</option>
                  <option value='16'>16</option>
                  <option value='17'>17</option>
                  <option value='18'>18</option>
                  <option value='19'>19</option>
                  <option value='20'>20</option>
                  <option value='21'>21</option>
                  <option value='22'>22</option>
                  <option value='23'>23</option>
                  <option value='24'>24</option>
                  <option value='25'>25</option>
                  <option value='26'>26</option>
                  <option value='27'>27</option>
                  <option value='28'>28</option>
                  <option value='29'>29</option>
                  <option value='30'>30</option>
                  <option value='31'>31</option>
                </select>";
            echo "riga: ".$idform;
           echo "</td>";
           echo "<td>&nbsp;</td>";
           echo "</tr>";
           echo "<br>";
           echo "<tr><td valign='top'>";
           echo "Dettagli: ";
           echo "<textarea name='dettagli' id='dettagli' cols='50' rows='6'></textarea>";
           echo "</td>";
           $idregistra = "registra".$righe;
           $idvaria = "varia".$righe;
           echo "<td><input id='$idregistra' name='registra' type='button' value=' REGISTRA ' style='display:block' onClick='formami($idform)'>
                    <input id='$idvaria' name='varia' type='button' value=' MODIFICA ' style='display:none'></td>";
           echo "</tr>";
           echo "<br>";

          $righe--;
        }
        echo "</form>";
      }
Grazie per l'aiuto
 
Ricomincio da capo... sto sempre imparando, ma questa cosa proprio non la capisco...
Visto che sono in un ciclo while, genero la riga di tabella con echo "...".
Normalmente per passare una variabile da php a javascript, dovrei scrivere
Codice:
<input ecc ecc, onClick="funzione('variabile')">;
Cioè utilizzando il doppio apice all'esterno e l'apice singolo all'interno.
Visto che qui ho già il doppio apice per echo"..." che contiene l'input, come mi devo regolare? Ho cercato su internet, ma non ho trovato risposte. Possibile che non si possa passare il valore della variabile se sto utilizzando echo?
Spero in un suggerimento...
 
Bene, se a qualcuno dovesse interessare, ho risolto.
Nella riga del bottone SUBMIT ho utilizzate l'escape delle virgolette, singole e doppie, in questo modo:
Codice:
echo "<input type=\"button\" value=\" REGISTRA \" style=\"display:block\" onClick=\"javascript:formami('$idform');\">";
E la variabile passa regolarmente.
Per quanto riguarda il resto, lo otterrò utilizzando Ajax.
Grazie a tutti...
 

Discussioni simili