Selezionare un campo alla volta su un ciclo while

ciao
anche io sono di firenze, poi trasferito a padova, poi a busseto pr.
te lo chiedevo perche da queste parti ci sono molti macchiavelli
 
Ciao.
Allora ho risettato il tutto con le indicazioni che mi hai dato.
Non da errori ma allo stesso tempo non fa il suo dovere, nel senso che non sembra dare segni di vita.
Il pulsante radio cosa dovrebbe prevedere?

Incollo il mio operato:

PHP:
            <?php 
require_once "config.php";//usa il require 
connettiDb(); 
if(isset($_POST['aggiungi'])){ 
    $anno=$_POST['year']; 
    $sett=$_POST['week']; 
    $id=$_POST['conf'];//essendo il campo tipo radio sei sicuro di aver dato una sola conferma 
    $ore=$_POST['n_lez1'][$id];//sono sicuro che il valore sia quello a cui ho confermato (vuoto o pieno che sia 
    //qui iniziamo le verifiche 
    $errori="";//metto a vuoto una stringa che se non ci sono errori rimarrà vuota 
    //verifico per prima cosa che il record non esista gia 
    $ver=mysql_query("SELECT id FROM lezioni WHERE id_ins='$id' AND week='$sett' AND year='$anno'"); 
    if(mysql_num_rows($ver)>0){ 
        $errori .= "il record è esistente<br />"; 
    } 
    if($ore ==""){ 
        $errori .= "le ore immesse non possono essere vuote o la casella non coincide con la conferma<br />"; 
    } 
    if(is_int($ore) || $ore <=0){ 
        $errori .= "le ore non sono un numero o non possono essere zero o negative<br />"; 
    } 
    //fine verifiche 
    if($errori !=""){//ci sono stati errori di compilazione del form, mostro quali 
        echo $errori; 
    }else{ 
        //non ci sono errori di compilazione quindi inserisco 
        $ins= "INSERT INTO lezioni(week,anno,lez,id_ins) VALUES('$sett','$anno','$ore','$id'"; 
        if(mysql_query($ins)){ 
            echo "record inserito<br />"; 
        }else{ 
            echo "errore nell'inserimento<br />"; 
        } 
    } 
    //torno automaticamente al form per un altro inserimento 
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
    //contet='3; sono i secondi di attesa prima di essere reindirizzati in modo da poter legerei i mesaggi 
}else{ 
?> 
            <form name="modulo" id="modulo" method="post" action="">
              <p><br />
              </p>
              <p><br />
              </p>
              <p><br />
              </p>
              <p>Year*
              <select name="year">
                  <option>2012</option>
                  <option>2013</option>
                  <option>2014</option>
                  <option>2015</option>
                  <option>2016</option>
                  <option>2017</option>
                  <option>2018</option>
                  <option>2019</option>
                  <option>2020</option>
                  <option>2021</option>
                  <option>2022</option>
                  <option>2023</option>
                  <option>2024</option>
                  <option>2025</option>
                  <option>2026</option>
                  <option>2027</option>
                  <option>2028</option>
                  <option>2029</option>
                  <option>2030</option>
                  <option>2031</option>
                  <option>2032</option>
                  <option>2033</option>
                  <option>2034</option>
                  <option>2035</option>
                  <option>2036</option>
                  <option>2037</option>
                  <option>2038</option>
                  <option>2039</option>
                  <option>2040</option>
                  <option>2041</option>
                  <option>2042</option>
                  <option>2043</option>
                  <option>2044</option>
                  <option>2045</option>
                  <option>2046</option>
                  <option>2047</option>
                  <option>2048</option>
                  <option>2049</option>
                  <option>2050</option>
                  <option>2051</option>
                  <option>2052</option>
                  <option>2053</option>
                  <option>2054</option>
                  <option>2055</option>
                  <option>2056</option>
                  <option>2057</option>
                  <option>2058</option>
                  <option>2059</option>
                  <option>2060</option>
                  <option>2061</option>
                  <option>2062</option>
                  <option>2063</option>
                  <option>2064</option>
                  <option></option>
                </select>
                *** *** *** *** Week N°
                <select name="week">
                  <option>1</option>
                  <option>2</option>
                  <option>3</option>
                  <option>4</option>
                  <option>5</option>
                  <option>6</option>
                  <option>7</option>
                  <option>8</option>
                  <option>9</option>
                  <option>10</option>
                  <option>11</option>
                  <option>12</option>
                  <option>13</option>
                  <option>14</option>
                  <option>15</option>
                  <option>16</option>
                  <option>17</option>
                  <option>18</option>
                  <option>19</option>
                  <option>20</option>
                  <option>21</option>
                  <option>22</option>
                  <option>23</option>
                  <option>24</option>
                  <option>25</option>
                  <option>26</option>
                  <option>27</option>
                  <option>28</option>
                  <option>29</option>
                  <option>30</option>
                  <option>31</option>
                  <option>32</option>
                  <option>33</option>
                  <option>34</option>
                  <option>35</option>
                  <option>36</option>
                  <option>37</option>
                  <option>38</option>
                  <option>39</option>
                  <option>40</option>
                  <option>41</option>
                  <option>42</option>
                  <option>43</option>
                  <option>44</option>
                  <option>45</option>
                  <option>46</option>
                  <option>47</option>
                  <option>48</option>
                  <option>49</option>
                  <option>50</option>
                  <option>51</option>
                  <option>52</option>
                  <option>53</option>
                  <option></option>
                </select>
              </p>
              <p><br />
              </p>
              <p><br />
              </p>
              <?php 
//inutile fare due query maschi e femmine, anche se vuoi tenerli separati 
$sql="SELECT * FROM maestri ORDER BY sesso , nome";//ti vengono prima tutti quelli di un sesso ordinati alfabeticamente per cognome, poi quelli dell'altro 
$dati=mysql_query($sql); 
echo '<table width="100%" height="100%" border="1">
                <tbody>'; 
echo '<tr align="center">
                    <td rowspan="1" colspan="7"><address><h2><b>Teacher</b></h2></address></td>
                  </tr>
                  <tr>
                    <td><i><b>Nome</b></i></td>
                    <td><i><b>Cognome</b></i></td>
                    <td><i><b>Scuola</b></i><br />
                    </td>
                    <td><i><b>N°</b></i><br />
                    </td>
                    <td><i><b>Ceck</b></i><br />
                    </td>
                    <td><i><b>Mod.</b></i><br />
                    </td>
                    <td><i><b>Canc.</b></i><br />
                    </td>
                    </tr>'; 
while($riga=mysql_fetch_array($dati)){//verifica che abbia messo i nomi giusti dei campi 
    $id=$riga['id']; 
    $nome=$riga['nome']; 
    $cognome=$riga['cognome']; 
    $scuola=$riga['citta']; 
    echo "<tr><td>$nome</td><td>$cognome</td><td>$scuola</td><td><input type=\"text\" name=\"n_lez1[$id]\" maxlength=\"3\" size=\"3\" /></td> 
    <td><input name=\"conf\" type=\"radio\" value=\"$id\"></td>";
    echo '<td><a href="modify.php?id=' . $id . '" alt="Modifica" title="Modifica">[Mod.]</a></td>
    <td><a href="delete.php?id=' . $id . '" alt="Cancella" title="Cancella">[Canc.]</a></td></tr>'; 
} 
echo "</tbody>
              </table>"; 
?> 
              <br />
              <p><input type="submit" name="Aggiungi" value="Aggiungi" /></p>
              <p></p>
            </form>
            <?php 
} 
?>

