[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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1

Discussioni simili