Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Update multiplo tramite group radio button

    Ciao Raga, urge aiutino
    sono bloccato nel capire come eseguire una query di update su più id, mi spiego meglio.

    ho una tabella del genere
    codice:
    CREATE TABLE `card` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `id_scheda` varchar(10) NOT NULL,
      `articolo_da_votare` varchar(40) NOT NULL,
      `punteggio` int(1) NOT NULL DEFAULT '9',
      PRIMARY KEY (`id`),
      KEY `card_id` (`card_id`) USING BTREE
    ) ENGINE=MyISAM AUTO_INCREMENT=5617 DEFAULT CHARSET=utf8 COMMENT='tabella di tutte le filiali presenti';
    
    -- ----------------------------
    -- Records of card
    -- ----------------------------
    INSERT INTO `card` VALUES ('1', '71', '1', '0');
    INSERT INTO `card` VALUES ('2', '71', '2', '0');
    INSERT INTO `card` VALUES ('3', '71', '3', '0');
    INSERT INTO `card` VALUES ('4', '71', '4', '0');
    INSERT INTO `card` VALUES ('5', '71', '5', '0');
    INSERT INTO `card` VALUES ('6', '71', '6', '0');
    INSERT INTO `card` VALUES ('7', '71', '7', '0');
    INSERT INTO `card` VALUES ('8', '71', '8', '0');
    INSERT INTO `card` VALUES ('9', '71', '9', '0');
    INSERT INTO `card` VALUES ('12', '71', '12', '0');
    INSERT INTO `card` VALUES ('13', '71', '13', '0');
    INSERT INTO `card` VALUES ('14', '71', '14', '0');
    INSERT INTO `card` VALUES ('15', '71', '15', '0');
    INSERT INTO `card` VALUES ('16', '71', '16', '0');
    INSERT INTO `card` VALUES ('28', '83', '1', '0');
    INSERT INTO `card` VALUES ('29', '83', '2', '0');
    INSERT INTO `card` VALUES ('30', '83', '3', '0');
    INSERT INTO `card` VALUES ('31', '83', '4', '0');
    INSERT INTO `card` VALUES ('32', '83', '5', '0');
    INSERT INTO `card` VALUES ('33', '83', '6', '0');
    INSERT INTO `card` VALUES ('34', '83', '7', '0');
    INSERT INTO `card` VALUES ('35', '83', '8', '0');
    INSERT INTO `card` VALUES ('36', '83', '9', '0');
    INSERT INTO `card` VALUES ('39', '83', '12', '0');
    INSERT INTO `card` VALUES ('40', '83', '13', '0');
    INSERT INTO `card` VALUES ('41', '83', '14', '0');
    INSERT INTO `card` VALUES ('42', '83', '15', '0');
    INSERT INTO `card` VALUES ('43', '83', '16', '0');

    ho strutturato un form in cui vengono generati dei gruppi radio button tramite select MySQL

    codice:
    SELECT
    id,
    id_scheda,
    articolo_da_votare,
    punteggio
    FROM card
    WHERE id_scheda = '71'

    In pratica il valore "articolo_da_votare" è la label del gruppo radio button
    un form con replicati in loop (utilizzo un template engine RainTPL) i vari gruppi di radio button, con valori da 1 a 3

    codice HTML:
    <form id="form" action="update.php" method="post">
    {loop name="array"}
    <label>{$value.articolo_da_votare}</label>
    <fieldset id="group{$id}">
     <label>1</label><input id="{$value.id}" name="{$value.id}" type="radio" value="1"/>
     <label>2</label><input id="{$value.id}" name="{$value.id}" type="radio" value="2"/>
     <label>3</label><input id="{$value.id}" name="{$value.id}" type="radio" value="3"/>
    </fieldset>
    {/loop}
    
    <input name="id_scheda" type="hidden" value="{$id_scheda}" /> 
    <button type="button" title="Aggiorna">Aggiorna</button>
    </form>

    Adesso quello che non riesco a capire è come aggiornare in un colpo solo tutti i punteggi dei vari "articoli_da_votare" (id) di tutta la scheda (id_scheda).


    Spero di essermi spiegato comprensibilmente.

    Qualcuno può aiutarmi per favore ?
    Many Thanks

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,509
    Tutti gli articoli della stessa scheda prendono lo stesso punteggio? Oppure ogni singolo articolo ha il suo specifico punteggio?

    Nel primo caso devi fare un ciclo sull'array che arriva dal form ed eseguire una query per ogni scheda facendo l'update con clausola "WHERE id_scheda=..."

    Nel secondo caso devi fare un ciclo sull'array che arriva dal form ed eseguire una query per ogni articolo facendo l'update con clausola "WHERE articolo_da_votare=..."

    PHP non consente query multiple, quindi per forza devi usare un ciclo che esegua una query ad ogni iterazione, se hai la necessità di essere sicuro che tutte vengano eseguite correttamente e, nel caso una fallisse, annullare quelle già eseguite, devi usare una transazione.

  3. #3
    Grazie Alhazred,
    ok, vedo di processare un id alla volta, quindi per ogni "articolo_da_votare" (id) per ogni radio group prevedo un form e relativo pulsante.
    Ogni articolo può ricevere valori (punteggi) da 1 a 3, quindi teoricamente i dati che dovrò rilevare per eseguire la query di update per singolo id saranno: "id" e valore "punteggio" andando semplicemente ad eseguire

    codice:
    UPDATE card SET punteggio = 2 WHERE id = 252

    Il mio problema c'è l'ho nel codice, come faccio a strutturare il form ed in particolare il radio button group per far si che l'utente possa gestire ogni radio button group ?

    Vorrei presentare all'utente l'intera scheda con i tutti i radio button group iterati e ralativo pulsante di update sulla dx di ogni riga, l'utente aggiornerà di volta in volta ogni singolo articolo da votare per singola scheda.

    Come faccio a passare i valori alla pagina.php che dovrà eseguire la query ?

  4. #4
    Nel senso che, per permettere di far funzionare tutti i radio button group il name="" deve essere diverso altrimenti non c'è distinzione all'intero dei gruppi e selezionando un un radio button si deselezionano gli altri.
    Ho pensato di utilizzare come name="" l'id cosi sono tutti diversi per radio group,
    il problema adesso è che non so come gestire la ricezione della variabile $_POST nella pagina php che effettua l'update, visto che
    non conosco il nome della variabile nel mio caso l'id

  5. #5
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    potresti chiamarli così:

    codice:
    <fieldset id="group{$id}">
     <label>1</label><input id="{$value.id}" name="data[{$value.id}]" type="radio" value="1"/>
     <label>2</label><input id="{$value.id}" name="data[{$value.id}]" type="radio" value="2"/>
     <label>3</label><input id="{$value.id}" name="data[{$value.id}]" type="radio" value="3"/>
    </fieldset>
    lato php

    Codice PHP:
    foreach($_POST['data'] as $key => $value){
        
    $id $key;
        
    $voto $value;


  6. #6
    Grande boots !
    Era proprio lo spunto che stavo cercando !!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.