Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92

    Update tabella non sempre effettuato

    Ciao, il mio codice è il seguente:

    Codice PHP:
    elseif(isset($_POST['submit_ven']))         
    {
                  if(isset(
    $_POST['id']))              
                  {
                        foreach(
    $_POST['id'] as $idv)
                       {
                                
    $query mysql_query("SELECT VENDUTO FROM ".$_GET['lista']." WHERE ID = '$idv'")                   while($row mysql_fetch_assoc($query))
                       {
                                
    $venduto $row['VENDUTO'];                 
                        }
                        if(
    $venduto == ' ')
                        {
                                
    mysql_query("UPDATE ".$_GET['lista']." SET VENDUTO = 'V' WHERE ID = '$idv'")or die(mysql_error());
                           
    header("Location: index.php?pag=lista_nozze&lista=".$_GET['lista']."");
                           
    ob_flush();
                        }
                        else
                        {
                               
    mysql_query("UPDATE ".$_GET['lista']." SET VENDUTO = ' ' WHERE ID = '$idv'")or die(mysql_error());
                           
    header("Location: index.php?pag=lista_nozze&lista=".$_GET['lista']."");
                           
    ob_flush();
                        }
                     }
                         }
                  else
                  {
                     echo 
    '<div class="risp"><h3>Devi selezionare almeno un oggetto</h3></div>';
                    }
              } 
    Praticamente, dovrebbe inserire la lettera V nel campo venduto se questo è vuoto altrimenti deve eliminare la lettera V.
    Questa cosa però non la fa sempre, a volte lo fa dopo un tentativo, a volte dopo due, a volte subito. Come può essere?
    Se vi serve il codice di tutta la pagina ve lo posto.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Secondo me il tuo problema è qui
    if($venduto == ' ')

    Tu stai chiedendo se in $venduto c'è il carattere spazio, ma se il campo è vuoto non c'è neanche quello (a meno che tu abbia specificato il carattere spazio come default per il campo "venduto" quando hai creato la tabella, lo hai fatto? Altrimenti ci sarà il campo vuoto, non lo spazio), quindi in realtà il tuo sistema si aspetta 3 situazioni diverse, una col campo vuoto, una con il carattere spazio e una col carattere V.

    Uniforma tutto, invece del carattere spazio, metti il campo vuoto e il controllo fallo sul campo vuoto.

    if($venduto == '')
    e
    SET VENDUTO = ''

    In caso tu ce l'abbia anche in qualche insert, imposta anche lì '' per il campo venduto, non mettrci ' '.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    92
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Secondo me il tuo problema è qui
    if($venduto == ' ')

    Tu stai chiedendo se in $venduto c'è il carattere spazio, ma se il campo è vuoto non c'è neanche quello (a meno che tu abbia specificato il carattere spazio come default per il campo "venduto" quando hai creato la tabella, lo hai fatto? Altrimenti ci sarà il campo vuoto, non lo spazio), quindi in realtà il tuo sistema si aspetta 3 situazioni diverse, una col campo vuoto, una con il carattere spazio e una col carattere V.

    Uniforma tutto, invece del carattere spazio, metti il campo vuoto e il controllo fallo sul campo vuoto.

    if($venduto == '')
    e
    SET VENDUTO = ''

    In caso tu ce l'abbia anche in qualche insert, imposta anche lì '' per il campo venduto, non mettrci ' '.
    Grazie, sembra che il problema sia risolto.

  4. #4
    Potresti fare anche una singola query (non so come hai impostato il $_POST['id'] ma si potrebbe togliere anche quello, comunque...):
    Codice PHP:
    UPDATE tabella SET VENDUTO = CASE
      
    WHEN VENDUTO '' THEN 'V'
      
    WHEN VENDUTO 'V' THEN ''
    END CASE
    WHERE ID '1234' 
    Una cosa importante: OCCHIO a quello che metti dentro le tue query, se le lasci come sono e io dentro $_GET['lista'] ci metto
    Codice PHP:
    '; DELETE * FROM tabella; SELECT *' 
    (ad esempio) ti svuoto il database...

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da html5today Visualizza il messaggio
    ...
    Una cosa importante: OCCHIO a quello che metti dentro le tue query, se le lasci come sono e io dentro $_GET['lista'] ci metto
    Codice PHP:
    '; DELETE * FROM tabella; SELECT *' 
    (ad esempio) ti svuoto il database...
    Così non dovrebbe funzionare, perché PHP ti vieta di eseguire più di una query per ogni mysql_query(), e il tuo codice ne richiede 3.

  6. #6
    Giusta osservazione. E' comunque sempre buona norma validare e aggiustare l'input prima di passarlo ad una qualsiasi query: oltre a problemi di sicurezza ne va della integrità dei dati.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da html5today Visualizza il messaggio
    Giusta osservazione. E' comunque sempre buona norma validare e aggiustare l'input prima di passarlo ad una qualsiasi query: oltre a problemi di sicurezza ne va della integrità dei dati.
    Ovviamente

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.