Pudotusvalikkoon on haettu kannasta tavarat. Jos käyttäjä ei valitse mitään pudotusvalikosta, sama (vanha) arvo heitetään kantaan uudestaan. Aika kökkö ratkaisu, mutta menköön nyt tämän kerran, koska tietokantakäsky ja muutenkin logiikka on monimutkaisempi mutta toimiva. Tämä vaan tökkii...
$vanha_arvo = //tähän on kannasta haettu arvo, OK $tunnus = $_POST["valikko"]; if ($tunnus == "" ) { $tunnus = $vanha_arvo; } echo $tunnus; // oikea (vanha) arvo löytyy
Kun yrittää heittää kantaan tota tunnus-muuttujaa vanhan päälle, yllättäen meneekin ko. sarake täysin tyhjäksi... Siis ei NULLiksi. Jos tunnus-muuttujaan heittää vaikka stringin "hfiohw", niin kantaan menee notta pölisee.
Hämmästyttää kummastuttaa pientä kulkijaa...
if ($tunnus == "" ) { // ja hyvä olisi myös tarkistaa isset ja strlen $vanha_arvo = //tähän on kannasta haettu arvo, OK (haetaan vasta kun sitä tarvitaan) // ollaan päästy tänne asti, tulosta väliaikaisesti jotain ruudulle echo "arvoa ei asetettu, käytetään vanhaa"; $tunnus = $vanha_arvo; }
Hmmmh, isset palauttaa truen vaikka valikosta ei ole valittu mitään...
isset($_POST['valikko'])
Lomake lähettää aina kaikki lomakkeella olevat kentät pois lukien radiobutton, checkbox, submit ja button joita ei ole valittu tai painettu, tällöin tekstikenttä, select tai muu jota ei edellä mainittu tulee aina PHP:lle ja isset löytää sen. Järkevämpää on vertailla empty($_POST['valikko']) jos kenttä on sellainen että siihen ei kelpaa pelkkä nolla (0).
Ei vaan voi ymmärtää, miten tämä on mahdollista:
$tunnus = $vanha_arvo; // "jjopop" var_dump($tunnus); // string(6) "jjopop", ei mene kantaan $tunnus = "jjopop"; var_dump($tunnus); // string(6) "jjopop", menee kantaan
Ei kellään sattus olemaan hajuakaan ^^ probleemasta? Kyllä mulla loppuu jo logiikka kesken.
Sulla on bugi koodissas. Pistä vaikka koko koodi tänne, sillä voisin vaikka vannoa, ettei nuo näyttämäsi kohdat ole "se" kohta joka "kaataa" koodin.
Jooh, bugittihan se yllättäen. Sain sen fiksattua onneksi pidettyäni muutaman välipäivän koko pashasta :)
Olisi hauska tietää että mikäs oli vialla?
Ite olin tötöillyt sen silleen todella ihmeellisesti :D Jotenkin onnistuin tekemään sen niin, että jotenkin arvo meni NULLiksi. Kantaan meni siis tyhjä arvo ja var_dump() oksensi NULLin. Ihan pikkasen pisti kyllä miettimään. Tein sitten täsmälleen saman haun uudestaan juuri ennen päivityksiä kantaan, ja sitten sai tyrkättyä muuttujan vanhan arvon oikein valikon ollessa tyhjänä.
En kyllä itsekään ole vielä täysin analysoinut tilannetta...
Aihe on jo aika vanha, joten et voi enää vastata siihen.