PS: ho dovuto omettere il ciclo for sul menu a tendina degli anni e delle settimane, perchè entrava in loop, non ho capito per quale motivo visto che la sintassi era giusta.
Comunque quella sarà una cosa da vedere successivamente.
 
Ultima modifica:
ciao
quella del loop guardo anche io
il pulsante radio è la verifica/conferna quando scrivi le ore
es.
1) se scrivi le ore su pinco e clicchi sul radio di pallino ti da (dovrebbe) dare errore
2)per fare che funzioni deve inserire le ore su pinco e cliccare il radio di pinco

tra l'altro il radio trasmette l'id del docente selezionato.
se noti il campo per inserire le lezioni non ha un nome fisso, ma è un array cioe es
in corrispondenza di pinco che ha un id 33 il campo lezioni si chiama n_lez1[33]
quello di caio con id 95 si chiamerà n_lez1[95], nella parte dove leggi i valori inviati prima leggi l'id tramesso dal radio selezionato (i radio avendo tutti lo stesso nome puoi selezionarne solo uno alla volta se selezioni pinco e poi caio vedi che il radio di caio si deseleziona) poi vai a verificare il valore del post, ipotizzando che tu abbia cliccato sul radio di pinco (id=33)
$_POST['n_lez1'][33] da cui è evidente cosa succede hai riempito il campo di caio n_lez1[95] e cliccato sul radio di pinco
 
