Autor Zpráva
pito
Profil
Zdravím,

Mám formulář na přidání článku na web a mám tři stránky které jsou si podobné.
U formulářů mám checkboxy:
<div class="checkbox">
                                            <label>
                                                <input type="checkbox" class="flat" name="web1" checked="checked"> Web1
                                            </label>
                                            <label>
                                                <input type="checkbox" class="flat" name="web2" checked="checked"> Web2
                                            </label>
                                            <label>
                                                <input type="checkbox" class="flat" name="web3" checked="checked"> Web3
                                            </label>
                                        </div>

do databaze se mi vloží tedy "on" tam kde mám žaškrtnuto.

Jenomže když chci potom článek upravit tak u checkboxu už to není tak správně zaškrtnuto jako v databázi kde v databazi mám "on" u web2 a web3
ale u formuláře kde chci upravit článek jsou zaškrtnuté všechny tři.
Tak to mám když chci z databaze vybrat data (on):

$result = mysql_query("SELECT * FROM example WHERE BookID  = '$id'");
$test = mysql_fetch_array($result);
if (!$result)
{
    die("Error: Data not found..");
}

                            <div class="checkbox">
                                        <label>
                                            <input type="checkbox" class="flat" name="web1" checked="<? if($test['web1'] =='on'){echo 'checked';} ?>"> Web1
                                        </label>
                                        <label>
                                            <input type="checkbox" class="flat" name="web2" checked="<? if($test['web2'] =='on'){echo 'checked';} ?>"> Web2
                                        </label>
                                        <label>
                                            <input type="checkbox" class="flat" name="web3" checked="<? if($test['web3'] =='on'){echo 'checked';} ?>"> Web3
                                        </label>
                                    </div>



Tak jsem to vyřešil jinak
$result = mysql_query("SELECT * FROM example WHERE BookID  = '$id'");
$test = mysql_fetch_array($result);
if (!$result)
{
    die("Error: Data not found..");
}
$Nadpis=$test['Nadpis'] ;
$Clanek= $test['Clanek'] ;

if($test["web1"]=="1"){$web1_zaskr='checked="checked"';}
if($test["web2"]=="1"){$web2_zaskr='checked="checked"';}
if($test["web3"]=="1"){$web3_zaskr='checked="checked"';}

if($test["web1"]=="0"){$web1_zaskr='';}
if($test["web2"]=="0"){$web2_zaskr='';}
if($test["web3"]=="0"){$web3_zaskr='';}

už se zobrazují zaškrtnuté checkboxy podle toho jestli mám v DB 1 nebo 0 ,ale problém je v tom že když chci změnit checkbox v úpravě článku tedy odškrtnu jeden tak mi to napíše chybu Incorrect integer value: '' for column 'web2' at row 1 tedy že nepřiřadí 0 do databáze, naopak to funguje, když zaškrtnu tak to přiřadí 1
Hando
Profil
pito:
Incorrect integer value: '' for column 'web2' at row 1
Skutečně vkládáš do databáze to, co si myslíš? Vypiš si celý insert jako string...
Mimochodem, nepožívej mysql_* rozšíření, je zastaralé a v budoucnu můžeš mít problém s funkčností tvých kódů. Používej alespoň mysqli_*, liší se jen nepatrně.
pito
Profil
no ja při úpravě článku nepouživám insert ale update v tom bude chyba?


tak to vypada, že to je už funkční. Změnil jsem typ v tabulce v databazi z tinyint na text a jede to
juriad_
Profil *
To není dobré řešení. Ukládáš do db nějaký bordel a změnou datového typu to jen podpořuješ.

Ano, vypiš si ten UPDATE a uvidíš, co skutečně ukládáš do db.

Vypadá to, že vkládáš prázdný řetězec, který na číslo nelze převést.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: