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ä?
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>
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>"; ?>
No sä voit miettiä itse, miten tuommoisen lomakkeen saisi laitettua tuohon linkin tilalle.
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.
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
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.