Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543

    problemi con update di elenco checkbox

    Salve,
    ho creato una funzione che, a seconda di ciò che viene passato come parametro va ad aggiungere o modificare delle caselle checkbox all'interno di un database mysql.
    L'aggiunta funziona perfettamente, ma la modifica no.
    In sintesi, per aggiungeri utilizzo una stringa concatenata e perciò nell' "INSERT" funziona, ma nell' "UPDATE" che necessità di ogni parametro uguagliato al rispettivo campo del DB non funge.
    Vi posto un pezzo della funzione per spiegarmi meglio:

    Codice PHP:
                            ..............................
                
    $myCheck $_POST['prestazioni'];
                
    $spesa ""
                
    $chiave "";
                
    $values "";
        
                foreach (
    $myCheck as $indice => $valore)
                { 
                    
    $chiave .= $indice.",";
                    
    $values .= "'1',";
                    
    $spesa $spesa $valore;
                }
                
                
    // purifico indici e chiavi privandole dell'ultimo carattere
                
    $values substr($values0, -1);
                
    $chiave substr($chiave0, -1);

                
    $data time();
                
            
                    
    // recupera id della prestazione
                    
    $id mysql_real_escape_string($_GET['id']);
                    
    $sql "UPDATE servizi SET ".$chiave."=$values, data='$data', spesa='$spesa' WHERE id=$id";
                ....................... 
    come ho detto prima, l'inserimento funziona, ma l'update no.
    Cosa mi consigliate?
    "To iterate is human, to recurse, divine." (R.(Heller))

  2. #2
    PROVA A FARE UNA ECHO DELL $sql
    e vedi cosa viene fuori.. penso sia un problema di apici....
    MEMENTO AUDERE SEMPER
    Maxxl

    www.maxxl.it

  3. #3
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    la chiave da come la costruisci è una sequenza di indici con virgola come fai a fare $chiave=$valore????

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    cmq modificherei così
    Codice PHP:
    $myCheck $_POST['prestazioni']; 
                
    $spesa "";  
                
    $chiavesql ""
                
    //$values = ""; 
         
                
    foreach ($myCheck as $indice => $valore
                {  
                    
    $chiavesql .= $indice."= '1',"
                    
    //$values .= "'1',"; 
                    
    $spesa $spesa $valore
                } 
                 
                
    // purifico indici e chiavi privandole dell'ultimo carattere 
                
    $values substr($values0, -1); 
                
    $chiave substr($chiave0, -1); 

                
    $data time(); 
                 
             
                    
    // recupera id della prestazione 
                    
    $id mysql_real_escape_string($_GET['id']); 
                    
    $sql "UPDATE servizi SET ".$chiavesql." data='$data', spesa='$spesa' WHERE id=$id

  5. #5
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    @maxxl non è un problema di apici, ma di sintassi. il comando "INSERT" permette di specificare una lista di campi ad una lista di values; il comando "UDPATE" - se non sbaglio - necessita di ogni campo associato al rispettivo valore. Per questo mi dà errore.
    @bstefano79: sei sicuro che la tua query funzioni? a cosa uguagli $chiavesql ?
    "To iterate is human, to recurse, divine." (R.(Heller))

  6. #6
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    nessuno che sappia darmi qualche aiuto?
    "To iterate is human, to recurse, divine." (R.(Heller))

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Originariamente inviato da the-bit
    @bstefano79: sei sicuro che la tua query funzioni? a cosa uguagli $chiavesql ?
    $chiavesql è una stringa della forma chiave1='1',chiave2='1', ... ,chiaven='1'
    guarda come viene costruita, quindi non va eguagliata a niente.

    solo una cosa. Vanno tolte queste 2 istruzioni che non servono +
    $values = substr($values, 0, -1);
    $chiave = substr($chiave, 0, -1);

  8. #8
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    comunque buona norma quando non funzionano le query è fare un
    echo $query;
    cosi puoi vedere che query vuoi andare ad eseguire

  9. #9
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Forse non riesco a spiegarmi...la sintassi "UPDATE" non prevede di uguagliare ogni valore ad un altro, nel modo
    Codice PHP:
    $query "UPDATE tabella SET tabella.campo1='$valore_passato', tabella.campo2='$valore2_passato', ecc... 
    Nel modo in cui effettuo la chiamata io, invece ho
    Codice PHP:
    $query "UPDATE tabella SET $chiavesql = '$arrayDiValori'. 
    che non è affatto la stessa cosa.
    O sbaglio?

    (P.s. gli echo gli utilizzo quotidinamente per venire a campo di errori)
    "To iterate is human, to recurse, divine." (R.(Heller))

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.