Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Checkbox su form modifica che non funziona

    Salve a tutti.
    Ho un problema su un form per la modifica di dati inseriti nel DB con un checkbox.
    So di essere vicino alla soluzione ma mi sono perso!!

    La checkbox mi deve permettere di modificare il valore nel DB da 0 a 1 o viceversa.
    Ora, il form mi restituisce già il valore corretto, ma se modifico la condizione, tale condizione non viene salvata nel DB.

    Probabilmente è solo una questione di query!

    Il codice della pagina è questo (ho omesso gli altri campi):

    <?php
    require("inc/config.php");

    DB_Connect();
    $query = DB_Query("SELECT * FROM $table WHERE News_ID = '$News_ID'");
    $result = DB_Get_Results($query);

    if ($_POST['cmd'] == FALSE)
    {
    echo "<form name=\"form\" action=\"{$_SERVER['PHP_SELF']}\" method=\"post\">\n";

    echo " <link rel=STYLESHEET type=text/css href=../../stili.css>\n";
    echo " <body topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 bgcolor=#336699>\n";
    echo "<div id=LayoutTable>\n";

    echo "....................

    .......................\n";

    //TESTO EVIDENZIATO
    echo " <tr>\n";
    echo " <td height=24 width=150 valign=middle>\n";
    echo " <p class=destro><span class=TESTObianco>Evidenza News &nbsp</span></p></td>\n";
    echo " <td width=350 colspan=2 valign=middle>\n";

    echo " <input name=\"abilitato[]\" type=\"checkbox\" value=\"$News_Bool[News_ID]\"\n";

    if ($result[9] == 1)
    {
    print "checked";
    }

    echo " </tr>\n";

    //SUBMIT
    echo " <tr>\n";
    echo " <td height=40 width=500 colspan=4 valign=middle>\n";
    echo " <input type=\"hidden\" name=\"cmd\" value=\"edit\" />\n";
    echo " <input type=\"hidden\" name=\"News_ID\" value=\"{$_GET['News_ID']}\" />\n";
    echo " <p class=centrato><input type=\"submit\" value=\"Aggiorna dati\" style=\"border: 1 outset; background-color:#BFE5FF;outline: none\"> </p></td>\n";
    echo " </tr>\n";

    echo " </table>\n";
    echo " </td>\n";
    echo " <td height=448></td>\n";
    echo " </tr>\n";
    echo " <tr>\n";
    echo " <td width=500><img src=../../Resources/_clear.gif border=0 width=500 height=1 alt=></td>\n";
    echo " <td width=2 height=1><img src=../../Resources/_clear.gif border=0 width=2 height=1 alt=></td>\n";
    echo " </tr>\n";
    echo "</table>\n";
    echo "</div>\n";
    echo "</form>\n";
    }
    else
    {
    DB_Query("UPDATE `$table` SET
    `News_DateStart` = '" . $_POST['News_DateStart'] . "',
    `News_DateEnd` = '" . $_POST['News_DateEnd'] . "',
    `News_Title` = '" . $_POST['News_Title'] . "',
    `News_SubTitle` = '" . $_POST['News_SubTitle'] . "',
    `News_Text` = '" . $_POST['News_Text'] . "',
    `News_Link` = '" . $_POST['News_Link'] . "'
    WHERE `News_ID` = '" . $_POST['News_ID'] . "';");

    //ABILITAZIONE SI/NO CHECKBOX
    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form"))
    {
    DB_Query("UPDATE $table SET News_Bool='0'");

    DB_Query("UPDATE $table SET News_Bool='1' WHERE News_ID IN (".implode(',',$_POST['abilitato']).");");
    }

    }

    DB_Close();
    ?>

    La struttura del DB é tinyint 1 default 0 e il nome é News_Bool.

    Premetto che mi sono già letto praticamente tutti i post su questo argomento e dai quali ho anche già attinto parecchio ma ora sono al palo.

    C'è qualcuno che gentilmente mi sa dire dove sbaglio?

    Grazie, confido in voi geni.
    Ric

  2. #2
    codice:
    //ABILITAZIONE SI/NO CHECKBOX
    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form"))
    {
    DB_Query("UPDATE $table SET News_Bool='0'");
    
    } else { 
    
    DB_Query("UPDATE $table SET News_Bool='1' WHERE News_ID IN (".implode(',',$_POST['abilitato']).");");
    }
    Prova così! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3

    Checkbox su form modifica che non funziona

    Grazie mircov

    ma non funziona ancora, però mi viene un dubbio atroce:

    nella riga

    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form"))

    che valore devo usare nel $_POST["MM_update"]
    e nel =="form" ?

    Ti confesso che ho copiato questa parte di script da uno script esistente ed effettivamente non so se questi valori che ho citato sono funzioni di php o sono valori che ha inserito l'autore dello script.

  4. #4
    L'autore dello script? Cioè dreamweaver? Non ne capisci niente di php vero?

    Andiamo con ordine!

    $_POSt è l'array che contiene tutti i valori inviati tramite form.
    La chiave dell'array è il nome del campo mentre il valore dell'array è il valore del campo.

    Per controllare se la checkbox è selezionata o meno, quindi, dovresti inserire tra le parentesi quadre il nome della checkbox, mentre al posto di form il valore che ha la checkbox (quindi la stringa tra virgolette dopo value). Sono cose basilari! Poso anche dirti come fare ma dubito che capirai qualcosa. Ad ogni modo vedi se riesci a combinare qualcosa altrimenti vediaqmo che dobbiamo fare! Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5

    Checkbox su form modifica che non funziona

    Ciao Mircov, grazie per il suggerimento.
    Ho provato a modificare le stringhe come mi hai detto ma mi da sempre errore tipo: implode() bad arguments.

    Questo messaggio di errore me lo da quando la checkbox non è flaggata.
    Comunque, flaggata o no, non si aggiorna.

    Ti riscrivo il codice che sto utilizzando.

    Per la checkbox sul form è:

    //TESTO EVIDENZIATO
    echo " <tr>\n";
    echo " <td height=24 width=150 valign=middle>\n";
    echo " <p class=destro><span class=TESTObianco>Evidenza News &nbsp</span></p></td>\n";
    echo " <td width=350 colspan=2 valign=middle>\n";

    echo " <input type=\"checkbox\" name=\"News_Bool[]\" value=\"$News_Bool[News_ID]\"\n";
    if ($result[9] == 1)
    {
    print "checked";
    }
    echo " </tr>\n";

    E le query sono:
    (QUERY DEGLI ALTRI CAMPI)
    DB_Query("UPDATE `$table` SET
    `News_DateStart` = '" . $_POST['News_DateStart'] . "',
    `News_DateEnd` = '" . $_POST['News_DateEnd'] . "',
    `News_Title` = '" . $_POST['News_Title'] . "',
    `News_SubTitle` = '" . $_POST['News_SubTitle'] . "',
    `News_Text` = '" . $_POST['News_Text'] . "',
    `News_Link` = '" . $_POST['News_Link'] . "'
    WHERE `News_ID` = '" . $_POST['News_ID'] . "';");

    //ABILITAZIONE SI/NO CHECKBOX

    if ((IsSet($_POST["News_Bool"])) && ($_POST["News_Bool"] == "$News_Bool[News_ID]"))
    {
    DB_Query("UPDATE $table SET News_Bool='0'");
    } else {
    DB_Query("UPDATE $table SET News_Bool='1'
    WHERE News_ID IN (".implode(',',$_POST['News_Bool']).");");
    }

    Domanda da 1000 dollari. Ma è necessario usare implode?
    In fondo io ho solo un checkbox con valore 0 o 1.
    Non c'è una operazione più semplice?

    Ti ringrazio.

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.