Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lomakkeen tiedot

tatkuu [09.09.2005 18:27:07]

#

Hei!

Nyt tuli tenkkapoo. Tarkoituksenani on tehdä iso päivitettävä MySQL-taulukko, josta voi tehdä hakuja PHP:n avulla. Jos taulukon käyttäjä tekee ensin haun ja sitten haluaa muokata tietoja, tulostuu hänelle lomake, johon haetaan tietysti tietokannasta sen hetkiset arvot, jotka sitten get tai post-metodilla siirtyvät koodille "tallenna.php", mutta...

Ongelma tuli vastaan, kun aioin hakea tuon lomakkeen kenttien nimiksi taulukosta kunkin rivin id:n ja sen avulla kohdentaa tietojen päivityksen oikein. Mistä tiedän, minkä nimisiä kenttiä kulloinkin tulee päivitettäväksi, siis minkä nimisiltä kentiltä täytyy tietoa ottaa vastaan? Voiko jotenkin esimerkiksi PHP:n avulla vastaanottaa KAIKKI get tai post-metodilla tulevat tietoparit, siis myös niiden nimet eikä vain arvot (value)?

Ongelma ei ollut helppo selvittää, mutta tarkennan mieluusti. Suuret kiitokset avusta jo ennakkoon!

tsuriga [09.09.2005 18:55:20]

#

Jos tiedät jokaisen kentän nimen niin ainahan voit kokeilla, mitä kaikkia niistä on lähetetty, jos asian oikein ymmärsin. Tai sitten foreach($_POST as $indeksi => $arvo).

leftover [09.09.2005 21:12:55]

#

Tämmöisen olen joskus ripsannut php.netin syövereistä omaan koodikirjastooni. Kommentteja hurjat nolla mutta pitäähän sitä olla jännitystä elämässä :D

<?php

function HaeSarakkeet ($tietokanta, $taulu) {

    $sarakkeet = mysql_list_fields($tietokanta, $taulu);
    $sarakemaara = mysql_num_fields($sarakkeet);

    for ($a = 0; $a < $sarakemaara; $a++) {

        $kentta = mysql_field_name($sarakkeet, $a);
        $tyyppi = mysql_field_type($sarakkeet, $a);
        $pituus = mysql_field_len($sarakkeet, $a);

        $taulukko[$kentta] = "{$tyyppi},{$pituus}";

    }

    return $taulukko;

}

?>

tatkuu [10.09.2005 01:21:38]

#

Kiitos vastauksista tsuriga ja leftover.

Jos koodin oikein ymmärsin, ongelma ei sen avulla ratkea. Tuosta foreach-rakenteesta en ole aivan varma... Senhän avulla tiedoista voi esimerkiksi muodostaa taulukon tms, mutta eihän siihen onnistu noita lomakkeen tietoja kokoamaan, kun ongelma on juuri siinä. Yritän tarkentaa. :)

Minulla on kolme saraketta taulukossa, id, nimi ja tieto. Käyttäjä hakee isosta taulukosta esimerkiksi seuraavat tiedot:
001 Eemeli jokintieto1
004 Eeva jokintieto2
015 Erkki jokintieto3
Kun käyttäjä haluaa päivittää tietosaraketta, tulostetaan lomake, johon tulostuu nimen viereen tekstikenttä, johon haetaan taulukosta sen hetkinen arvo. Laitoin tuon tekstikentän nimeksi automaattisesti ko. rivin id:n. Kun tallenna-nappia painetaan, parit 001="uusitieto1", 004="uusitieto2" ja 015="uusitieto3" saapuvat koodille "tallenna.php". Mutta miten ottaa tiedot vastaan $_POST -tekniikalla, kun nuo tekstikenttien nimet eivät ole "kiinteitä", vaan riippuvat tilanteesta? Olenko tyhmä, toimiiko tsurigan foreach-tekniikka???

tsuriga [10.09.2005 10:25:10]

#

Jehna kun ei ole tuota Mysliä tullut opeteltua niin en varmaksi osaa sanoa, mutta eikös se mene jollain queryllä tyyliin "UPDATE taulu SET tieto=".$arvo." WHERE id=".$indeksi? Nuo $arvo ja $indeksi siis tuosta viime viestini foreachista. Ai niin, ehkä kannattaa ensin tarkistaa, onko siellä $indeksin mukaista kenttää.

tatkuu [11.09.2005 08:03:47]

#

Tuo $_POST, siis tuo tiedot jonkinlaisessa taulukkomuodossa? Taulukko on helppoa käydä läpi ja $indeksi => $arvo -tekniikalla päästään viittaamaan myös tuon lomakkeeni id-kenttiin. Siinähän se ratkaisu on, kiitos tsuriga!

Vastaus

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

Tietoa sivustosta