- Home
- Categorie
- Coding e Sistemistica
- Coding
- aggiornare dati in db da tabella
-
aggiornare dati in db da tabella
Buongiorno, vado diretto al problema.
Ho una tabella fatta così:
[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["$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" class="onlyNumber" name="nuovi_punti" value="0" min="0">';
echo '<input type="time" name="data" value="'.$row['aggiornato'].'" readonly="readonly"><br><br>';
}
}
[/PHP]nella quale inserisco dei punteggi, che dovrebbero essere sommati a i punti che ogni utente ha già e che prelevo dal db facendoli vedere nel form.
Il codice scritto fino ad ora è:
[PHP]
if(!isset($_POST['id']) || (empty($_POST['id'])) ){
echo "EROORE 1 <br>";
} else {
$id = $_POST['id'];
}$agg_punti = $_POST['nuovi_punti']; $nome = $_POST['nome']; foreach($id as $nome => $value){ echo "Il nome user è $nome mentre il valore è $value <br>"; } if($update = $mysqli->query("UPDATE ragazzi SET punteggio = punteggio + $agg_punti, aggiornato = NOW() WHERE id = '$id' ")){ echo "<p></p><div class=\"tabella\">Dati aggiornati ed ordinati!</div>"; echo "<meta http-equiv='Refresh' content='500; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; var_dump($nome); echo "<br>"; } else { echo "Aggiornamento non riuscito!\"<br>"; echo "Errore:" . $mysqli->error ."."; }
[/PHP]
ma ovviamente non funziona. Cosa posso fare per poter prelevare tutti i punteggi dalla tabella, metterli in un array associandoli all'id dell'user e poi per ogni utente sommare i punteggi prelevati a quelli già presenti nel db?
Mi sapreste dare un consiglio?
Grazie
-
Cito la 5° riga del primo snippet di codice,
echo '<input type="hidden" name="id["$id"]" value="'.$row['id'].'">';non dovrebbe essere name="id" semplicemente?
-
@Bacca001 said:
Cito la 5° riga del primo snippet di codice,
echo '<input type="hidden" name="id["$id"]" value="'.$row['id'].'">';non dovrebbe essere name="id" semplicemente?
Si in effetti deve essere name=id[] in quanto sono più voci e quindi le devo mettere in array. La logica dovrebbe essere che ad ogni id associo il punteggio da aggiungere e prelevo sempre tramite id il punteggio dal db per poi sommarlo a quello di prima, per poi ottenere un totale che andrà ad aggiornare il db. Spero di essere stato chiaro.
-
Dovrei nel caso annidare i foreach? Se così fosse come potrei fare? Qualcuno saprebbe darmi una mano?