Terve taas,
Liittyy tuohon edelliseen, mutta pistin kuiten uuden aiheen:
https://www.ohjelmointiputka.net/keskustelu/
Nyt muutin formin (myform) sisälle linkin:
... <input type="hidden" name="tunniste" value="0" /> <!-- tässä pitäisi kulkea ... // tehdään linkki ?> <a href="javascript:muutarivi('<?=$rivinro;?>')" title="Muuta rivin tietoja">Muutos</a> <?php
Kutsuttava funktio on muotoa:
function muutarivi(rivi) { document.myform.tunniste.value=rivi; alert(document.myform.tunniste.value); /*arvo näkyy tässä ok*/ window.location = "index.php?do=1"; }
ja tästä kun jatketaan
$muuta = $_POST['rivi']; echo $muuta; // tulostaa nullin eli ei välity.
Kysymys: Miten tuo siirtyminen funktiossa pitäisi tehdä windows.locationin sijaan?
Jos nyt oikein käsitin, niin laukaisemalla formin submit-metodi:
document.myform.submit();
Jos nyt koodi oli oikein, niin tuon pitäisi tehdä siis sama toiminne kuin käyttäjän painaessa formin submit-nappia.
Noin määkin sen alunperin tein, mutta ongelma on se, että formin submitti
index.php?do=12
on eri kuin tämä mihin nyt pitäisi päästä.
index.php?do=1
Tämänhetkinen järjestelysi on aivan liian riippuvainen JavaScriptistä. Olet oikeastaan tehnyt asian itsellesi paljon vaikeammaksi kuin sen pitäisi olla.
<a href="index.php?do=1&rivi=<?=$rivinro;?>" title="Muuta rivin tietoja">Muokkaa</a>
Toki se vaihtuu $_GETin puolelle, mutta ei pitäisi olla mikään mahdottomuus vaihtaa. Lisäksi toimii ilman JavaScriptiä. Yksinkertaista, helppoa ja toimivaa.
Yeps olet oikeassa - ongelma lähinnä se, kun koodia on x-tuhatta riviä ja tarttis saada toimimaan samoin kuin n50 eri paikasta :-(
Voit selkeyttää hommaasi jakamalla osasia useampaan eri tiedostoon, plus tutkimalla että mitä samanoloisia koodinpätkiä käytät niin moneen kertaan, että asiaa varten kannattaa luoda oma funktio. Mitä lyhyempänä pystyt tiedoston sisällön pitämän, sitä helpompi sitä on ymmärtää ja ylläpitää. Runsaat kommentitkaan eivät ole koskaan pahitteeksi.
Lisäksi tietoturvan kannalta on parempi, että jokaista tapausta varten käsitellään minimaalinen määrä muuttujia, liian suurella määrällä voi jäädä jotain huomaamatta ja saattaa siten mahdollistaa aukon syntymisen
Mikset sitten muuta sitä actionia JS:llä?
document.myform.action = "index.php?do=KEKSI_JOTAIN_FIKSUMPAA" + "&reason=NUMEROITA_ET_KOHTA_ITESKAAN_YMMARRA"; document.myform.submit();
Niinpä siinä se!
Kaunis kiitos Metabolix - sehän oli helppo kun osaa.
Nyt toimii juuri niinkuin oli tarkoituskin. En osaanut vaan hakea oikella hakusanalla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.