Jos saan kolme eri formia sivulle niin miten saan tiedot juuri siitä formista siirtymään eteenpäin josta painaa lähetä?
<form id="form1" name="form1" method="post" action=""> <p> <label>nimi <input type="text" name="Nimi" id="Nimi" /> </label> </p> <p> <input type="submit" name="button" id="button" value="Submit" /> </p> <p> </p> </form>
faaraot kirjoitti:
Jos saan kolme eri formia sivulle niin miten saan tiedot juuri siitä formista siirtymään eteenpäin josta painaa lähetä?
Tiedot lähtevät automaattisesti siitä formista, jonka submittia käyttäjä painaa.
Eikö tälläiset asiat olisi mukava ihan itsekin tutkia. Uskoisin että samalla jopa huomaa paremmin miten homma toimii.
<?php // tiedosto test.php echo '$_POST : '; print_r($_POST); ?> <p> <form name="form1" method="post" action="test.php"> From 1 : <input type="text" name="nimi1" /> <input type="submit" name="button1" value="submit1" /> </form> <form name="form2" method="post" action="test.php"> From 2 : <input type="text" name="nimi2" /> <input type="submit" name="button2" value="submit2" /> </form> <form name="form3" method="post" action="test.php"> From 3 : <input type="text" name="nimi3" /> <input type="submit" name="button3" value="submit3" /> </form> </p>
Pikkasen jäi kertomatta. Miten tohon saa että se lähettää tiedot functiolle. Eli saan sen toiminaan php_self ja teen isset ja sinne function. Käytän ajax komentoja joten haluan että koko sivu ei päivity.
Eli nimenomaan ettei koko sivu päivity.
Itse oon huomannu, et helpoiten ajax-kikkareet toimivat niin, että lähetetään formin mukana jokin parametri (esim. ajax=1), josta php-saa tiedon että nyt tuleekin lomakkeesta tietoa ja halutaan tulostaa sivu "ajax"-muodossa. Tällöin esim. palautesivulla jätetään kaikki muu tulostamatta, paitsi lomakeen kohta, jossa virheen sattuessa näytetään virheilmoitus ja esitäytetty lomake, ja onnistuessaa vain kiittely-teksti.
Homma ei tällöin ole ihan täysin "ajaxia", mutta hallinnointi on paljon yksinkertaisempaa.
Miksi tämä koodi ei lähetä tämän formin tietoja! siis lähettää se tiedot mutta jos näitä formeja on kaksi sivuilla niin ei lähetä ku viimeksi tulostetun formin tiedot.
<? haetaan tietokannasta ja määritetään tietoa while($row = mysql_fetch_array($result)) { ?> <form method="post" name ='<? echo $id; ?>' > <table width="361" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="49"><? echo $a; ?></td> <td width="75"><input type='text' id='a' value='' size="1" />min</td> <td width="100"><? echo $b; ?> </td> <td width="237"> <input type='hidden' id='c' value='<? echo $c; ?>' /> <input type='hidden' id='d' value='<? echo $d; ?>' /> <input type='hidden' id='e' value='<? echo $e; ?>' /> <button type="button" onclick="lisaatietokantaan(), naytatiedot()">lisää tieto</button> </td> </tr> </table> <p>-----------</p> </form> <? } ?>
functiot on ajaxia, ja pelaa tosi hyvin. nyt kun vain saisin juuri tuon formin tiedot lähetettyä niin hyvä :)
Tällä tavoin sain sen toimimaan. Mutta miten saisin muutettua tuon "TÄHÄN" document."TÄHÄN".id.value vastaamaan juuri kyseistä formin nimeä?
var id = document.testi.id.value; var nimi = document.testi.nimi.value; var queryString = "?id=" + id + "&nimi=" + nimi; ajaxRequest.open("GET", "lisaa.php" + queryString, true); ajaxRequest.send(null);
Kun tulostan formit saan formin nimen muuttuman automaattisesti esim. form1, form2, form3, tämä tieto pitäs vielä saada siirtymään lähetyksen yhteydessä javan document."tähän".id.value
Mod. vaihtoi taas JS-kooditagit JS-koodille!
Mikä ihme siinä oikeiden kooditagien käytössä on noin vaikeaa? Ei todellakaan anna hyvää kuvaa kysyjästä, kun ei viitsi edes tuollaista pientä vaivaa nähdä.
Olen rehellisesti sitä mieltä, että jos aikasi tai kiinnostuksesi ei riitä siihen, että opettelisit itse ohjelmoimaan, sinun pitäisi palkata joku muu tekemään noita hommia. Tässä jatkuvassa kyselemisessä ei ole mitään järkeä.
Lopuksi vielä pari lyhyttä koodinpätkää kysymykseesi. Lisää onclick-tapahtuman funktiokutsuihin this.form ja JS-funktioihin form-parametri, jota voi käyttää tuon document.testin tilalla.
<button type="button" onclick="lisaatietokantaan(this.form), naytatiedot(this.form)">lisää tieto</button>
// Lisätään form sulkuihin. function lisaatietokantaan(form) { // Vaihdetaan document.testi -> form alert(form.juttu.value); }
Juu löysin ohjeet juuri kuten kerroit ja alko pelaan. Kiitokset kuitenkin. Jatkuvassa kyselyssä on juuri se idea että oppii. Jos ei kiinnosta vastailla niin vaihda palstaa. Mee vaikka Suomi24:lle ruikuttaan.
Jatkuva kysely vie aikaa sekä sinulta itseltäsi että niiltä, jotka erehtyvät hyvää hyvyyttään vastaamaan. Perusasiat eivät ole monimutkaisia vaan ne oppii perehtymällä... asiaan. Et tule oppimaan yhtään mitään, jos metodisi on tämä, että aamulla käyt avaamassa threadin 'Putkaan ja illalla lukemassa vastauksen.
faaraot kirjoitti:
Jos ei kiinnosta vastailla niin vaihda palstaa. Mee vaikka Suomi24:lle ruikuttaan.
Heh, siis vain kaksi vaihtiehtoa, Joko vastailla sinun kysymyksiin, tai sitten ei ole asiaa tälle palstalla ollenkaan :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.