ciao
ho riprovato i cicli for, l'anno funzia perfettamente
su settimana avevo fatto un erroretto (mi ero dimenticato un t) correggi
PHP:
<?php
for($sett=1; $sett <=54;$sett++){//era scritto $set++
    echo "<option>$sett</option>";
}
?>
comunque ... buonanotte
 
ok ora se io faccio questa procedura non da segni di vita scoverò l'errore che sarà sicuramente una stupidata.
 
Ultima modifica:
ciao
ho notato una cosa nell'insert dei docenti che mi hai postato
INSERT INTO `maestri` (`id`, `citta`, `nome`, `cognome`, `sesso`) VALUES
(54, 'Verona', 'Mxxx', 'Cyyy', 'uomo'),.....


l'id della tabella oltre a primary key dovrebbe essere autoincrement, quindi l'insert dove essere
PHP:
<?php
//.....
$q="INSERT INTO maestri ( citta, nome, cognome, sesso) VALUES('$citta', '$nome', '$cognome', '$sesso')";
//......
?>
ci pensa php/mysql a inserire e incrementare l'id evitando errori

analogo discorso per l'insert delle scuole
p.s.
non mettere i batick (`) spesso fanno casino
 
Ciao.
Ho controllato il db e ho visto che l'id è già in autoincrement. Comunque ho cambiato modo ed ho impostato il tutto aggiungendo un link [Add.] a ogni record in modo da poter aggiungere uno alla volta. Ti faccio vedere:

PHP:
            <form method="POST" action="">
              <p><br />
              </p>
              <p><br />
              </p>
              <p><br />
              </p>
              <p>Year_
                <select name="year">
<?php 

for($anno=2012; $anno <=2064; $anno++){
    echo '<option value="' . $anno . '">' . $anno . '</option>'; 
} 

?>
                </select>
                ___ ___ ___ ___ Week N°
                <select name="week">

<?php 

for($sett=1; $sett<=54;$sett++){ 
    echo '<option value="' . $sett . '">' . $sett . '</option>'; 
} 
                    
                            	
?> 
                </select>
              </p>
              <p></p>
              <table width="100%" height="100%" border="1">
                <tbody>
                  <tr align="center">
                  <td rowspan="1" colspan="6"><address><h2><b>Uomini</b></h2></address></td>
                  </tr>
                  <tr>
                    <td><div align="center"><i><b>Nome</b></i></div></td>
                    <td><div align="center"><i><b>Scuola</b></i><br />
                    </div></td>
                    <td><div align="center"><i><b>N°</b></i><br />
                    </div></td>
                    <td><div align="center"><i><b>Add.</b></i><br />
                    </div></td>
                    <td><div align="center"><i><b>Mod.</b></i><br />
                    </div></td>
                    <td><div align="center"><i><b>Canc.</b></i><br />
                    </div></td>
                    </tr>
                  <tr>
                  <?php

                                include "config.php";
                                    connettiDb();
                $sql="SELECT * FROM maestri ORDER BY sesso, cognome";
                 $dati=mysql_query($sql);
                  while($row=mysql_fetch_array($dati)) { 
                  echo '<td>' . $row [nome] . ' ' . $row [cognome] . '</br></td>
                  <td>' . $row [citta] . '<br />
                    </td>
                  <td><input type="text" name="n_lez1" maxlength="3" value="0" size="3" /><br />
                    </td>
                    <td><a onclick="return(confirm('Attenzione: Sei sicuro di voler inserire ' . $_POST['n_lez1'] /* NON VA */
                     . ' lezioni a ' .  $row [nome] . ' ' . $row [cognome] . ' nella week n°: ' . $_POST['week'] /* NON VA */
                      . ' anno ' . $_POST['year'] /* NON VA */ . ' ?'))" href="add_less_data.php?id=' . $row['id'] .
                       '" alt="Modifica" title="Aggiungi Lezioni">[Add.]</a>
                    </td>
                    <td><a href="modify.php?id=' . $row['id'] . '" alt="Modifica" title="Modifica">[Mod.]</a></td>
                    <td><a onclick="return(confirm('Attenzione: Sei sicuro di voler cancellare '
                     .  $row [nome] . ' ' . $row [cognome] . ' dalla lista?'))" 
                    href="rem_teach.php?id=' . $row['id'] . '" alt="Cancella" title="Cancella">[Canc.]</a></td>
                  </tr>';
                   }
                    ?>
                </tbody>
              </table>
             </form>

Ho messo dei commenti /* NON VA */ sui vari punti perché non vede il $_POST dell'option degli anni delle settimane e neanche dell text n_lez1
Che ne pensi? a me sembra apposto ma non trovo il bug
 
ciao
postami il dump della tabella docenti che mi faccio il db uguale al tuo per fare delle prove, senza il db non posso testarlo e quindi dirti dove è l'inghippo
 
ecco:

-- Struttura della tabella `maestri`
--

CREATE TABLE IF NOT EXISTS `maestri` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`citta` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
`nome` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`cognome` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`sesso` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `id_scuola` (`citta`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=100 ;

--


--
-- Struttura della tabella `lezioni`
--

CREATE TABLE IF NOT EXISTS `lezioni` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`week` int(2) NOT NULL,
`anno` year(4) NOT NULL,
`lez` int(3) NOT NULL,
`id_ins` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
 
Quello non va bene. Il fatto è che di php un po me ne intendo ma lavorare con i db ancora no e non a caso sto seguendo un corso online per specializzarmi un po.
Tu come mi consigli di impostare queste tabelle?
 
ciao
io le avrei semplicemente fatte così

CREATE TABLE IF NOT EXISTS `maestri`(
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`citta` varchar(50 NOT NULL,
`nome` varchar(50) NOT NULL,
`cognome` varchar(50) NOT NULL,
`sesso` set( 'donna', 'uomo' )NOT NULL DEFAULT 'uomo',
) ENGINE = MYISAM ;

Codice:
CREATE TABLE IF NOT EXISTS `lezioni` (
`id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`week` int(2) NOT NULL,
`anno` year(4) NOT NULL,
`lez` int(3) NOT NULL,
`id_ins` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MYISAM ;

a parte dove indicare quale è la chiave primaria (in coda o di finaco è lo stesso)
nella tabella maestri:
porterei a 50 caratteri citta, nome e cognome
metteri sesso tipo set con i due unici valori ammessi (potrebbero esssere anche 'F', 'M' )
come vedi ho tolto tutti gli altri orpelli, in particolare l'autoincrement 100 e 4 perchè in questo caso è più giusto che l'id si autoincrementi di 1 ad ogni inserimento

poi quendo hai deciso dimmi come le fai in modo da poter testare gli script
 
Ultima modifica:
Nulla da fare ci ho perso la testa ore e ore su questo script :incazz2:
Sono ritornato alla tua versione ma non da nessun segno di vita.

PHP:
            <?php 
require_once "config.php";//usa il require 
connettiDb(); 
if(isset($_POST['aggiungi'])){ 
    $anno=$_POST['year']; 
    $sett=$_POST['week']; 
    $id=$_POST['conf'];
    $ore=$_POST['n_lez1'][$id];
    $errori="";
    $ver=mysql_query("SELECT id FROM lezioni WHERE id_ins='$id' AND week='$sett' AND year='$anno'"); 
    if(mysql_num_rows($ver)>0){ 
        $errori .= "il record è esistente<br />"; 
    } 
    if($ore ==""){ 
        $errori .= "le ore immesse non possono essere vuote o la casella non coincide con la conferma<br />"; 
    } 
    if(is_int($ore) || $ore <=0){ 
        $errori .= "le ore non sono un numero o non possono essere zero o negative<br />"; 
    }  
    if($errori !=""){ 
        echo $errori; 
    }else{ 
        $ins= "INSERT INTO lezioni(week,anno,lez,id_ins) VALUES('$sett','$anno','$ore','$id'"; 
        if(mysql_query($ins)){ 
            echo "record inserito<br />"; 
        }else{ 
            echo "errore nell'inserimento<br />"; 
        } 
    } 
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
}else{ 
?> 
            <form name="modulo" id="modulo" method="post" action="">
              <p><br />
              </p>
              <p>Year*
              <select name="year">
<?php 

for($anno=2012; $anno <=2064; $anno++){
    echo '<option value="' . $anno . '">' . $anno . '</option>'; 
} 

?>
                </select>
                *** *** *** *** Week N°
                <select name="week">

<?php 

for($sett=1; $sett<=54;$sett++){ 
    echo '<option value="' . $sett . '">' . $sett . '</option>'; 
} 
                    
                            	
?> 
                </select>
              </p>
              <p><br />
              </p>
              <p><br />
              </p>
              <?php 
$sql="SELECT * FROM maestri ORDER BY sesso , nome";
$dati=mysql_query($sql); 
echo '<table width="100%" height="100%" border="1">
                <tbody>'; 
echo '<tr align="center">
                    <td rowspan="1" colspan="7"><address><h2><b>Teacher</b></h2></address></td>
                  </tr>
                  <tr>
                    <td><i><b>Nome</b></i></td>
                    <td><i><b>Cognome</b></i></td>
                    <td><i><b>Scuola</b></i><br />
                    </td>
                    <td><i><b>N°</b></i><br />
                    </td>
                    <td><i><b>Ceck</b></i><br />
                    </td>
                    <td><i><b>Mod.</b></i><br />
                    </td>
                    <td><i><b>Canc.</b></i><br />
                    </td>
                    </tr>'; 
while($riga=mysql_fetch_array($dati)){
    $id=$riga['id']; 
    $nome=$riga['nome']; 
    $cognome=$riga['cognome']; 
    $scuola=$riga['citta']; 
    echo "<tr><td>$nome</td><td>$cognome</td><td>$scuola</td><td><input type=\"text\" name=\"n_lez1[$id]\" maxlength=\"3\" size=\"3\" /></td> 
    <td><input name=\"conf\" type=\"radio\" value=\"$id\"></td>";
    echo '<td><a href="modify.php?id=' . $id . '" alt="Modifica" title="Modifica">[Mod.]</a></td>
    <td><a onclick="return(confirm(\'Attenzione: Sei sicuro di voler cancellare questo Teacher?\'))" href="rem_teach.php?id='
     . $id . '" alt="Cancella" title="Cancella">[Canc.]</a></td></tr>';
} 
echo "</tbody>
              </table>"; 
?> 
              <br />
              <p><input type="submit" name="Aggiungi" value="Aggiungi" /></p>
              <p></p>
            </form>
            <?php 
} 
?>
 
Ciao. Ho cambiato le tabelle così:

HTML:
-- Struttura della tabella `lezioni`
--

CREATE TABLE IF NOT EXISTS `lezioni` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `week` int(2) NOT NULL,
  `anno` year(4) NOT NULL,
  `lez` int(3) NOT NULL,
  `id_ins` int(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=4 ;

HTML:
-- Struttura della tabella `maestri`
--

CREATE TABLE IF NOT EXISTS `maestri` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `citta` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `nome` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `cognome` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `sesso` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'uomo',
  PRIMARY KEY (`id`),
  KEY `id_scuola` (`citta`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci AUTO_INCREMENT=100 ;

Solo che non so dove si cambia l' AUTO_INCREMENT
 
ciao
usa php per costruire le tabelle, fai un file chiamato es. crea_tabelle.php e lo richiami
PHP:
<?php
//qui i dati di connessione al db
$q_maestri="CREATE TABLE IF NOT EXISTS `maestri`(
`id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`citta` varchar(50 NOT NULL,
`nome` varchar(50) NOT NULL,
`cognome` varchar(50) NOT NULL,
`sesso` set( 'donna', 'uomo' ) NOT NULL DEFAULT 'uomo',
) ENGINE = MYISAM ; ";

$ris=mysql_query($q_maestri) or die('errore');

$q_lezioni="CREATE TABLE IF NOT EXISTS `lezioni` (
`id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`week` int(2) NOT NULL,
`anno` year(4) NOT NULL,
`lez` int(3) NOT NULL,
`id_ins` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MYISAM ;";
$ris=mysql_query($q_lezioni) or die('errore');
// e se vuoi altre tabelle
?>
dopo averlo chiamato se non ci sono stati errori lo elimini o lo metti da qualca altra parte in modo che non possa essere più richiamato
poi perche metti sesso varchar? hai anche il terzo sesso? se si non puoi dirlo è un dato sensibile :)
io lo semplifecherei anche solo con le sigle
`sesso` set( 'F', 'M' ) NOT NULL DEFAULT 'M',
 
heheehe hai ragione. però adesso ho gia le tabelle create con i dati dentro e con questo comando non le cambia ma tenta di scrivere sul db
 

Discussioni simili