Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234

    Aggiornare tabella da array

    Ciao a tutti,
    dovrei aggiornare una tabella in base ad un array di valori dati da un input select multiplo..

    Partiamo dalle tabelle che sono 3:

    la prima news
    idn | tit | txt


    la seconda brand
    idb | nome


    La terza relation
    idr | idn | idb

    uso la tabella relation per avere la possibilità di associare più brand ad una news..

    creando quindi un paio di news ed associandogli dei brand mi ritrovo ad avere in tabella relation una situazione del genere..

    idr | idn | idb
    1 | 1 | 3
    2 | 1 | 6
    3 | 1 | 8
    4 | 2 | 1
    5 | 2 | 3

    dove alla news 1 ho associato i brand con idb 3,6,8 e alla news 2 quelli con idb 1,3
    prelevati dal mio input select multiplo con variabile $rel

    per inserirli ho fatto così:


    Codice PHP:
    $cg $_POST['cg']; //id della news
    if ($rel <> ""):
        foreach(
    $rel as $brandrel){
            
    mysql_query("INSERT INTO relation(idn, idb) VALUES('$cg', '$brandrel')");
        }
    endif; 
    fino qua diciamo tutto bene..
    ora vorrei però che la query controlli se nella tabella relation esistano già relazioni in base all'array passato da $rel e nel caso aggiornare quei record oppure inserirne di nuovi..
    e quelli non presenti nell'array cancellarli..

    tra le mie tante prove mi sono incastrato qua..
    Codice PHP:
    $cg $_POST['cg']; //id della news
    if ($rel <> ""):
        foreach(
    $rel as $brandrel){
            
    $query mysql_query("SELECT * FROM relation WHERE idn='$cg' AND idb='$brandrel'");
            if (
    mysql_num_rows($query) != 0) {
                
    mysql_query("UPDATE relation SET idn = \"$brandrel\" WHERE idn = \"$cg\"");
            }    
            else {
                
    mysql_query("INSERT INTO relation(idn, idb) VALUES('$cg', '$brandrel')");
            }
        }
    endif; 
    Come posso fare?
    Grazie in anticipo..

  2. #2

    Re: Aggiornare tabella da array

    Originariamente inviato da Protooler
    uso la tabella relation per avere la possibilità di associare più brand ad una news..
    Per una relazione 1 a N potrebbe anche non servire una tabella di relazione. Diverso il discorso se la relazione fosse N a N.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Ciao satifal
    mmm..nel caso volessi andare avanti su questa strada?
    Come posso fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Sto provando in questo modo ma senza risultato..

    Codice PHP:
    $cg $_POST['cg']; //id della news
    if ($rel <> ""):
        
    $query "SELECT * FROM relation WHERE idn='$cg' AND idb='$brandrel'";
        
    $res mysql_query($query);
        foreach(
    $rel as $brandrel){
            while (
    $row mysql_fetch_array($res)) :
                echo 
    $row[idb];
                if (
    $brandrel == $row[idb]) {
                    
    $upd1=mysql_query("UPDATE relation SET idb = \"$brandrel\" WHERE idn = \"$cg\"");
                }    
                else {
                    
    $ins1=mysql_query("INSERT INTO relation(idn, idb) VALUES('$cg', '$brandrel')");
                }
            endwhile;
        }
    endif; 

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Nessuno riesce a darmi una mano?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    uppettino

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Eccomi ancora qua..
    ho fatto un po di prove e nel caso in cui l'input select non fosse multiplo ho trovato una soluzione..
    Codice PHP:
    $cg $_POST['cg']; //id della news 
    if ($rel <> ""):
        
    $query mysql_query("SELECT * FROM relation WHERE idn='$cg'");
        if(
    mysql_num_rows($query) != 0) {
            
    $upd=mysql_query("UPDATE relation SET idb = \"$rel\" WHERE idn = \"$cg\"");
            
    //print .$upd"
    ";
        }
        else {
            
    $ins=mysql_query("INSERT INTO relation(idnidbVALUES('$cg''$rel')");
            //print .
    $ins"
    ";
        }
    else:
        
    $del = mysql_query("DELETE FROM relation WHERE idn='$cg' AND idb!='$rel'");
        //print .
    $del"
    ";
    endif; 
    il problema è quando passo più valori in $rel
    e quindi verificare con il foreach se già presenti e comportarsi di conseguenza..
    Spero possiate darmi una mano..
    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Nessuno riesce a darmi una mano..
    continuo a provare ma non riesco a venirne a capo...

    un ultima prova l'ho fatta cercando di confrontare le relation esistenti nel database con quelle dell'input select selezionate.. ma se sia quelle nella tabella che quelle selezionate sono di numero uguali mi aggiorna solo la prima..
    e poi come fare se devo cancellarne o inserirne alcune?
    Codice PHP:
    $cg $_POST['cg']; //id della news 
    if ($rel <> ""):
        
    $size count($rel);
        echo 
    "
    $size Brand collegati alla news $cg dall'input select

    "
    ;
        
    $query mysql_query("SELECT * FROM relation WHERE idn='$cg'");
        
    $num=mysql_num_rows($query); //numero totale di record trovati con la query
        
        
    if ($num != 0){
            if (
    $num == $size){
                echo 
    "
    $num Brand collegati alla news $cg trovati nel database

    "
    ;
                
    $i 0;
                while (
    $i $size) {
                    
    $value$_POST['rel'][$i];
                    echo 
    "$value
    "
    ;
                    
    $query "UPDATE relation SET `idb` = '$value' WHERE `idn` = '$cg' LIMIT 1";
                    
    mysql_query($query) or die ("Error in query: $query");    
                ++
    $i;
                }
            }
        }
        else {
            echo 
    "nessuna relation esistente";
            foreach(
    $rel as $value){
                print 
    "$value
    "
    ;
                
    $ins=mysql_query("INSERT INTO relation(idn, idb) VALUES('$cg', '$value')");
            }
        }
    endif; 

  9. #9
    io non ho capito la domanda... qual'è il problema?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Ciao Santino..
    grazie dell'intervento!
    Nel primo post ho cercato di spiegarlo al meglio..forse non ci sono riuscito!?

    dovrei aggiornare una tabella con dei valori che provengono da un input select multiplo..
    ma prima di salvarli verificare se erano già presenti e quindi fare un update oppure crearli o cancellarli..

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.