Salve a tutti, tra i miei vari esperimenti mi sono imbattuto in un caso un pò particolare.
Vorrei modificare più di un campo di una tabella mysql contemporaneamente.
Un record alla volta, il codice funziona. Tutti assieme no. Il perchè penso sia dal ricercare nell'esigenza di utilizzare un array multidimensionale (almeno credo)
Vi posto il codice e poi spiego sotto:
Prima di arrivare a questa pagina provengo da un form.php con all'interno una tabella e per ogni cella c'è una check box il valore di questa è l'id della riga da modificare.
Adesso, se da form.php seleziono una sola check box modifica il record della tabella correttamente, invece se seleziono più righe modifica ambedue le righe con gli stessi valori.
Faccio un esempio ho in form.php la tabella:
id nome cognome check box
1 marco rossi
2 ugo esposito
Ora se voglio modificare solo ugo esposito oppure solo marco rossi, la modifica riesce. Invece se seleziono entrambi nella pagina che ho postato su, graficamente è tutto in ordine cioè esce il campo id con l'id corretto, il campo nome con il nome precompilato corretto etc..... questo per entrambe le righe. Se in tale situazione premo modifica mi cambia entrambi i valori con l'id 1 (cioè con il primo id che si trova a modificare)
:gun: non so come aggirare l'ostacolo.
Vorrei modificare più di un campo di una tabella mysql contemporaneamente.
Un record alla volta, il codice funziona. Tutti assieme no. Il perchè penso sia dal ricercare nell'esigenza di utilizzare un array multidimensionale (almeno credo)
Vi posto il codice e poi spiego sotto:
PHP:
if(isset($_POST['modifica'])){
if (isset ($_POST['chek'])) {
foreach($_POST['chek'] as $val){
$query = "SELECT * FROM Films WHERE id LIKE $val";
$ris_query = mysql_query($query);
$ris = mysql_fetch_array($ris_query);
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<div>
<label>
<span>Titolo: </span><?php echo $ris['id']; ?>
<input name="titolo" value="<?php echo $ris['titolo']; ?>" type="text" tabindex="1" required autofocus>
</label>
</div>
<div>
<label>
<span>Genere: </span>
<select name="genere" tabindex="2" required>
<option value="">Seleziona
<option <?php if ($ris['genere'] === "Non definito"){echo "selected";}?>>Non definito
<option <?php if ($ris['genere'] === "Animazione"){echo "selected";}?>>Animazione
<option <?php if ($ris['genere'] === "Avventura"){echo "selected";}?>>Avventura
<option <?php if ($ris['genere'] === "Azione"){echo "selected";}?>>Azione
<option <?php if ($ris['genere'] === "Balletto"){echo "selected";}?>>Balletto
<option <?php if ($ris['genere'] === "Biografico"){echo "selected";}?>>Biografico
<option <?php if ($ris['genere'] === "Commedia"){echo "selected";}?>>Commedia
<option <?php if ($ris['genere'] === "Concerto"){echo "selected";}?>>Concerto
<option <?php if ($ris['genere'] === "Cortometraggio"){echo "selected";}?>>Cortometraggio
<option <?php if ($ris['genere'] === "Fiction"){echo "selected";}?>>Fiction
<option <?php if ($ris['genere'] === "Documentario"){echo "selected";}?>>Documentario
<option <?php if ($ris['genere'] === "Drammatico"){echo "selected";}?>>Drammatico
<option <?php if ($ris['genere'] === "Epico"){echo "selected";}?>>Epico
<option <?php if ($ris['genere'] === "Erotico"){echo "selected";}?>>Erotico
<option <?php if ($ris['genere'] === "Fantascienza"){echo "selected";}?>>Fantascienza
<option <?php if ($ris['genere'] === "Fantastico"){echo "selected";}?>>Fantastico
<option <?php if ($ris['genere'] === "Fiabesco"){echo "selected";}?>>Fiabesco
<option <?php if ($ris['genere'] === "Guerra"){echo "selected";}?>>Guerra
<option <?php if ($ris['genere'] === "Horror"){echo "selected";}?>>Horror
<option <?php if ($ris['genere'] === "Musical"){echo "selected";}?>>Musical
<option <?php if ($ris['genere'] === "Poliziesco"){echo "selected";}?>>Poliziesco
<option <?php if ($ris['genere'] === "Religioso"){echo "selected";}?>>Religioso
<option <?php if ($ris['genere'] === "Romanzo"){echo "selected";}?>>Romanzo
<option <?php if ($ris['genere'] === "Sentimentale"){echo "selected";}?>>Sentimentale
<option <?php if ($ris['genere'] === "Sportivo"){echo "selected";}?>>Sportivo
<option <?php if ($ris['genere'] === "Storico"){echo "selected";}?>>Storico
<option <?php if ($ris['genere'] === "Thriller"){echo "selected";}?>>Thriller
<option <?php if ($ris['genere'] === "Western"){echo "selected";}?>>Western
</select>
</label>
</div>
<div>
<label>
<span>Trama: </span>
<textarea name="trama" tabindex="3" maxlength="1000" required><?php echo $ris['descrizione']; ?></textarea>
</label>
</div>
<div>
<label>
<span>La locandina del film: </span>
<input name="locandina" value="<?php echo $ris['locandina']; ?>" type="url" tabindex="4">
</label>
</div>
<div>
<label>
<span>Link: </span>
<input name="stream" value="<?php echo $ris['link']; ?>" type="url" tabindex="5" required>
</label>
</div>
<input name="id[]" type="hidden" value="<?php echo $ris['id']; ?>">
<hr style="background:url(../../img/hr.png) no-repeat top center; height:37px; border:none !important;" />
<div>
<?php
}
echo "<button name=\"mod_film\" type=\"submit\" id=\"btn\"><img src=\"../../img/add.png\" align=\"absmiddle\" alt=\"Modifica\" /> Modifica</button>";
echo "<button type=\"button\" id=\"btn\" onclick=\"top.location.href = 'itf.php'\" ><img src=\"../../img/del.png\" align=\"absmiddle\" alt=\"Annulla\" /> Annulla</button>";
echo "</div></form>";
}else{
echo "<font color='red'>Errore</font> - non hai selezionato alcun film, pertanto non c'è nessuna modifica da fare.";
echo "<meta http-equiv='Refresh' content='3; URL= itf.php'>";
exit;
}
}
if(isset($_POST['mod_film'])){
$titolo = strip_tags(mysql_real_escape_string($_POST['titolo']));
$genere = strip_tags(mysql_real_escape_string($_POST['genere']));
$trama = strip_tags(mysql_real_escape_string($_POST['trama']));
$locandina = strip_tags(mysql_real_escape_string($_POST['locandina']));
$stream = strip_tags(mysql_real_escape_string($_POST['stream']));
foreach($_POST['id'] as $val){
$q="UPDATE Films SET titolo='$titolo', genere='$genere', descrizione='$trama', locandina='$locandina', link='$stream' WHERE id='$val'";
$ris=mysql_query($q);
if (!$q) {
echo "<font color='red'>Errore</font> - non è stato possibile eseguire la query per il film $val.<br />";
die('Query non eseguita: ' . mysql_error());
}else{
echo "<br /><font color='green'>Successo</font> - Il film con id $val è stato modificato correttamente.";
}
}
echo "<br /><button type=\"button\" id=\"btn\" onclick=\"top.location.href = 'itf.php'\" ><img src=\"../../img/video.png\" align=\"absmiddle\" alt=\"Elenco Film\" /> Elenco Film</button>";
}
Adesso, se da form.php seleziono una sola check box modifica il record della tabella correttamente, invece se seleziono più righe modifica ambedue le righe con gli stessi valori.
Faccio un esempio ho in form.php la tabella:
id nome cognome check box
1 marco rossi
2 ugo esposito
Ora se voglio modificare solo ugo esposito oppure solo marco rossi, la modifica riesce. Invece se seleziono entrambi nella pagina che ho postato su, graficamente è tutto in ordine cioè esce il campo id con l'id corretto, il campo nome con il nome precompilato corretto etc..... questo per entrambe le righe. Se in tale situazione premo modifica mi cambia entrambi i valori con l'id 1 (cioè con il primo id che si trova a modificare)
:gun: non so come aggirare l'ostacolo.