• User Newbie

    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:gthi:


  • User Attivo

    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?


  • User Newbie

    @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.


  • User Newbie

    Dovrei nel caso annidare i foreach? Se così fosse come potrei fare? Qualcuno saprebbe darmi una mano?