Miten ihmeessä/onko mahdollista?
Minulla on yksinkertainen lomake:
<form action="<?php print $PHP_SELF?>" method = "POST"> <!--Kentät--> Etunimi: <br/><input type="text" name="etunimi" /><br/> Sukunimi: <br/><input type="text" name="sukunimi"" <!--Painikkeet--> <input type="submit" name="lisays" value="Lisää" /> <input type="submit" name="haku" value="Hae sukunimellä" /> </form>
Ja käsittelen lomaketta:
if (isset(lisays)) //Koodi, joka tallentaa tietokantaan. Tämä on helppo. if (isset (haku)) //Olen syöttänyt sukunimen sukunimi-kenttään ja haluan hakea etunimen. //Tämäkin on vielä helppoa.
Mutta millä ihmeellä saan hakemani etunimen laitettua formin etunimi -kenttään? Täytyykö tässä nyt käyttää JavaScriptiä tai tulostaa PHP:llä ihan erillinen lomake vai onnistuuko tuon tiedon haun tekemään jotenkin PHP:llä?
Mod. lisäsi kooditagit!
Millainen on haluttu lopputulos? Riittääkö sellainen toiminto, jossa jo syötetty etu- ja sukunimi on tulostettuina lomakkeen kenttiin, kuten tuosta tajusin vai tarvitaanko jotain muuta? Mikäli tuo riittää voit vain tulostaa value atribuutille arvon $_POST['sukunimi'] ja vastaavan etunimelle.
Riittää sellainen toiminto, että etunimi ja sukunimi ovat tulostettuina lomakkeen kenttiin. Ja näinkin olen sitä kokeillut (mutta lomake pysyy tyhjänä):
Jaa, niin tietty. Ohjelmahan suorittaa ensin lomakkeen, sitten if- testit ja tiedosto päättyy siihen. Mitenkähän sen saisi kutsumaan itseään uudelleen yhden kerran, kun nuo sijoitukset on tehty?
Haluat ilmeisesti, että käyttäjän antama arvo pysyy siinä lomakkeessa?
<form action="" method="post"> <input type="text" name="etunimi" value="<?php echo $_POST ['etunimi']; ?>">
Tuohon kannattaa lisätä vielä tarkistus, onko $_POST ['etunimi'] olemassa.
Eikös olisi ihan ok jos teet sen näin?
Tämän jälkeen vain tuo sinun lomakekoodi, mutta input-kenttien value atribuuttiin nuo $etunimi ja $sukunimi muuttujat vaikka echolla tulostellen.
Sun pitää muuttaa sitä inputin value-attribuuttia.
Edit. Hidas minä.
-tossu- varmaankin ratkaisi ongelman oikein, mutta lisäksi pitää ehdottomasti käyttää htmlspecialchars-funktiota tulostettavan arvon ympärillä, erityisesti silloin, kun se tulee suoraan käyttäjän lähettämistä tiedoista.
Ei onnistu vieläkään. Selvennän uutta oppimaani käyttäen.
<form action="<?php print $PHP_SELF?>" method = "POST"> <!--Kentät--> Etunimi: <br/><input type="text" name="etunimi" value="<?php echo $_POST ['etunimi']; ?>"/><br/> Sukunimi: <br/><input type="text" name="sukunimi" value="<?php echo $_POST ['sukunimi']; ?>"/><br/> <!--Painikkeet--> <input type="submit" name="lisays" value="Lisää" /> <input type="submit" name="haku" value="Hae sukunimellä" /> </form> <?php if (isset($lisays)) //Tähän lisäys koodia, OK toimii. if (isset ($haku)) //Tähän hakukoodia ja tulokset halutaan sinne lomakkeen etu- ja sukunimi -kenttiin, haun tuloksena esim. Eemeli Meikalainen { $_POST['etunimi'] ="Eemeli"; $_POST['sukunimi']="Meikäläinen"; } ?>
Lomakkeiden kentät pysyvät tyhjinä. Mitähän minä nyt ymmärrän väärin?
Kyllä, tuo htmlspecialchars-funktio on tärkeä.
PHP-koodi ajetaan jokaisella sivunlatauksella alusta loppuun ylhäältä alaspäin. Käsittelykoodin pitää siis olla ennen tulostusta, eihän noita uusia etunimi- ja sukunimiarvoja muuten tiedetä tulostusvaiheessa.
Joku tällainen versio voisi olla ihan paikallaan oikeasti funktiot olisi hyvä olla jossakin yhdessä paikassa, jotta kokonaisuus pysyisi loogisena. Tämä nyt kuitenkin toimii virheittä ja juuri kuten eija haluaa.
<html> <head> <title>Esimerkki</title> </head> <body> <?php function siivoa_syote($s) { $s = stripcslashes($s); $s = htmlspecialchars($s); return trim($s); } if (isset($_POST ['etunimi'])) { $etunimi = siivoa_syote($_POST['etunimi']); $sukunimi = siivoa_syote($_POST['sukunimi']); } else { $etunimi = ""; $sukunimi = ""; } ?> <form action="" method="post"> <p><label for="etunimi">Etunimi:</label><input type="text" name="etunimi" value="<?php echo $etunimi ?>"/></p> <p><label for="sukunimi">Sukunimi:</label><input type="text" name="sukunimi" value="<?php echo $sukunimi ?>"/></p> <p><input type="submit" name="lisays" value="Lisää" /> <input type="submit" name="haku" value="Hae sukunimellä" /></p> </form> </body> </html>
Kiitos kaikille vastauksista. Tuo Metabolixin ohje oli se viimeinen puuttuva palikka tämän koodaus toteutuksen ymmärtämiseksi!
Olen opettelemaa MVC-arkkitehtuuria ja olio-ohjelmointia PHP:llä, mutta nuo PHP:n alkeetkin on vielä hakusessa. Suomenkielistä oppikirjaa PHP:n olio-ohjlemoinnista ei ole saatavissa, olemassa olevissa on vain vähän vihjauksia siihen miten olio-ohjelmointia PHP:llä toteutetaan.Perintä löytyy jostain kirjasta, assosiaatio toisesta, mutta aggregaattia ja rajapintaa ei mistään. Kauko Kolehmaisen kirjassa on tuosta MVC-arkkitehtuurista aika selkeä sovellusesimerkki.
eija kirjoitti:
Kauko Kolehmaisen kirjassa on tuosta MVC-arkkitehtuurista aika selkeä sovellusesimerkki.
Kauko Kolehmaisen kirja kannattaa välittömästi vetää vessanpöntöstä alas. Kirjan koodiesimerkit ovat netissä jaossa, ja jokainen ohjelmointia kunnolla ymmärtävä näkee suoraan, että suurin osa niistä on toteutettu todella hankalasti, rumasti, huonosti ja jopa bugisesti. Niistä ei todellakaan kannata ottaa mallia.
Esimerkiksi mainitsemallasi "MVC-arkkitehtuurista" kertovalla koodilla ei ole kerta kaikkiaan mitään yhteistä sen oikean MVC-arkkitehtuurin kanssa.
Kaikkein huolestuttavinta on, että tuollaista materiaalia julkaistaan kehuvien takakansitekstien saattelemana. Herran suosio taitaa perustua siihen, että huonotkin koodarit tuntevat olevansa aika taitavia, kun osaavat kirjoittaa yhtä "hyvää" koodia kuin oppikirjassa.
Metabolix kirjoitti:
Kauko Kolehmaisen kirja kannattaa välittömästi vetää vessanpöntöstä alas.
Jos ei kuitenkaan: http://www.pytty.fi/files/591/
Mutta joo, kieltämättä huolestuttavaa kun meriitiksi mainitaan
lainaus:
Koodilistauksia on noin 150 kappaletta, jotka on testattu koeajoin.
Metabolix kirjoitti:
Herran suosio taitaa perustua siihen, että huonotkin koodarit tuntevat olevansa aika taitavia, kun osaavat kirjoittaa yhtä "hyvää" koodia kuin oppikirjassa.
Tai sitten ohjelmoinnissa pätee sama kuin musiikissa: ne jotka eivät osaa riitävän hyvin ryhtyäkseen ammattilaisiksi, ryhtyvät opettajiksi.
Lukaisin tuon materiaalin läpi, mutta ei oikein kyllä vakuuta. Epäselkeä ohjelmointityyli, epäonnistuneet muuttujanimet, epälooginen sisennys tällaisia tuli ensimmäisenä mieleen. MVC-mallista kertovaa koodia en tuossa nähnyt missään, joskaan en sitä juuri hakenutkaan.
Onko Kauko Kolehmainen ammattilainen, mitä minä oikein luen? O_o
Grez kirjoitti:
Metabolix kirjoitti:
Kauko Kolehmaisen kirja kannattaa välittömästi vetää vessanpöntöstä alas.
Jos ei kuitenkaan: ...
Hyppäsin suoraan lopputulokseen. Välivaiheiksi sopivat kirjan vieminen kierrätyspisteeseen, jotta siitä voidaan valmistaa uusiovessapaperia, jonka vetäminen vessanpöntöstä on pönttösäädösten mukaista.
Teuro kirjoitti:
MVC-mallista kertovaa koodia en tuossa nähnyt missään
Katso hakemistoihin 18 ja 23. Voi olla, että koodin ajatus aukeaisi paremmin kirjan tekstin kanssa, mutta ei se missään tapauksessa järkevää koodia ole.
Tarkoitatkos että kenttiin tulee alussa jotkin sanat?
Aihe on jo aika vanha, joten et voi enää vastata siihen.