Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: parametrin välittäminen aliohjelmalle

Sivun loppuun

volume [30.08.2010 12:38:07]

#

ymmärtääkseni alla esimerkissä muuttuja [id] välitetään käsittelevälle ohjelmalle GET-parametrinä:

<?php
echo "<td><a href=\"poistaa.php?id=" .$mysql_tiedot["id"]. "\">poista</a></td>";
?>

jos näin niin miten saan samaisen muuttujan välitettyä POST-parametrinä?

Lebe80 [30.08.2010 13:01:43]

#

Esim. lomakkeella, jossa esimerkissä on piilokenttänä id

<form action="poistaa.php" method="post" >
<input type="hidden" name="id" value="3" />
<input type="submit" value="Poista tuote">
</form>

volume [30.08.2010 14:07:11]

#

entä jos php-ohjhemassa ei ole lomaketta lainkaan, vaan aliohjelma käynnistyy taulukon solun linkistä?

<?php
echo "<table border=\"1\"><tr>
                              <td>id</td>
                              <td>Merkki</td>
                              <td>Malli</td>
                              <td>Vuosi</td>
                              <td>Km</td>
                              <td>Hinta</td>
                              <td>LuonPvm</td>
                              <td>DEL</td>
                              <td>Toiminto</td>
                            </tr>";

       // Luetaan SQL-kyselyn palauttamaa tietoa rivi riviltä
       while($mysql_tiedot = mysql_fetch_array($mysql_haun_tulos)){
       echo "<tr>
               <td>". $mysql_tiedot["id"]."</td>
               <td>". $mysql_tiedot["merkki"]."</td>
               <td>". $mysql_tiedot["malli"]."</td>
               <td>". $mysql_tiedot["vuosi"]."</td>
               <td>". $mysql_tiedot["km"]."</td>
               <td>". $mysql_tiedot["hinta"]."</td>
               <td>". $mysql_tiedot["pvm"]."</td>
               <td>". $mysql_tiedot["delflag"]."</td>
               <td><a href=\"poistaa.php?id=" .$mysql_tiedot["id"]. "\">poista</a></td>
             </tr>";}

  echo "</table>";



?>

Lebe80 [30.08.2010 14:13:09]

#

No sä voit miettiä itse, miten tuommoisen lomakkeen saisi laitettua tuohon linkin tilalle.

Metabolix [30.08.2010 21:51:10]

#

Lisäyksenä edelliseen: napista voi CSS-tyyleillä tehdä aivan linkin näköisen, jos tällä on mielestäsi niin valtava merkitys. Voisit myös lukea vielä ajatuksella uudestaan aiempaan keskusteluun kirjoittamani viestin.

volume [31.08.2010 12:13:16]

#

kun on tekemisissä vähän oudon ja tuntemattoman asian kanssa, niin kysymyksetkin tuppaa joskus olemaan "tyhmiä" ;-)

minusta on hienoa, että täällä saa apuja ongelmiin tälläinen aloittelevakin php-koodari.

mutta tuossa ylläolevassa "ongelmassa" minua hieman sotkee php-ohjelmassa oleva käsite form. ajattelen niin, että form on jotakin jonka täytyy aina näkyä fyysisesti laatikkona näytöllä (vähän niinkuin esim pascalin formi).

tuossa esimerkkikoodissahan ei ole formia lainkaan -on vain taulukon solussa oleva linkki, joka nappaa mukaansa tietueen id:n.

nyt jos haluan vaihtaa parametrin välitysmuuttujaa $_POST-muotoon niin silloin lebe80:n esittämä formi pitää laittaa taulukon soluun sisälle:

<?php
echo "<tr>
         <td>". $mysql_tiedot["id"]."</td>
         <td>". $mysql_tiedot["merkki"]."</td>
         <td>". $mysql_tiedot["malli"]."</td>
         <td>". $mysql_tiedot["vuosi"]."</td>
         <td>". $mysql_tiedot["km"]."</td>
         <td>". $mysql_tiedot["hinta"]."</td>
         <td>". $mysql_tiedot["pvm"]."</td>
         <td>". $mysql_tiedot["delflag"]."</td>
         <td>
           <form action="poistaa.php" method="post" >
             <input type="hidden" name="id" value=". $mysql_tiedot["id"]" />
             <input type="submit" value="Poista tuote">
           </form>
         </td>
      </tr>";}

  echo "</table>";
?>

meniköhän asettelu ihan hongikkoon....yhteys palvelimelle tökkii joten en päässyt testailemaan

-tossu- [31.08.2010 17:08:26]

#

volume kirjoitti:

meniköhän asettelu ihan hongikkoon....

Ei, tuo on ihan oikein. Et tosin tarvitse välttämättä kuin yhden formin; laitat siihen koko taulukon ja teet vain useamman submit-painikkeen.

LaNu [01.09.2010 17:24:15]

#

volume kirjoitti:

mutta tuossa ylläolevassa "ongelmassa" minua hieman sotkee php-ohjelmassa oleva käsite form. ajattelen niin, että form on jotakin jonka täytyy aina näkyä fyysisesti laatikkona näytöllä (vähän niinkuin esim pascalin formi).

Form on HTML:ssä tapa ottaa käyttäjältä syötteitä. Web-ohjelmissa linkillä voidaan korvata get-metodia käyttävä lomake monessa tilanteessa, jos käyttäjältä ei haluta tekstiä/numeroita tms.

Oleellisempi juttu kuin linkki vs lomake on kysymys siitä, pitäisikö lomakkeen metodin olla get vai post. GET ja POST ovat HTTP-viestin muotoja. Get on tarkoitettu tietojen hakuun palvelimelta ja post tietojen lähettämiseen. Tietojen lähettäminen tulisi käsittää tässä hieman laajemmin: palvelinohjelman tilaa pysyvästi muuttavat tiedot pitäisi lähettää post-metodilla. Eli jos tiedot tallennetaan - tai jotain poistetaan, metodin tulisi olla post.

Lomaketta, jonka tyypin pitäisi olla post, ei kannata korvata linkeillä. Se aiheuttaa turhia ongelmia käytettävyyteen. Get-lomake ja linkit ovat navigointia varten. Post-lomakkeena pitäisi toteuttaa kaikki toiminnot, mitkä muuttavat pysyvästi tietoja - esim. tietokantaa.


Sivun alkuun

Vastaus

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

Tietoa sivustosta