Radio Button o Check Box?

ho una tabella contenente dei prodotti

per ogni prodotto devo segnare le sue caratteristiche secondo questo schema:

Prodotto1 - car1 - car2 - car3

Prodotto2 - car1 - car2 - car3

Con le checkbox la cosa sembrava funzionare, con una checkbox per ogni car[atteristica].

<input class="normal" type="checkbox" name="{$car[$key].id}-{$marche[$key].id}" value="1" />

Inviando il modulo ottengo il seguente array:

Array
(
    [2-1] => 1
    [2-2] => 1
    [3-3] => 1
    [1-4] => 1
)

relativo alle caselle che ho checkato.

tutto bene per la prima parte dello script al quale segnalo:

foreach ($_POST as $key=>$value) {

   $key = explode("-", $key);

   $id_categoria = $key[0];
   $id_marca = $key[1];

   $query = "INSERT INTO map_cat_marche
      (id_cat, id_marca) VALUES
      ('$id_categoria', '$id_marca')
      ";
   //$this->db->query($query);

         echo $query."<br />";

}

tutto bene dunque.

solo che ora vorrei fare un'altra cosa ossia:

foreach ($_POST as $key=>$value) {

   $key = explode("-", $key);

   $id_categoria = $key[0];
   $id_marca = $key[1];

   if ($value == 1) {

      $query = "INSERT INTO map_cat_marche
         (id_cat, id_marca) VALUES
         ('$id_categoria', '$id_marca')
         ";
      //$this->db->query($query);

      echo $query."<br />";

   } else {

      $query = "DELETE FROM map_cat_marche 
         WHERE id_cat = $id_categoria AND id_marca = $id_marca
         ";
      //$this->db->query($query);

      echo $query."<br />";

   }

}
inviato 10 anni fa
arjuna
X 0 X

Non sono riuscito a modificare il post.

Questo è quello corretto...:

ho una tabella contenente dei prodotti

per ogni prodotto devo segnare le sue caratteristiche secondo questo schema:

Prodotto1 - car1 - car2 - car3

Prodotto2 - car1 - car2 - car3

Con le checkbox la cosa sembrava funzionare, con una checkbox per ogni car[atteristica].

<input class="normal" type="checkbox" name="{$car[$key].id}-{$marche[$key].id}" value="1" />

Inviando il modulo ottengo il seguente array:

Array
(
    [2-1] => 1
    [2-2] => 1
    [3-3] => 1
    [1-4] => 1
)

relativo alle caselle che ho checkato.

tutto bene per la prima parte dello script al quale segnalo:

foreach ($_POST as $key=>$value) {

   $key = explode("-", $key);

   $id_categoria = $key[0];
   $id_marca = $key[1];

   $query = "INSERT INTO map_cat_marche
      (id_cat, id_marca) VALUES
      ('$id_categoria', '$id_marca')
      ";
   //$this->db->query($query);

         echo $query."<br />";

}

tutto bene dunque.

solo che ora vorrei fare un'altra cosa.

usando le checkbox, la coppia categoria-marca mi arriva solo se la casella è selezionata.

vorrei invece fare in modo che questa coppia arrivi anche se la casella non è selezionata in modo da ricavare tramite $value la marcatura o meno della casella.

Questo mi serve per rimuovere l'associazione di un marchio ad una categoria.

Per fare questo la soluzione che mi viene in mente è svuotare tutta la tabella ogni volta che eseguo questo script.

In questo modo lo script inserirà solo i valori che ha ricevuto dal form.

Questo lo potrei pure fare in quanto tale operazione si esegue non troppo spesso (solo nella fase di setup delle marche o per eventuali aggiornamenti non certo quotidiani).

Solo che mi sembra una soluzione poco elegante!

risposto 10 anni fa
arjuna
X 0 X
Solo che mi sembra una soluzione poco elegante!

Io faccio sempre così, alla fine dei conti si risparmiano query   :P

per cautelarmi da eventuali errori che potrebbero capitare tra la cancellazione e l'inserimento uso le transazioni così se qualcosa va storto nel db la situazione rimane invariata.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

cosa sono le transizioni?

risposto 10 anni fa
arjuna
X 0 X

transazioni, sono (in parolo moooolto povere) un modo per dire a MySQL "esegui le prossime query che ti dirò, poi alla fine ti confermo o meno se rendere duraturi o meno i cambiamenti effettuati ai dati"

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda