[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
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
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
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
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...
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
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
Autore Titolo Forum Risposte Data
C Refresh parte di codice pagina php PHP 6
E Problema refresh PHP PHP 3
K [PHP] Passaggio Variabili Senza Refresh Di Pagina PHP 1
A [Javascript] [PHP] Scroll refresh chat Javascript 2
michela90 [PHP] Refresh page on submit - Form con Swiftmailer PHP 14
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
Z [PHP] Informazione al pulsante REFRESH PHP 2
L Refresh include php con jquery problemi negli script dopo load jQuery 2
F refresh div con variabile php jQuery 2
A Alternativa al <meta http-equiv="refresh" content="5;url=code.php" > HTML e CSS 5
max_400 php: refresh solamente alla ricezione dei dai - by max4001976 PHP 4
S Refresh immagine php PHP 3
T funzione header php e refresh PHP 2
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 0
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7

Discussioni simili