Autor Zpráva
Fergi
Profil
zdravim
mam tento kod ktery mi z nesmylneho duvodu nezapise hodnotu jmeno do DB .... me by zajimalo proc? kdyz ostatni to zapise tak proc tento ne...?
takze mam formular
<form action="/guestbook/admin.php?akce=obecna" method="post">
                        <h2>Název/titulek knihy:</h2>
                                <input type="text" name="jmeno" value="" />
                        <h2>Počet příspěvků na stránku:</h2>
                                <select name="pocet" size="1" style="width: 50px;"> 
                                        <option value="5" >5
                                        <option value="10" selected>10
                                        <option value="15" >15
                                        <option value="20" >20
                                </select>
                        <h2>Počet starých příspěvků v databázi:</h2>
                                <select name="historie" size="1" style="width: 50px;"> 
                                        <option value="20" >20
                                        <option value="50" >50
                                        <option value="100" selected>100
                                        <option value="200" >200
                                        <option value="500" >500
                                        <option value="1000" >1000
                                </select>
                        <h2>Ochrana proti spamu:</h2>
                                <input type="checkbox" checked name="antispam" style="width: 20px;"><br />
                        <h2>Chráněná jména:</h2>
                                <input type="checkbox" checked name="jmena" style="width: 20px;"><br />
                        <input type="submit" name="ok" value="Uložit" class="tlacitko" /> 

ukladam do db takto
obecna_nastaveni_zmena($_POST[jmeno],$_POST[pocet],$_POST[historie],$_POST[antispam],$_POST[jmena]);

tato funkce vypada takhle
function obecna_nastaveni_zmena($jmeno,$na_stranku,$historie,$antispam,$jmena) {
        if(!$jmeno) {
                print("Musíte vyplnit jméno návštěvní knihy.");
        } else {
                if($antispam == "on") {
                        $antispam = "1";
                } else {
                        $antispam = "0";
                }

                if($jmena == "on") {
                        $jmena = "1";
                } else {
                        $jmena = "0";
                }

                $jmeno = htmlspecialchars(escapeshellcmd($jmeno));
                $sql = "UPDATE gb_nastaveni SET jmeno = '$jmeno', na_stranku = '$na_stranku', historie = '$historie', antispam = '$antispam' , jmena = '$jmena' WHERE id = '1';";
                mysql_query($sql) or die($hlavicka."Chyba databáze. Zkuste prosím akci zopakovat později.<br /><a href='javascript:history.go(-1)'>Zpět</a>".$paticka);
        }
}

dik za odpovedi
fergi
Tomasds
Profil
zkus začít tímto:
$sql = "UPDATE gb_nastaveni SET jmeno = '".$jmeno."', na_stranku = ".$na_stranku.", historie = ".$historie.", antispam = ".$antispam." , jmena = ".$jmena." WHERE id = 1";
Fergi
Profil
nefaka... :(, ale dik
Tomasds
Profil
takže klasicky: vypiš si $sql, otevři si phpadmin, ručně mu to dej a přečti si, co ti zobrazí za hlášku.
Fergi
Profil
ted me tak napada , jediny $jmeno prochazi htmlspecialchars a escapeshellcmd nemuze to byt tim?
Tomasds
v SQL pravdepodobne chyba neni protoze vsechno ostatni se ulozi ..... ale muzu to zkusit
Tomasds
Profil
Fergi
Aha, špatně jsem četl. Jestli se všechno ostatní uloží a v tom vypsaném $sql vidíš, že tam opravdu něco ukládáš, tak ještě připadá v úvahu problém s datovým typem, třeba že pole "jmeno" v databázi je číselné.
Fergi
Profil
Tomasds
bohuzel tim to neni ... pole je varchar(100)
Tomasds
Profil
Co je v tom $sql?
Fergi
Profil
$sql = "UPDATE gb_nastaveni SET jmeno = '$jmeno', na_stranku = '$na_stranku', historie = '$historie', antispam = '$antispam' , jmena = '$jmena' WHERE id = '1';";
Fergi
Profil
mam to :) mohlo za to escapeshellcmd($jmeno)
Tomasds
Profil
probůh.. ptám se na obsah proměnné ... to co ti vypíše echo $sql; Kód vidím taky. A vidím že sis tam na konec vrátil ten středník, který jsem ti nenápadně doporučil odstranit, protože nevím, jestli nezpůsobuje problém. O apostrofech kolem jedničky na konci nemluvím.
Fergi
Profil
to uz je jedno .... mohla za to fce escapeshellcmd() je to vyresene.....diky moc za pomoc ;)
Tomasds
Profil
Než zase příště budeš postupovat metodou pokus-omyl, zkus to tak jak jsem to psal. Vytvořit dotaz do proměnné, zobrazit ho, pak zkopírovat ručně do phpmyadmin a tam zkusit provést. Kdybys to udělal i v tomto případě, ušetřil bys 40 minut a toto vlákno by neexistovalo.
Alphard
Profil
Tomasds:
K získání textu chyby stačí použít použít mysql_error(), není třeba nic nikam kopírovat.

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: