Joo - olen lukenut ohjelmointioppaita enkä ole kerjäämässä ilmaista koodia. Jos saisin edes vinkkejä toimivista keinoista, niin olisin kiitollinen!
Eli miten saisin palautettua tietokantaan lisättyä tietoa formiin, jotta tietoja voisi muokata? Tämä voisi olla siis vaikkapa profiilisivu/-lomake, jota ei tarvitsi esim. puhelinnumeron muututtua täyttää kokonaan uudestaan, vaan muokata vain muuttunut puhelinnumero ja tallentaa muutokset.
Yritin googletella tietoa, mutta löysin vain ohjeita tapauksiin, joissa tieto ei ole edes vielä lähtenyt formista tietokantaan (formin tarkistus).
Ja todella olisin kiitollinen jo joistain avainsanoista tähän liittyen - mistä kannattaa lähteä?
Hae tiedot tietokannasta ja tulosta lomakkeelle. Kannattaa tulostaa piilokenttään myös muokattavan rivin id, että osaa sitten päivittää oikean rivin, kun lomake lähetetään. Mikä vaihe tässä on vaikea ymmärtää?
No ihan tämmösenä tyhmänä kysymyksenä - kannaattaako ne tulostaa lomakkeelle yksitellen input typen value-kohtiin? Vituttaa koodareiden päteminen huonosta ja kömpelöstä koodista ja kuinka tuon olisi voinut koodata paljon järkevämmin yms yms. Niin nytpä haluan tietää viisampien mielipiteen siitä, mikä on järkevä tapa - viisautta, saatika sitten kokemusta kun minulla ei ole.
Kyllä, miten muutenkaan ne voisi tulostaa?
Jos käytössä on jo ennestään jokin hieno framework lomakkeen luontiin, voi ja pitää tietenkin käyttää sitä frameworkkia.
vaikka näin -ite olen toteuttanut jotensakin tällä tavalla (en tiedä onko tyylikäs ratkaisu mut toimii kuitenkin:
/*tässä haetaan tiedot*/
<?php require "/xxxx/yyyyy/zzzzz/funktiot.php"; $yhteys = AvaaTietokanta(); // SQL-kysely - haetaan kaikki tiedot $sql = "select * from taulunnimi where id=".$_POST["id"]; $mysql_haun_tulos = mysql_query($sql, $yhteys); // Ei tarvita while-looppia, koska haetaan vain yksi rivi $mysql_tiedot = mysql_fetch_array($mysql_haun_tulos); ?> /*tässä näytetään tiedot ja annetaan muuttaa niitä*/ <form name="lomake" method="post" action="paivittaa.php"> <input type="hidden" name="id" value="<?php echo $mysql_tiedot['id']; ?>" /> <table border="1"> <tr> <td>Mitä kuva esittää</td> <td><input type="text" name="kuvaus" size="60" maxlength="300" tabindex="1" value="<?php echo $mysql_tiedot['kuvaus']; ?>" /></td> </tr> <tr> <td>Hakusanat</td> <td><input type="text" name="sanat" size="60" maxlength="40" tabindex="1" value="<?php echo $mysql_tiedot['hakusanat']; ?>" /></td> </tr> </table> </form>
Metabolix kirjoitti:
Kyllä, miten muutenkaan ne voisi tulostaa?
Jos käytössä on jo ennestään jokin hieno framework lomakkeen luontiin, voi ja pitää tietenkin käyttää sitä frameworkkia.
Okei hyvä, olen sitten oikeilla jäljillä! Ei tarvitse suuttua.
Aina pitää muistaa htmlspecialchars, kun tietoa tulostetaan. Yllä oleva volumen "esimerkki" ei toimi, jos jokin tietokannasta haettu tieto sisältää vaikkapa "-merkin.
Itse en kyllä laittaisi tuota id:tä lomakkeelle, JOLLEI kyseessä ole vain ja ainoastaan omaan käyttöön tuleva sovellus. Muussa tapauksessa id esim sessioon talteen, ei lomakkeelle.
ZeroGravity kirjoitti:
Itse en kyllä laittaisi tuota id:tä lomakkeelle, JOLLEI kyseessä ole vain ja ainoastaan omaan käyttöön tuleva sovellus. Muussa tapauksessa id esim sessioon talteen, ei lomakkeelle.
Niin, periaatehan on oikeastaan se, että jos omia tietoja muokataan, ei lomakkeelle ole mitään järkeä laittaa ID:tä. Jos taas on ylläpitäjän tms. työkalu kyseessä niin silloin laitetaan se ID lomakkeelle ja mikäli kaikkia ID:eitä ei ole oikeutta muokata, niin ennen tallennusta tarkistetaan oikeus.
Sillä, onko vain omaan käyttöön tuleva sovellus ei ole niinkään paljon merkitystä, koska omaankin käyttöön tulevat sovellukset ehkä joskus otetaan muidenkin käyttöön.
Tietenkin lomakkeelle kuuluu laittaa id, jos se ei ole muuten kontekstista täysin selvä (esim. käyttäjän omat tiedot; tosin laittaisin id:n silloinkin, jotta sama lomake käy myös ylläpitäjälle). Ei ole mitään syytä, miksei näin voisi tehdä.
Tuollaisen tiedon tallentaminen istuntoon on usein paha virhe, koska silloin sivuja ei voi turvallisesti avata useaa eri tabeihin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.