[PHP] ciclo while non scrive dove dovrebbe...

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti.
in una struttura di backoffice che ho scritto qualche tempo fa devo fare una variazione. Si tratta di una sezione cje si occupa della registrazione di lezioni di cucina. In particolare con questa pagina devo dare la possibilità all'operatore, per le lezioni che si ripetono, di inserire il numero di appuntamenti previsti. In seguito all'inserimento di tele numero genero il numero di righe corrispondente in cui insìdicare giorno, mese, anno e dettagli di quella particolare lezione.
Il ciclo while funziona, salvo che non viene scritto nel div che contiene il codice, e non so come mai.

Qui 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'];
if (isset($_POST['ok']))
righe();


?>


<!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="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">

    <table width="600px" border="0" cellspacing="0" cellpadding="0" bgcolor="#CCCCCC" border="1">
    <?
      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 "</tr>";
           echo "<br>";
           echo "<tr><td>";
           echo "<textarea name='dettagli' id='dettagli' cols='50' rows='6'></textarea>";
           echo "</td></tr>";
           echo "<br>";

          $righe--;
        }
      }
      
    ?>
  </table>
  </div>



</body>
</html>
In pratica, una volta insserito il numero di righe che mi servono, queste vengono sovrascritte al div con id "inserimento" invece che all'interno del div "lerighe", come mi sarei aspettato.
Dove sbaglio?
Grazie
 
Ciao.
La soluzione diretta al tuo problema è quella di richiamare la funzione righe() all'interno del div #lerighe.

PHP:
  <div id="lerighe">

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

<?php
  if (isset($_POST['ok'])) {
    righe();
  }
?>
  </table>
  </div>

Come hai fatto tu, la funzione viene richiamata (e quindi le righe stampate) prima ancora della dichiarazione del DOCTYPE.
 
Accidenti... era così semplice...
Grazie tantissimo per il rapido suggerimento.
Alla prossima
 

Discussioni simili