Ciao Hormus grazie della risposta, cerco di spiegarlo meglio il mio problema che non ho ben capito la tua risposta, dunque da tuo consiglio includo tra i TAG codice tutta la pagina che dovrebbe fare l'UPDATE multiplo sulla tabella, così si può vedere tutto, che avevo messo prima solo le porzioni di codice che secondo me interessavano.
<?php
$str_idstag = $_GET['stag'];
$str_id_partita = $_GET['idpart'];
$str_id_sq_casa = $_GET['sqc'];
$str_id_sq_osp = $_GET['sqf'];
$str_id_gior_and = $_GET['idgior_a'];
$str_id_gior_rit = $_GET['idgior_r'];
?>
<header>
<h3>Modificare le partite per la Stagione <?php echo $str_annostag; ?></h3>
<p><?php echo "Giornate ".$str_id_gior_and."° - ".$str_id_gior_rit."°"; ?></p>
<blockquote><i class='fas fa-info-circle'></i> Selezionare le Squadre di casa e ospite dai menu a tendina e scrivere il risultato.</blockquote>
</header>
<div class='table-wrapper'>
<table class='alt'>
<tbody>
<tr>
<td width="23%"><b><?php echo "Giornata ".$str_id_gior_and."°"; ?></b></td>
<td width="54%"><b>Squadre</b></td>
<td width="23%"><b><?php echo "Giornata ".$str_id_gior_rit."°"; ?></b></td>
</tr>
</tbody>
</table>
</div>
<?php
switch($_POST['mod_part']){
case 'mod_partite':
$sq_casa = $_POST['sq_casa'];
$sq_osp = $_POST['sq_osp'];
$gol_sq_casa_and = $_POST['gol_sq_casa_and'];
$gol_sq_osp_and = $_POST['gol_sq_osp_and'];
$gol_sq_casa_rit = $_POST['gol_sq_casa_rit'];
$gol_sq_osp_rit = $_POST['gol_sq_osp_rit'];
foreach($sq_casa as $k=>$v){
$strsql_modpart = "
UPDATE partite_SerieA
SET sq_casa='".$sq_casa[$k]."',
sq_osp='".$sq_osp[$k]."',
gol_sq_casa_and='".$gol_sq_casa_and[$k]."',
gol_sq_osp_and='".$gol_sq_osp_and[$k]."',
gol_sq_casa_rit='".$gol_sq_casa_rit[$k]."',
gol_sq_osp_rit='".$gol_sq_osp_rit[$k]."'
WHERE id_stagione='$str_idstag' AND id_giornata_and='$str_id_gior_and' AND id_giornata_rit='$str_id_gior_rit'
";
$rs_modpart = @mysqli_query($link,$strsql_modpart) or die("Errore al DB. " . mysqli_error($link));
}
if($rs_inspart){
echo "<h3><i class='fas fa-check-circle'></i><b> Partite modificate correttamente.</b></h3>";
}else{
echo "NO!";
}
break;
}
$strsql_sel_part = "
SELECT partite_SerieA.*,
(SELECT nome_squadra FROM squadre_SerieA WHERE sq_casa=squadre_SerieA.id_squadra) AS squadra_casa,
(SELECT nome_squadra FROM squadre_SerieA WHERE sq_osp=squadre_SerieA.id_squadra) AS squadra_fuori
FROM partite_SerieA
WHERE id_stagione='$str_idstag' AND id_giornata_and='$str_id_gior_and'
ORDER BY squadra_casa ASC
";
$rs_sel_part = @mysqli_query($link,$strsql_sel_part) or die("Errore di connessione al DB. " . mysqli_error($link));
$count=mysqli_num_rows($rs_sel_part);
while($riga = mysqli_fetch_array($rs_sel_part)){
$str_id_sq_casa = $riga['sq_casa'];
$str_id_sq_osp = $riga['sq_osp'];
$str_gol_sq_casa_and = $riga['gol_sq_casa_and'];
$str_gol_sq_osp_and = $riga['gol_sq_osp_and'];
$str_gol_sq_casa_rit = $riga['gol_sq_casa_rit'];
$str_gol_sq_osp_rit = $riga['gol_sq_osp_rit'];
?>
<form method="POST" action="step4_serieA_mod_partite.php?stag=<?php echo $str_idstag; ?>&idgior_a=<?php echo $str_id_gior_and; ?>&idgior_r=<?php echo $str_id_gior_rit; ?>">
<input name="ids" type="hidden" value="ids" />
<input name="mod_part" type="hidden" value="mod_partite" />
<div class="row uniform">
<div style="width:12.5%;">
<input type="text" name="gol_sq_casa_and[]" placeholder="Gol and" value="<?php echo $str_gol_sq_casa_and; ?>"/>
</div>
<div style="width:12.5%;">
<input type="text" name="gol_sq_osp_and[]" placeholder="Gol and" value="<?php echo $str_gol_sq_osp_and; ?>"/>
</div>
<div style="width:25%;">
<div class="select-wrapper">
<select name="sq_casa[]">
<option value="0" selected>Squadra Casa</option>
<?php
$strsql_sel_squa = "
SELECT campionati_SerieA.id_stagione, squadre_SerieA.id_squadra,nome_squadra
FROM campionati_SerieA
JOIN squadre_SerieA ON campionati_SerieA.idsquadra=squadre_SerieA.id_squadra
WHERE id_stagione='$str_idstag'
ORDER BY nome_squadra
";
$rs_sel_squa = @mysqli_query($link,$strsql_sel_squa) or die("Errore di connessione al DB. " . mysqli_error($link));
while($riga = mysqli_fetch_array($rs_sel_squa)){
$sqc = array($riga['id_squadra'] => $riga['nome_squadra']);
foreach($sqc as $chiave => $valore){
if($riga['id_squadra'] == $str_id_sq_casa){
echo "<option value='$chiave' selected>$valore</option>";
}else{
echo "<option value='$chiave'>$valore</option>";
}
}
}
?>
</select>
</div>
</div>
<!-- Break -->
<div style="width:25%;">
<div class="select-wrapper">
<select name="sq_osp[]">
<option value="0" selected>Squadra Ospite</option>
<?php
$strsql_sel_squa = "
SELECT campionati_SerieA.id_stagione, squadre_SerieA.id_squadra,nome_squadra
FROM campionati_SerieA
JOIN squadre_SerieA ON campionati_SerieA.idsquadra=squadre_SerieA.id_squadra
WHERE id_stagione='$str_idstag'
ORDER BY nome_squadra
";
$rs_sel_squa = @mysqli_query($link,$strsql_sel_squa) or die("Errore di connessione al DB. " . mysqli_error($link));
while($riga = mysqli_fetch_array($rs_sel_squa)){
$sqf = array($riga['id_squadra'] => $riga['nome_squadra']);
foreach($sqf as $chiave => $valore){
if($riga['id_squadra'] == $str_id_sq_osp){
echo "<option value='$chiave' selected>$valore</option>";
}else{
echo "<option value='$chiave'>$valore</option>";
}
}
}
?>
</select>
</div>
</div>
<div style="width:12.5%;">
<input type="text" name="gol_sq_casa_rit[]" placeholder="Gol rit" value="<?php echo $str_gol_sq_casa_rit; ?>"/>
</div>
<div style="width:12.5%;">
<input type="text" name="gol_sq_osp_rit[]" placeholder="Gol rit" value="<?php echo $str_gol_sq_osp_rit; ?>"/>
</div>
</div>
<?php
}
?>
<div class="row uniform">
<div class="12u$">
<ul class="actions">
<li><input type="submit" value="Modifica tutte le partite" /></li>
</ul>
</div>
</div>
</form>
Il form è generato dalla query valorizzata nella variabile "$strsql_sel_part", mi recupera le partite con squadre e risultati con la clausola WHERE che filtra tra l'id_stagione e l'id_giornata_and, visualizzando con WHILE l'elenco delle partite e valorizzando una serie di input. Questo funziona correttamente con i risultati e squadre giuste. Anche nei campi "options" con le query interne che recuperano l'id_squadra. Per elaborare il form ho un imput hidden questo:
<input name="mod_part" type="hidden" value="mod_partite" />
che richiama la funzione switch() che recupera i dati dal form e poi fa la query UPDATE. Il problema sorge qui, io pensavo che per far passare tutti gli input si potesse usare il foreach() ma sbaglio qualcosa e non riesco a capire dove. Perchè quando clicco sul tasto del form mi modifica i valori nella tabella del database ma li fa tutti uguali all'ultima partita dell'elenco recuperato in precedenza.
Grazie per l'aiuto
Ciao
Tiziano