Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Formin lähetys

Sivun loppuun

faaraot [12.03.2011 09:39:25]

#

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>&nbsp;</p>
</form>

-tossu- [12.03.2011 10:46:49]

#

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.

makumaku [12.03.2011 11:59:11]

#

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>

faaraot [12.03.2011 13:08:39]

#

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.

Lebe80 [12.03.2011 13:40:36]

#

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.

faaraot [12.03.2011 14:56:55]

#

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ä :)

faaraot [12.03.2011 17:01:53]

#

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!

Metabolix [12.03.2011 17:10:22]

#

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);
}

faaraot [12.03.2011 21:33:30]

#

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.

The Alchemist [14.03.2011 08:33:39]

#

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.

makumaku [14.03.2011 09:44:57]

#

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 :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta