query UPDATE

ciao,

ho un form select multipla con X valori inseriti.

seleziono X valori e al submit eseguo la query di INSERT nella tabella "lingue"

oltre al valore della select ( che è numerico ) passo alla query anche l'id prodotto relativo.

quindi nella tabella avrò qualcosa tipo:

id_prod  | lingua

1     1

1     3

1     4

fin qua tutto bene.

adesso ho la necessità di modificare, sempre dalla select le lingue appena inserite.

quindi dovrò utilizzare un UPDATE per la tabella.

ma la mia domanda è: se ho appena inserito nella tabella 3 valori numerici provenienti dalla select, e ora voglio inserirne 4 oppure solo 2, UPDATE mi elimina la riga in più ( nel caso passo  da 3 a 2 valori) oppure ne aggiunge una ( nel caso passo da 3 a 4 valori) ?

perchè io sono abituato ad usare UPDATE sempre nel caso in cui il numero di righe presenti nella tabella, corrisponde al numero di righe modificate.

il codice che uso per la query di INSERT è:

<?php 
$prod_id = mysql_insert_id();
$lingua =$_POST['lingua'];
if (count($lingua) > 0){
        foreach ($lingua as $key)     {
            $query = "INSERT INTO tbl_prod_lang (pd_id,id_lang_comics) VALUES ('$prod_id','$key')";
               $result = mysql_query($query) or die("Query fallita");
        }
    }?>

e funziona bene.

il codice che uso per la query di UPDATE:

<?php
$productId   = (int)$_GET['productId'];
$lingua = $_POST['lingua'];
   if (count($lingua) > 0){
        foreach ($lingua as $key)     {
            $query = "UPDATE tbl_prod_lang
                           SET pd_id = $productId, id_lang_comics = $key WHERE pd_id = $productId";
               $result = mysql_query($query) or die("Query fallita");
         }
    }?>

e questo non funziona

inviato 10 anni fa
iTek
iTek
1
X 0 X

L'update aggiorna le righe presenti, se ci sono in più non le aggiunge, se ci sono in meno non le cancella.

Per queste cose devi usare delete e insert.

risposto 10 anni fa
LonelyWolf
X 0 X

ah ecco!

mi pareva infatti. adesso sono sicuro

Grazie! :bye:

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