/** * Luo uuden lajiluokan annetuilla arvoilla, tallentaa sen tietokantaan * ja palauttaa tallennetun id:n tai arvon * Lajiluokka::$MUUTTUJAA_EI_MAARITELTY, jos jokin menee vikaan. * * @param type $ylaluokka_id * @param type $nimi_latina * @return type */ public function luo_ja_tallenna_lajiluokka($ylaluokka_id, $nimi_latina) { $tallennetun_id = Lajiluokka::$MUUTTUJAA_EI_MAARITELTY; $id = Lajiluokka::$PARAMETRI_EI_KAYTOSSA; $lajiluokka = new Lajiluokka($this->tietokantaolio, $id); $this->lisaa_testikommentti("Uusi tyhja lajiluokka luotu!", false); // Ei pitäisi olla tallennuskelpoinen: if ($lajiluokka->on_tallennuskelpoinen(true)) { $this->lisaa_virheilmoitus("Ei pitaisi olla tallennuskelpoinen!"); } else { /*$this->lisaa_testikommentti("Muuttujia ei ole asetettu, joten". " saatiin aivan oikein seuraava palaute: ". $lajiluokka->tulosta_virheilmoitukset(),false);*/ } /*$this->lisaa_testikommentti("Asetetaan lajiluokan ylaluokka_id, ja nimi_latina. Testataan uudelleen, onko nyt tallennuskelpoinen:",false);*/ $lajiluokka->set_ylaluokka_id($ylaluokka_id); $lajiluokka->set_nimi_latina($nimi_latina); // Tässä vaiheessa ongelmaksi voi tulla myös se, että nimi_latina on // jo olemassa. Siitä annetaan erillinen ilmoitus. if ($lajiluokka->on_tallennuskelpoinen(true)) { $this->lisaa_testikommentti("Lajiluokka on tallennuskelpoinen", false); $onnistuminen = $lajiluokka->tallenna_uusi(); if ($onnistuminen === Lajiluokka::$OPERAATIO_ONNISTUI) { $tallennetun_id = mysql_insert_id(); $this->lisaa_testikommentti("Lajiluokan tallennus onnistui!", false); } else { $this->lisaa_testikommentti($onnistuminen . " Virhe tallennuksessa (luo_\n ja_tallenna_lajiluokka())!" . " Arvot: ylaluokka_id=" . $lajiluokka->get_ylaluokka_id() . ", nimi_latina=" . $lajiluokka->get_nimi_latina(), true); } } else { // Tämä ei aina ole vastoin toivomuksia! $this->lisaa_testikommentti($lajiluokka->tulosta_virheilmoitukset(), false); } return $tallennetun_id; }
/** * Uuden lajiluokan tallennus! * @return Palaute */ public function toteuta_tallenna_uusi() { $pal = $this->palauteolio; $uusi = new Lajiluokka($this->tietokantaolio, Lajiluokka::$PARAMETRI_EI_KAYTOSSA); // Lajiluokka: $ylaluokka_id = $this->parametriolio->ylaluokka_id_lj; $nimi_latina = $this->parametriolio->nimi_latina_lj; // Kuvaus: // Nykyään kieli on tuossa aina suomi. Voi muuttaa tarvittaessa. $kieli_kuv = Kielet::$SUOMI; $kuv_kuv = $this->parametriolio->kuv_kuv; $nimi_kuv = $this->parametriolio->nimi_kuv; // Asetetaan arvot kohdalleen: $uusi->set_ylaluokka_id($ylaluokka_id); $uusi->set_nimi_latina($nimi_latina); // Kokeillaan tallentaa: $tallennus = $uusi->tallenna_uusi(); // Jos kaikki hyvin, tallennetaan myös kuvaus lajiluokalle: if ($tallennus === Lajiluokka::$OPERAATIO_ONNISTUI) { // tallennetaan aktiivisuus: paivita_aktiivisuus($this->parametriolio->omaid, $this->tietokantaolio, time(), Aktiivisuus::$LAJILUOKKA_UUDEN_TALLENNUS); $uusi_kuv = new Kuvaus($this->tietokantaolio, Kuvaus::$PARAMETRI_EI_KAYTOSSA); // Asetetaan arvot: $uusi_kuv->set_kieli($kieli_kuv); $uusi_kuv->set_kuvaus($kuv_kuv); $uusi_kuv->set_lajiluokka($uusi->get_id()); $uusi_kuv->set_nimi($nimi_kuv); // Kokeillaan tallentaa: $tallennus_kuv = $uusi_kuv->tallenna_uusi(); // Jos kaikki hyvin: if ($tallennus_kuv === Kuvaus::$OPERAATIO_ONNISTUI) { // tallennetaan aktiivisuus: paivita_aktiivisuus($this->parametriolio->omaid, $this->tietokantaolio, time(), Aktiivisuus::$LAJILUOKKAKUVAUS_UUDEN_TALLENNUS); $pal->set_operaatio_onnistui(true); $pal->set_ilmoitus(Bongaustekstit::$lajiluokka_ja_kuvaus_tallennus_ok); // Asetetaan kuitenkin palautusolioon luodun lajiluokan id: $pal->set_muokatun_id($uusi->get_id()); $pal->set_sisalto($this->nayta_havainnot()); } else { $pal->set_operaatio_onnistui(false); $pal->set_ilmoitus(Bongaustekstit::$kuvaus_virheilm_tallennus_eiok . Html::luo_br() . $uusi_kuv->tulosta_virheilmoitukset()); $pal->set_sisalto($this->toteuta_nayta_lajiluokkalomake()->get_sisalto()); } } else { $pal->set_operaatio_onnistui(false); $pal->set_ilmoitus(Bongaustekstit::$lajiluokka_virheilm_tallennus_eiok . Html::luo_br() . $uusi->tulosta_virheilmoitukset()); $pal->set_sisalto($this->toteuta_nayta_lajiluokkalomake()->get_sisalto()); } return $pal; }
/** * Toteuttaa monen uuden havainnon tallennuksen. * @return \Palaute */ public function toteuta_tallenna_monta_uutta() { $tietokantaolio = $this->get_tietokantaolio(); $palauteolio = $this->get_palauteolio(); // Sisältää valittujen lajiluokkien id:t. $valinnat = $this->get_parametriolio()->lajivalinnat_hav; $laskuri = 0; $tallennusten_lkm = 0; $virheiden_lkm = 0; $tallennetut_lajit = ""; // Nimet kerätään tähän. foreach ($valinnat as $id_lj) { $uusi = new Havainto($this->tietokantaolio(), Havainto::$PARAMETRI_EI_KAYTOSSA); $uusi->set_henkilo_id($this->get_parametriolio()->omaid); $uusi->set_lajiluokka_id($id_lj); $uusi->set_paiva($this->get_parametriolio()->paiva_hav); $uusi->set_kk($this->get_parametriolio()->kk_hav); $uusi->set_vuosi($this->get_parametriolio()->vuosi_hav); $uusi->set_paikka($this->get_parametriolio()->paikka_hav); $uusi->set_kommentti($this->get_parametriolio()->kommentti_hav); $uusi->set_maa($this->get_parametriolio()->maa_hav); $uusi->set_varmuus($this->get_parametriolio()->varmuus_hav); if ($uusi->tallenna_uusi() === Havainto::$OPERAATIO_ONNISTUI) { $tallennusten_lkm++; // Haetaan nimi tallennetulle: $nimi = Bongaustekstit::$nimi_tuntematon; $lajiluokka = new Lajiluokka($tietokantaolio, $id_lj); if ($lajiluokka->olio_loytyi_tietokannasta) { $kuvaus = $lajiluokka->hae_kuvaus($this->get_parametriolio()->kieli_id); if ($kuvaus instanceof Kuvaus) { if ($laskuri == 0) { $nimi = $kuvaus->get_nimi(); } else { $nimi = ", " . $kuvaus->get_nimi(); } } } $tallennetut_lajit .= $nimi; } else { $virheiden_lkm++; } $laskuri++; } // Aktiivisuusmerkintä (vain kerran): $viimeksi_aktiivi = time(); $aktiivisuuslaji = Aktiivisuus::$HAVAINTO_UUDEN_TALLENNUS; paivita_aktiivisuus($this->get_parametriolio()->omaid, $tietokantaolio, $viimeksi_aktiivi, $aktiivisuuslaji); // Palautteet: if ($tallennusten_lkm == sizeof($valinnat)) { $kommentti = $tallennusten_lkm . " " . Bongaustekstit::$ilm_havaintojen_lisays_ok . " (" . $tallennetut_lajit . ")"; } else { $kommentti = $virheiden_lkm . " " . Bongaustekstit::$ilm_havaintojen_lisays_eiok; } $palauteolio->set_ilmoitus($kommentti); // Avataan havainnot. $palauteolio->set_sisalto($this->toteuta_nayta()->get_sisalto()); return $palauteolio; }
/** * Palauttaa havaintolomakkeen html-koodina. * * @param <type> $tallennuskommentti kertoo mikä laji tallennettiin viimeksi. * @param bool $onKopio auttaa siihen, että luotuun havaintoon osataan palata * sekä kopioinnin että tavallisen uuden luonnin yhteydessä. * @param Parametrit $parametriolio * @return <type> */ function nayta_havaintolomake_kaikki_lajit(&$parametriolio) { $paiva_hav = $parametriolio->paiva_hav; $kk_hav = $parametriolio->kk_hav; $vuosi_hav = $parametriolio->vuosi_hav; $paikka_hav = $parametriolio->paikka_hav; $kommentti_hav = $parametriolio->kommentti_hav; $tietokantaolio = $parametriolio->get_tietokantaolio(); // $tallennuskommentti kertoo mikä laji tallennettiin viimeksi. $tallennuskommentti = $parametriolio->get_tallennuspalaute(); $submitnappi = ""; $poistunappi = ""; $type = "submit"; $class = "rinnakkain"; $id = ""; $onclick = ""; $name = Bongaustoimintonimet::$havaintotoiminto; $value = Bongauspainikkeet::$PERUMINEN_HAVAINTO_VALUE; $poistunappi = Html::luo_painike_ilman_formia($type, $class, $id, $name, $value, $onclick); $suurin_havaintoid = hae_suurin_id($tietokantaolio, "bhavainnot"); // Seuraava liittyy siihen, että tallennetut näytetään taulukossa: // Luotavan (ekan) id on todennäköisesti yhtä suurempi kuin äsken laskettu: $uuden_id = $suurin_havaintoid + 1; // Otetaan arvo ylös: $parametriolio->set_naytettavan_id_hav($uuden_id); $url_jatke_seur = "?id_hav=" . $uuden_id . "#havainto" . $uuden_id; if ($suurin_havaintoid == -1) { $url_jatke_seur = ""; } $url_id = $url_jatke_seur; // // Submit-painike: $maar_array = array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$TALLENNA_MONTA_HAV_KERRALLA_VALUE), Maarite::title(Bongauspainikkeet::$TALLENNA_MONTA_HAV_KERRALLA_TITLE)); $submitnappi = Html::luo_input($maar_array); /*************************************************************************/ $maavalikkohtml = ""; try { $arvot = Maat::hae_maa_arvot(); $nimet = Maat::hae_maakuvaukset(); $name_arvo = Maat::$tietokannan_sarakenimi; $oletusvalinta_arvo = $parametriolio->maa_hav; $otsikko = Maat::$valikko_otsikko; $onchange_metodinimi = "kirjoita_maa"; $onchange_metodiparametrit_array = array(); $maavalikkohtml .= Html::luo_pudotusvalikko_onChange($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko, $onchange_metodinimi, $onchange_metodiparametrit_array); } catch (Exception $poikkeus) { $maavalikkohtml = "Virhe maavalikossa! (" . $poikkeus->getMessage() . ")"; } /*************************************************************************/ $naytettava_valinta = $parametriolio->varmuus_hav; $varmuusvalikko = Varmuus::muodosta_valikkohtml(false, $naytettava_valinta); // kommentin muotoilu: if (!empty($tallennuskommentti)) { $tallennuskommentti = $tallennuskommentti . "<br/>"; } //========================================================================= //Muotoillaan lajivalinnat: $lajioliot = Lajiluokka::hae_kaikki_lajiluokat($parametriolio->kieli_id, $parametriolio->ylaluokka_id_lj, $parametriolio->tietokantaolio); $laskuri = 1; $rivin_pituus = 10; // Näin monta rivissä. $rivi = ""; $taulukko = ""; foreach ($lajioliot as $lajiolio) { if ($lajiolio instanceof Lajiluokka) { // Haetaan lajinimi: $kuvaus = $lajiolio->hae_kuvaus($parametriolio->kieli_id); if ($kuvaus === Lajiluokka::$MUUTTUJAA_EI_MAARITELTY) { $kuvaus = $lajiolio->hae_kuvaus(Kielet::$SUOMI); } $lajinimi = $kuvaus->get_nimi(); // Tarkistetaan, onko tämä ollut valittu (esim. muokkaus): $checked = ""; foreach ($parametriolio->lajivalinnat_hav as $valitun_id) { if ($lajiolio->get_id() === $valitun_id) { $checked = "checked"; } } if (empty($checked)) { $solusis = Html::luo_labeled_checkbox($lajinimi, array(Maarite::name(Bongausasetuksia::$monen_lajin_valinta_id_taulukko_name . "[]"), Maarite::value($lajiolio->get_id()))); } else { $solusis = Html::luo_labeled_checkbox($lajinimi, array(Maarite::name(Bongausasetuksia::$monen_lajin_valinta_id_taulukko_name . "[]"), Maarite::value($lajiolio->get_id()), Maarite::checked($checked))); } $rivi .= Html::luo_tablesolu($solusis, array(Maarite::classs("valintasolu"))); // Jos rivi täynnä tai ollaan vikassa lajissa, // suljetaan se ja tyhjennetään rivimuuttuja: if ($laskuri % $rivin_pituus == 0 || $laskuri == sizeof($lajioliot)) { $taulukko .= Html::luo_tablerivi($rivi, array()); $rivi = ""; } $laskuri++; } } $taulukko = Html::luo_table($taulukko, array(Maarite::classs("tietotaulu_ulkorajaton"), Maarite::align("center"))); //======================================================================== // Luodaan form-elementin sisältö: $mj = Html::luo_div(Html::luo_span($tallennuskommentti, array(Maarite::id(Bongausasetuksia::$havaintolomake_tallennustiedote_id))) . Bongaustekstit::$havaintolomake_uusien_tallennus_ohje, array(Maarite::style("font-weight:bold"))) . Html::luo_button(Bongauspainikkeet::$ed_vko, array(Maarite::id("b1"), Maarite::type("button"), Maarite::onclick("nayta_ed_vko", ""))) . Html::luo_button(Bongauspainikkeet::$ed_paiva, array(Maarite::id("b2"), Maarite::type("button"), Maarite::onclick("nayta_ed", ""))) . " *" . Bongaustekstit::$paiva . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::id("paiva"), Maarite::name("paiva_hav"), Maarite::value($paiva_hav), Maarite::size(2), Maarite::max_length(2), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . " *" . Bongaustekstit::$kk . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::id("kk"), Maarite::name("kk_hav"), Maarite::value($kk_hav), Maarite::size(2), Maarite::max_length(2), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . " *" . Bongaustekstit::$vuosi . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::id("vuosi"), Maarite::name("vuosi_hav"), Maarite::value($vuosi_hav), Maarite::size(4), Maarite::max_length(4), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_span("", array(Maarite::id("pvm_naytto"))) . Html::luo_button(Bongauspainikkeet::$seur_paiva, array(Maarite::id("b3"), Maarite::type("button"), Maarite::onclick("nayta_seur", ""))) . Html::luo_button(Bongauspainikkeet::$seur_vko, array(Maarite::id("b4"), Maarite::type("button"), Maarite::onclick("nayta_seur_vko", ""))) . Html::luo_br() . " *" . Bongaustekstit::$paikka . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::name("paikka_hav"), Maarite::value($paikka_hav), Maarite::size(43))) . $maavalikkohtml . Varmuus::$valikko_otsikko . ": " . $varmuusvalikko . Bongaustekstit::$kommentti . ": " . Html::luo_input(array(Maarite::type("text"), Maarite::name("kommentti_hav"), Maarite::value($kommentti_hav), Maarite::size(43))) . $taulukko . $submitnappi . $poistunappi; // Sullotaan sisältö form-tagien sisään: $mj = Html::luo_form($mj, array(Maarite::align("center"), Maarite::method("post"), Maarite::action("index.php" . $url_id), Maarite::id(Bongausasetuksia::$havaintolomake_kaikki_lajit_id))); // Palautetaan lomake ja näytetään js-päivämäärä;. return $mj . Html::luo_script_js("nayta_pvm();"); //return $mj."<script type='text/javascript'>nayta_pvm();</script>"; }
/** * Näyttää lomakkeen, jonka avulla saadaan luotua uusia ja muokattua vanhoja * lajiluokkia. * * @param <type> $id_lj * @param <type> $ylaluokka_id_lj * @param <type> $nimi_latina_lj * @param <type> $lajiluokka_id_kuv * @param <type> $nimi_kuv * @param <type> $kuv_kuv * @param <type> $kieli_kuv * @return <type> */ public static function nayta_lajiluokkalomake(&$ylaluokka_id_lj, &$nimi_latina_lj, &$nimi_kuv, &$kuv_kuv, &$kieli_kuv, $uusi, $tietokantaolio) { $submitnappi = ""; $poistunappi = ""; $class = "rinnakkain"; $id = ""; $action = "oletus"; $name = Bongaustoimintonimet::$lajiluokkatoiminto; $value = Bongauspainikkeet::$PERUMINEN_LAJILUOKKA_VALUE; $poistunappi = Html::luo_painikelomake($class, $id, $action, $name, $value); if ($uusi) { $class = "rinnakkain"; $id = ""; $action = "oletus"; $name = Bongaustoimintonimet::$lajiluokkatoiminto; $value = Bongauspainikkeet::$TALLENNA_UUSI_LAJILUOKKA_VALUE; $submitnappi = Html::luo_painikelomake($class, $id, $action, $name, $value); } else { $class = ""; $id = ""; $action = "oletus"; $name = Bongaustoimintonimet::$lajiluokkatoiminto; $value = Bongauspainikkeet::$TALLENNA_MUOKKAUS_LAJILUOKKA_VALUE; $submitnappi = Html::luo_painikelomake($class, $id, $action, $name, $value); } // Valikot: /*$kielivalikko = nayta_kielivalikko($kieli_kuv,"");*/ $kielivalikko = "suomi"; // Jos yläluokkaa ei ola määritelty (=-1), etsitään sen luokan id, jonka // suomenkielisen kuvauksen nimi on "Linnut": if ($ylaluokka_id_lj == -1) { $taulunimi = "bkuvaukset"; $sarakenimi = "nimi"; $hakuarvo = "Linnut"; $kuvausolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo); if ($kuvausolio != Bongausasetuksia::$tietokantahaku_ei_loytynyt) { $ylaluokka_id_lj = $kuvausolio->lajiluokka_id; } } $otsikko = ""; // Otsikko laitetaan eri paikkaan. $js_metodinimi = ""; $js_param_array = ""; $nayta_tyhja = Bongaustekstit::$lajiluokkalomake_ei_ylatasoa; //=true $ylaluokkavalikko = Lajiluokka::nayta_ylaluokkavalikko($nayta_tyhja, $tietokantaolio, $ylaluokka_id_lj, $kieli_kuv, $otsikko, $js_metodinimi, $js_param_array); $mj = "<form align='center' method='post' action='index.php'>" . "<table summary='uudet_tiedot' id=" . Bongausasetuksia::$lajiluokkalomakkeen_id . ">" . "<tr><td colspan=2><b>" . Bongaustekstit::$lajiluokkalomake_ohje . "</b></td></tr>" . "<tr>" . "<td align='left'>*" . Bongaustekstit::$lajiluokkalomake_ylaluokka . ":</td>\n <td align='left'> " . $ylaluokkavalikko . " " . Bongaustekstit::$lajiluokkalomake_ylaluokkaohje . "</td>\n </tr>" . "<tr>" . "<td align='left'>*" . Bongaustekstit::$lajiluokkalomake_nimi_latina . ":\n </td><td align='left'>\n <input type='text' name='nimi_latina_lj' value='" . $nimi_latina_lj . "'/></td>\n </tr>" . "<tr>" . "<td align='left'>*" . Bongaustekstit::$lajiluokkalomake_nimi_omakieli . " (" . $kielivalikko . "):\n </td><td align='left'>\n <input type='text' name='nimi_kuv' value='{$nimi_kuv}'/>\n </td>\n </tr>" . "<tr><td align='left'>" . Bongaustekstit::$lajiluokkalomake_kuvaus . ":</td>\n <td align='left'><textarea cols='50'\n rows='6'name='kuv_kuv'>{$kuv_kuv}" . "</textarea></td></tr>" . "<tr><td></td><td align='left'>" . $submitnappi . $poistunappi . "</td></tr>" . "</table>" . "</form>"; // Palautetaan lomake. return $mj; }
/** * Testaa lajiluokan muokkausta: */ public function testaa_lajiluokan_muokkaus() { $this->lisaa_testikommentti("<h4>Lajiluokan muokkaustesti alkaa</h4>", false); $this->lisaa_testikommentti("Otetaan muokattavaksi viimeksi luotu\n lajiluokka", false); $this->muokattava = $this->lajiluokat[1]; //====================================================================== // Testataan ennen muutoksia onTallennuskelpoinen-metodi, jonka // pitäisi valittaa: $this->lisaa_testikommentti("Testataan ennen muutoksia\n onTallennuskelpoinen-metodi, jonka pitaisi valittaa:", false); $uusi = false; if ($this->muokattava->on_tallennuskelpoinen(false)) { $this->lisaa_testikommentti("Virhe: samoja tietoja ei pida\n paastaa muokkaamaan!", true); } else { $this->lisaa_testikommentti("Oikein: samoja tietoja ei pida\n paastaa muokkaamaan! Kommentit: " . $this->muokattava->tulosta_virheilmoitukset(), false); } //====================================================================== // ASetetaan pikakommentille tahallaan vääriä arvoja: $this->muokattava->set_nimi_latina(""); // Yritetään muuttaa ylaluokka_id:tä: $onnistumispalaute = $this->muokattava->set_ylaluokka_id(345); //ylaluokka_id:tä ei pitäisi pystyä muokkaamaan: if ($onnistumispalaute == false) { $this->lisaa_testikommentti("Ylaluokka_id:n muutos ei\n onnistunut (OIKEIN)", false); } else { $this->lisaa_testikommentti("Virhe: Ylaluokka_id:n muutos\n meni lapi!", true); } $this->lisaa_testikommentti("Asetetaan nimi_latinaksi tyhjä." . " Talloin onTallennuskelpoinen-metodin pitaisi valittaa.", false); if (!$this->muokattava->on_tallennuskelpoinen(false)) { $this->lisaa_testikommentti("Tyhjä latina ei mennyt läpi (OIKEIN)." . " Saatiin seuraava ilmoitus:" . $this->muokattava->tulosta_virheilmoitukset(), false); } else { $this->lisaa_testikommentti("Virhe: Tyhjä latina meni läpi!", true); } //====================================================================== $this->lisaa_testikommentti("Asetetaan nimi_latinaksi jo kaytossa oleva." . " Talloin onTallennuskelpoinen-metodin pitaisi valittaa.", false); $this->muokattava->set_nimi_latina(Lajiluokkatestaus::$lj1_nimi_latina); $palaute = $this->muokattava->tallenna_muutokset(); if ($palaute != Lajiluokka::$OPERAATIO_ONNISTUI) { $this->lisaa_testikommentti("Tuplalatina ei mennyt läpi (OIKEIN)." . " Saatiin seuraava ilmoitus:" . $this->muokattava->tulosta_virheilmoitukset(), false); } else { $this->lisaa_testikommentti("Virhe: Tuplalatina meni läpi!", true); } //====================================================================== // ASetetaan nyt muutettavaksi hyviä arvoja: $this->muokattava->set_nimi_latina(Lajiluokkatestaus::$lj2_nimi_latina_muutettu); $this->lisaa_testikommentti("Muutetaan latinaa laillisesti.", false); // Virheilmoituksia ei pitäisi tulla: if ($this->muokattava->on_tallennuskelpoinen(false)) { $this->lisaa_testikommentti("Oikein! ARvot puhtaita!", false); } else { $this->lisaa_testikommentti("Virhe: Tiedoissa olevinaan virheita:<br/>" . $this->muokattava->tulosta_virheilmoitukset(), false); } //====================================================================== // Kokeillaan sitten tallentaa muuttuneet tiedot: $this->lisaa_testikommentti("Kokeillaan tallentaa muutokset:", false); $tallennuspalaute = $this->muokattava->tallenna_muutokset(); if ($tallennuspalaute == Lajiluokka::$OPERAATIO_ONNISTUI) { $this->lisaa_testikommentti("Muutosten tallennus onnistui!", false); // Kokeillaan hakea sama tietokannasta ja varmistetaan, että // muutettu kommentti on todella muuttunut: $testi = new Lajiluokka($this->tietokantaolio, $this->muokattava->get_id()); if ($testi->get_nimi_latina() == Lajiluokkatestaus::$lj2_nimi_latina_muutettu) { $this->lisaa_testikommentti("Muutokset oikein tietokannassa!\n Nimi_latina on nykyaan: " . $testi->get_nimi_latina(), false); } else { $this->lisaa_testikommentti("Muutokset vaarin tietokannassa!\n Nimi_latina on tietokannassa: " . $testi->get_nimi_latina(), true); } } else { $this->lisaa_testikommentti($tallennuspalaute, true); } //====================================================================== $this->lisaa_testikommentti("<h4>Lajiluokan muokkaustesti loppui</h4>", false); }
/** * Palauttaa lajiluokan nimen halutulla kielellä tai arvon * Bongaustekstit::$tuntematon. * @param type $id_lj * @param type $tietokantaolio * @param type $kieli_id */ public static function hae_lajiluokan_nimi($id_lj, $tietokantaolio, $kieli_id) { $nimi = Bongaustekstit::$tuntematon; $lajiluokka = new Lajiluokka($tietokantaolio, $id_lj); if ($lajiluokka->olio_loytyi_tietokannasta) { $kuvaus = $lajiluokka->hae_kuvaus($kieli_id); if ($kuvaus->olio_loytyi_tietokannasta) { $nimi = $kuvaus->get_nimi(); } } return $nimi; }
/** * Palauttaa uuden yksittäisen havainnon tietojen syöttöön tarkoitetun * lomakkeen. * * <p>Riippuvuudet: yhteiset/php_yhteiset.php</p> * * @return string */ function nayta_uusi_havaintolomake() { $ylaluokka_id_lj = $this->parametriolio->ylaluokka_id_lj; $kieli_kuv = $this->parametriolio->kieli_kuv; $tietokantaolio = $this->parametriolio->get_tietokantaolio(); // $tallennuskommentti kertoo mikä laji tallennettiin viimeksi. $tallennuskommentti = $this->parametriolio->get_tallennuspalaute(); // Mahdolliset arvot voivat olla epätyhjiä puutteellisen yrityksen // jälkeen (ei tartte uudestaan naputella): $id_hav = $this->parametriolio->id_hav; $lajiluokka_id_hav = $this->parametriolio->lajiluokka_id_hav; $paiva_hav = $this->parametriolio->paiva_hav; $kk_hav = $this->parametriolio->kk_hav; $vuosi_hav = $this->parametriolio->vuosi_hav; $paikka_hav = $this->parametriolio->paikka_hav; $kommentti_hav = $this->parametriolio->kommentti_hav; $maa_hav = $this->parametriolio->maa_hav; $varmuus_hav = $this->parametriolio->varmuus_hav; //============================================================= $poistunappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$PERUMINEN_HAVAINTO_VALUE))); $uusi_laji_nappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$lajiluokkatoiminto), Maarite::value(Bongauspainikkeet::$UUSI_LAJILUOKKA_VALUE))); $havaintolomakeohje = Bongaustekstit::$havaintolomake_uusi_ohje; $submitnappi = Html::luo_input(array(Maarite::type("submit"), Maarite::classs("rinnakkain"), Maarite::name(Bongaustoimintonimet::$havaintotoiminto), Maarite::value(Bongauspainikkeet::$TALLENNA_UUSI_HAVAINTO_VALUE))); // Lajivalikko (kun vain yksi valittu) $otsikko = ""; $lajivalikko = Lajiluokka::nayta_lajivalikko($lajiluokka_id_hav, $tietokantaolio, $ylaluokka_id_lj, $kieli_kuv, $otsikko); /*************************************************************************/ $maavalikkohtml = ""; try { $arvot = Maat::hae_maa_arvot(); $nimet = Maat::hae_maakuvaukset(); $name_arvo = Maat::$tietokannan_sarakenimi; $oletusvalinta_arvo = $maa_hav; $otsikko = Maat::$valikko_otsikko; $onchange_metodinimi = "kirjoita_maa"; $onchange_metodiparametrit_array = array(); $maavalikkohtml .= Html::luo_pudotusvalikko_onChange($arvot, $nimet, $name_arvo, $oletusvalinta_arvo, $otsikko, $onchange_metodinimi, $onchange_metodiparametrit_array); } catch (Exception $poikkeus) { $maavalikkohtml = "Virhe maavalikossa! (" . $poikkeus->getMessage() . ")"; } /*************************************************************************/ $naytettava_valinta = $varmuus_hav; $varmuusvalikko = Varmuus::muodosta_valikkohtml(false, $naytettava_valinta); // kommentin muotoilu: if (!empty($tallennuskommentti)) { $tallennuskommentti = $tallennuskommentti . Html::luo_br(); } // Tallennetun näyttö tallennuksen jälkeen. Nyt pitää arvata eli // katsoa tietokannasta suurin id ja sillä perusteella asettaa // arvoksi sitä yksi isompi. $id_hav_uusi = hae_suurin_id($this->tietokantaolio, Tietokannan_taulunimet::$bhavainnot) + 1; $url_jatke_nyk = "#havainto" . $id_hav_uusi; $url_id = "?id_hav=" . $id_hav_uusi . $url_jatke_nyk; // Näin löytyy päivitettävä havainto! $maar_array = array(); // Rivi1: ohjeita $rivi1 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_b(Html::luo_span($tallennuskommentti, array(Maarite::id(Bongausasetuksia::$havaintolomake_tallennustiedote_id))) . $havaintolomakeohje, $maar_array), array(Maarite::colspan(2))), $maar_array); // taulukkorivi // Toinen rivi: pvm-painikkeet $rivi2 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_button(Bongauspainikkeet::$ed_vko, array(Maarite::id("b1"), Maarite::onclick("nayta_ed_vko", ""))) . Html::luo_button(Bongauspainikkeet::$ed_paiva, array(Maarite::id("b2"), Maarite::onclick("nayta_ed", ""))) . Html::luo_button(Bongauspainikkeet::$seur_paiva, array(Maarite::id("b3"), Maarite::onclick("nayta_seur()", ""))) . Html::luo_button(Bongauspainikkeet::$seur_vko, array(Maarite::id("b4"), Maarite::onclick("nayta_seur_vko()", ""))), array(Maarite::colspan(2), Maarite::align("left"))), $maar_array); // taulukkorivi // Rivi3: pvm-kentät $rivi3 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("paiva", "*" . Bongaustekstit::$paiva . ":", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("text"), Maarite::id("paiva"), Maarite::name("paiva_hav"), Maarite::value($paiva_hav), Maarite::size("4"), Maarite::max_length("2"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_label_for("kk", "*" . Bongaustekstit::$kk . ":", "") . Html::luo_input(array(Maarite::type("text"), Maarite::id("kk"), Maarite::name("kk_hav"), Maarite::value($kk_hav), Maarite::size("4"), Maarite::max_length("2"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_label_for("vuosi", "*" . Bongaustekstit::$vuosi . ":", "") . Html::luo_input(array(Maarite::type("text"), Maarite::id("vuosi"), Maarite::name("vuosi_hav"), Maarite::value($vuosi_hav), Maarite::size("4"), Maarite::max_length("4"), Maarite::onchange("nayta_pvm", ""), Maarite::onkeyup("nayta_pvm", ""))) . Html::luo_span("", array(Maarite::id("pvm_naytto"))), array(Maarite::align("left"))), $maar_array); // taulukkorivi // painike, josta saadaan näkyviin monta lajia kerralla: $rivi4 = Html::luo_tablerivi(Html::luo_tablesolu("", array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("submit"), Maarite::value(Bongauspainikkeet::$NAYTA_MONEN_HAVAINNON_VALINTA_VALUE), Maarite::title(Bongauspainikkeet::$NAYTA_MONEN_HAVAINNON_VALINTA_TITLE), Maarite::name(Bongaustoimintonimet::$havaintotoiminto))), array(Maarite::align("left"))), $maar_array); // rivi5: Lajivalinta $rivi5 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa_myohemmin", "*" . Bongaustekstit::$laji . ": ", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_span($lajivalikko, array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalikko_id))) . Html::luo_span($uusi_laji_nappi, array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalikkopainike_id))) . Html::luo_span("(" . Bongaustekstit::$havaintolomake_laji_puuttuu_ohje . ")", array(Maarite::id(Bongausasetuksia::$havaintolomake_lajivalintaohje_id))), array(Maarite::align("left"), Maarite::id(Bongausasetuksia::$havaintolomake_lajivalintarivi_id))), $maar_array); // taulukkorivi // rivi6: Paikka ja maa: $rivi6 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa myohemmin", "*" . Bongaustekstit::$paikka . ": ", ""), array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_input(array(Maarite::type("text"), Maarite::name("paikka_hav"), Maarite::value($paikka_hav))) . $maavalikkohtml, array(Maarite::align("left"))), $maar_array); // taulukkorivi // rivi7: Havainnon varmuus: $rivi7 = Html::luo_tablerivi(Html::luo_tablesolu(Html::luo_label_for("lisaa myohemmin", Varmuus::$valikko_otsikko, ""), array(Maarite::align("left"))) . Html::luo_tablesolu($varmuusvalikko, array(Maarite::align("left"))), $maar_array); // taulukkorivi // rivi8: Havaintokommentti: $rivi8 = Html::luo_tablerivi(Html::luo_tablesolu(Bongaustekstit::$kommentti, array(Maarite::align("left"))) . Html::luo_tablesolu(Html::luo_textarea($kommentti_hav, array(Maarite::cols(50), Maarite::rows(6), Maarite::name("kommentti_hav"))), array(Maarite::align("left"))), $maar_array); // taulukkorivi // rivi9: Painikkeet: $rivi9 = Html::luo_tablerivi(Html::luo_tablesolu("", array(Maarite::align("left"))) . Html::luo_tablesolu($submitnappi . $poistunappi, array(Maarite::align("left"))), $maar_array); // taulukkorivi // Rivit taulukon sisään: $taulukko = Html::luo_table($rivi1 . $rivi2 . $rivi3 . $rivi4 . $rivi5 . $rivi6 . $rivi7 . $rivi8 . $rivi9, array(Maarite::summary("uudet_tiedot"), Maarite::id(Bongausasetuksia::$havaintolomakkeen_id))); // Taulukko lomakkeen sisään: $html = Html::luo_form($taulukko, array(Maarite::align("center"), Maarite::method("post"), Maarite::action("index.php" . $url_id))); // näytetään js-päivämäärä $html .= Html::luo_script_js("nayta_pvm();"); return $html; }
/** * Palauttaa html:n albumin katselua varten, jossa näkyy kaikki albumin * kuvat pikkukuvina (1-8 rinnakkain).Kuvaa klikkaamalla saa sen näkyviin isona. * * Painike, josta palataan takaisin havaintolistaan. * * @param <type> $omaid * @param <type> $id_lj * @param <type> $tietokantaolio * @param <type> $valtuudet * @param <type> $kuvia_rinnakkain rivillä olevien kuvien lukumäärä * (mitä pienempi sitä isommat kuvat) * @param <type> $ikkunan_leveys * @param <type> $kuvahakumoodi Miten kuvat haetaan: pikkukuvat tietokannasta, * pikkukuvat tiedostosta vaiko isot kuvat tiedostosta (vanha tapa) * @return <type> Palauttaa albumihtml:n */ function bongaus_nayta_albumin_esikatselu($omaid, $id_lj, $tietokantaolio, $valtuudet, $kuvia_rinnakkain, $ikkunan_leveys, $kuvahakumoodi) { // Tarkistetaan kuvamäärän parametrin sopivuus: if (!isset($kuvia_rinnakkain) || !is_numeric($kuvia_rinnakkain) || $kuvia_rinnakkain < 1 || $kuvia_rinnakkain > Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX) { $kuvia_rinnakkain = 4; } // Pakotetaan nopein. Oli vähän ongelmaa muuten. $kuvahakumoodi = Kuvat::$KUVAHAKUMOODI_pikkukuvat_tiedosto; // Tämä muuttuja kertoo, onko kyseessä lajin vai yläluokan id_lj. Myöhemmin // tarkistetaan asia. $on_ylaluokka = true; // Lasketaan ensin kuvien koot. $kuvateksti = false; // kuvatekstiä ei näytetä. // Bongauksessa on kolme palstaa, joten pitää leveyttä // säätää, jotta kuvat mahtuvat olemaan: $on_kaksipalsta = false; $MAX_LEV_KUVA = laske_kuvan_maksimileveys($kuvia_rinnakkain, $ikkunan_leveys, $kuvateksti, $on_kaksipalsta); $MAX_KORK_KUVA = laske_kuvan_maksimikorkeus($MAX_LEV_KUVA); $mj = ""; //Metodin palauttama merkkijono. // Tätä tarvitaan, jotta koon muutos ikkunan kokoa muutettaessa löytää // oikean albumin ($id_alb ei päivity, jos albumi tuodaan ajaxin kautta). $piilo_id = "<span id ='piilo_id'>" . $id_lj . "</span>"; $kuvan_lisaysnappi = ""; // painike, josta saa näkyviin albumit: $onsubmit_funktionimi = "bongaus_nayta_albumit"; $onsubmit_parametrit = array(); $form_maaritteet = array("method" => "post", "class" => "rinnakkain", "action" => "../bongaus/index.php"); $input_maaritteet = array("name" => Bongaustoimintonimet::$kuvatoiminto, "value" => Bongauspainikkeet::$NAYTA_KUVA_ALBUMIT_VALUE, "title" => Bongauspainikkeet::$NAYTA_KUVA_ALBUMIT_TITLE); $albuminaytto = Html::luo_submit_painike_onsubmit_toiminnolla($onsubmit_funktionimi, $onsubmit_parametrit, $form_maaritteet, $input_maaritteet); // Nämä painikkeet tulevat aina näkyviin: $takaisin_nappi = "<form method='post' id='takaisin_nappi' " . "action='../bongaus/index.php'>" . "<input type='submit' name='" . Bongaustoimintonimet::$havaintotoiminto . "' value='" . Bongauspainikkeet::$TAKAISIN_HAVAINTOIHIN_VALUE . "'/>" . "</form>"; // Nämä painikkeet tulevat aina näkyviin: $diaesitysnappi = "<button type='button' title='" . Painikkeet::$NAYTA_DIAESITYS_TITLE . "' onClick=" . "'kaynnista_diaesitys(" . $id_lj . ", 1, " . bongaus_hae_albumin_kuvien_lkm($id_lj, $tietokantaolio, $omaid) . ",\"" . Kuva::$KUVAT_BONGAUS . "\")'>" . Painikkeet::$NAYTA_DIAESITYS_VALUE . "</button>"; // Tämä sisältää pikkukuvien kokohallinnan: $esikatselukoko = " Koon säätö: " . "<input type='button' class='button_alas'" . "onclick=\"pienenna_pikkukuvat(" . $id_lj . "," . Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX . ",'" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$PIENEMMAT_ESIKATSELUKUVAT_ALB_VALUE . "'/>" . " Kuvia rivillä: <span id='kuvia_rinnakkain'>" . $kuvia_rinnakkain . "</span> " . "<input type='button' class='button_alas'" . "onclick=\"suurenna_pikkukuvat(" . $id_lj . "," . Kuva::$ESIKATSELUKUVIA_RIVILLA_LKM_MAX . ",'" . Kuva::$KUVAT_BONGAUS . "')\"" . "value='" . Painikkeet::$SUUREMMAT_ESIKATSELUKUVAT_ALB_VALUE . "'/>"; // Selvitetään ensin, onko lajiluokka laji vai yläluokka. Tämä ratkaisee // ainakin sen, voiko lisätä uusia kuvia: $lajiluokkaolio = ""; if (isset($id_lj) && $id_lj != "") { $taulunimi = "blajiluokat"; $sarakenimi = "id"; $hakuarvo = $id_lj; $lajiluokkaolio = $tietokantaolio->hae_eka_osuma_oliona($taulunimi, $sarakenimi, $hakuarvo); // Lajilla on aina nollaa suurempi ylaluokka-tunniste: if ($lajiluokkaolio->ylaluokka_id > -1) { $on_ylaluokka = false; } else { $on_ylaluokka = true; } } else { // Muuten lopetetaan tykkänään tähän: return 'Albumia ei määritelty!'; exit; } // Haetaan lajiluokan nimi (suomeksi vain tällä hetkellä): $kielen_nro = Kielet::$SUOMI; $nimi = Lajiluokka::hae_lajiluokan_nimi($id_lj, $tietokantaolio, $kielen_nro); // Kuvia voi lisätä vain lajiin, ei yläluokkaan, jotta laji // saadaan muistiin. if (!$on_ylaluokka) { $kuvan_lisaysnappi = "<form method='post'id='lisaa_kuvia_bong' " . "action='../bongaus/index.php?id_lj={$id_lj}'>" . "<input type='submit' name='" . Bongaustoimintonimet::$kuvatoiminto . "'" . "value='" . Bongauspainikkeet::$UUSI_KUVA_VALUE . "'/>" . "</form>"; } $kuva_alt = ""; // Html-img-elementin alt-määritteen arvo. $aika = ""; // Kuvan ottoaika // Haetaan kaikki albumin kuvat (sopivalla where-ehdolla): $where_ehto = "blajiluokat.id = {$id_lj}"; if ($on_ylaluokka) { $where_ehto = "blajiluokat.ylaluokka_id = {$id_lj}"; } // Haetaan albumin kuvien tiedot: $hakulause = "SELECT DISTINCT kuvat.id AS kuva_id, tiedostonimi, tiedostokoko,\n leveys, korkeus, src, kuvaotsikko, kuvaselitys\n FROM kuvat\n JOIN bkuvalinkit AS linkit\n ON kuvat.id = linkit.kuva_id\n JOIN blajiluokat\n ON blajiluokat.id = linkit.lajiluokka_id\n WHERE {$where_ehto}\n AND (kuvat.nakyvyys = " . Nakyvyys_kuva::$JULKINEN . "\n OR kuvat.henkilo_id = " . $omaid . ")\n ORDER BY linkit.jarjestysluku DESC"; $osumat = $tietokantaolio->tee_OMAhaku_oliotaulukkopalautteella($hakulause); $lkm = sizeof($osumat); $kuvamj = "<table id='esikatselukuvat'><tr>"; if ($lkm > 0) { $laskuri = 0; // Laskee kuvien määrän. foreach ($osumat as $kuvatiedot) { $laskuri++; $kuva_alt = $kuvatiedot->tiedostonimi . " (" . round($kuvatiedot->tiedostokoko / 1000) . " kt)"; // Muokataan kuvan koko sopivaksi eli pienennetään, jos leveys on yli // $MAX_LEV_KUVA. Leveyden ja korkeuden suhde säilytetään. $lev = $kuvatiedot->leveys; $kork = $kuvatiedot->korkeus; $nayttolev = $kuvatiedot->leveys; $nayttokork = $kuvatiedot->korkeus; // Kuvan suurin mitta tulee siis samaksi. Leveä kuva on yhtä leveä // kuin korkea kuva on korkea. if ($kork != 0 && $lev != 0) { $suhde = $kork / $lev; // Vaakasuora kuva: if ($suhde < 1 && $lev > $MAX_LEV_KUVA) { $nayttolev = $MAX_LEV_KUVA; $nayttokork = round($MAX_LEV_KUVA * $suhde); } // Pystysuora kuva: if ($suhde >= 1 && $kork > $MAX_KORK_KUVA) { $nayttokork = $MAX_KORK_KUVA; $nayttolev = round($MAX_KORK_KUVA / $suhde); } } // Otetaan pienin mahdollinen kuva tietokannasta tai ellei // siellä ole tarpeeksi isoa, niin tiedostosta sitten: $kuva_id = $kuvatiedot->kuva_id; $maxmitta = max(array($nayttokork, $nayttolev)); // Haku tietokannasta: if ($kuvahakumoodi == Kuvat::$KUVAHAKUMOODI_pikkukuvat_tietokanta) { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_PIENI_MITTA) { $src = "'kuvatus.php?kuva_id=" . $kuva_id . "&koko=pieni'"; } else { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO_MITTA) { $src = "'kuvatus.php?kuva_id=" . $kuva_id . "&koko=iso'"; } else { $src = "'" . $kuvatiedot->src . "'"; } } } else { if ($kuvahakumoodi == Kuvat::$KUVAHAKUMOODI_pikkukuvat_tiedosto) { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_PIENI_MITTA) { $osoite_mini1 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva1_nimen_osa . $kuvatiedot->tiedostonimi; $src = "'" . $osoite_mini1 . "'"; } else { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO_MITTA) { $osoite_mini2 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva2_nimen_osa . $kuvatiedot->tiedostonimi; $src = "'" . $osoite_mini2 . "'"; } else { if ($maxmitta <= Kuva::$TIETOKANTAKUVA_ISO2_MITTA) { $osoite_mini3 = Kuva::$kansion_os_bongauskuvat_pikkukuvat . "/" . Kuva::$pikkukuva3_nimen_osa . $kuvatiedot->tiedostonimi; $src = "'" . $osoite_mini3 . "'"; } else { $src = "'" . $kuvatiedot->src . "'"; } } } } else { $src = "'" . $kuvatiedot->src . "'"; } } // Kuvaa klikkaamalla saadaan se isoksi: $klikkaus = "onclick=\"hae_kuva_ja_tiedot('" . $id_lj . "','" . $kuva_id . "','" . Kuva::$KUVAT_BONGAUS . "')\""; $kuvamj .= "<td class='kuva'>" . "<img src=" . $src . " " . $klikkaus . "width='" . $nayttolev . "' height='" . $nayttokork . "' " . "alt='" . $kuva_alt . "' title='" . $kuvatiedot->kuvaotsikko . " " . $kuvatiedot->kuvaselitys . "'/>" . "</td>"; // Rivinvaihto aina sopivaan paikkaan: if ($laskuri % $kuvia_rinnakkain == 0) { $kuvamj .= "</tr><tr>"; } } $kuvamj .= "</tr></table>"; } else { $kuvamj = "<h3/>Kansiossa ei ole kuvia!</h3>"; } $mj = "<div id='albumi'>" . "<h2>Bongauskuvia: " . $nimi . " (" . $piilo_id . $lkm . " kuvaa)</h2>"; $mj .= "<div id='nappirivi'>" . $albuminaytto . $takaisin_nappi . $kuvan_lisaysnappi . $esikatselukoko . $diaesitysnappi . "</div>"; $mj .= "<div id='kuvaruutu'>" . $kuvamj . "</div>"; $mj .= "</div>"; //Albumin loppu. return $mj; }