Visualizzazione dei risultati da 1 a 4 su 4

Discussione: form tabella e foreach

  1. #1
    Utente di HTML.it L'avatar di Paperino78
    Registrato dal
    Aug 2012
    residenza
    Milano
    Messaggi
    71

    form tabella e foreach

    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.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Troppo difficile spiegare con delle parole. Studia questo.

    Codice PHP:
    <?php
    foreach($id as $key => $value){
      
    $old_points $punteggio[$key];
      
    $new        $agg_punti[$key];
      
    $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 .".";
      }
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it L'avatar di Paperino78
    Registrato dal
    Aug 2012
    residenza
    Milano
    Messaggi
    71
    Grazie badaze, prendo spunto e ci ragiono.

  4. #4
    Utente di HTML.it L'avatar di Paperino78
    Registrato dal
    Aug 2012
    residenza
    Milano
    Messaggi
    71
    Grazie badaze, il codice fa quello che cercavo, ci ragiono per ulteriori sviluppi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.