Ritorno sull'argomento (in quanto già discusso in un altro thread chiuso) sperando che qualcuno mi sappia dare un consiglio, almeno su come approcciare il problema.
Ho un form con diversi campi input, prelevo dal mio db il nome utente, l'id, e i punti e popolo i campi con i dati. Questo sistema mi permette di creare al momento una sorta di tabella dove ad ogni utente è associato il punteggio, e mi facilita l'aggiornamento e quindi la modifica dei punti per ogni utente, per evitare di farli manualmente e per ogni singolo user. Quindi ho un campo dove inserirò il punteggio da aggungere, lui me lo sommerà a quello presente nel db e mi restituirà il punteggio correttamente aggiornato.
Il mio problema è che non riesco a capire come fare per associare i dati al momento dell'invio.
Da quello che ho capito devo usare un foreach(), ma lo devo fare per ogni campo? Li devo fare singolarmente oppure annidarli? Questo è il codice che mi crea la pagina è:
Codice PHP:
<?php
if($result = $mysqli->query("SELECT id,nome,cognome,punteggio,aggiornato FROM ragazzi ORDER BY punteggio DESC")){
while ($row = $result->fetch_assoc())
{
echo '<input type="hidden" name="id[]" value="'.$row['id'].'">';
echo '<input type="text" name="nome[]" value="'.$row['nome'].' '.$row['cognome'].'" readonly="readonly">';
echo '<input type="text" name="punteggio[]" value="'. $row['punteggio'].'" readonly="readonly" >';
echo '<input type="number" name="nuovi_punti[]" class="onlyNumber" value="0" min="0">';
echo '<input type="time" name="data" value="'.$row['aggiornato'].'" readonly="readonly"><br><br>';
}
}
?>
mentre questo è il controllo campi e elaborazine:
Codice PHP:
if(!isset($_POST['id']) || (empty($_POST['id'])) ){
echo "ERRORE id <br>";
} else {
$id = $_POST['id'];
}
if(!isset($_POST['nuovi_punti']) || empty($_POST['nuovi_punti'])){
echo "Error nuovi punti";
} else {
$agg_punti = $_POST['nuovi_punti']; // Punti associati all'user di partenza
}
if(!isset($_POST['punteggio']) || (empty($_POST['punteggio']))){
echo "error punteggio";
} else {
$punteggio = $_POST['punteggio']; //Array con i punteggi da sommare
}
if(!isset($_POST['nome']) || (empty($_POST['nome']))){
echo "error nome";
} else {
$nome = $_POST['nome']; // Nome dell'user
}
foreach($id as $value){
foreach($punteggio as $old_points){
foreach($agg_punti as $new){
$new_point = $new + $old_points;
if($update = $mysqli->query("UPDATE ragazzi SET punteggio = '$new_point', aggiornato = NOW() WHERE id = '$value' ")){
echo "<p></p><div class=\"tabella\">Dati aggiornati ed ordinati!</div>";
echo "<meta http-equiv='Refresh' content='500; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
echo "OOOOOOOOKKKKKKKKKKKKKKKK!!!! <br>";
} else {
echo "Aggiornamento non riuscito!\"<br>";
echo "Errore:" . $mysqli->error .".";
}
}
}
Premetto che non mi interessa avere il codice già pronto per fare copia ed incolla
, ma un consiglio su come venirne fuori.
Quindi i diversi foreach() li devo nidificare? Ha un senso farlo? Dovrei utilizzare un altro sistema?
Grazie.