Minkäänlaista vinkkiä, miten saisi phplla/jscriptillä/millä tavalla vaan, templaten hakemaan tiedot SQL tietokannasta ja luomaan sivut automaattisesti tällä tavalla?
Lisätietoja saa/pitää pyytää, josei muuten onnistu minkään vinkin antaminen.
Kiitos etukäteen
~Plakkis
Plakkis kirjoitti:
Lisätietoja saa/pitää pyytää, josei muuten onnistu minkään vinkin antaminen.
Mitä tarkoitat sanalla "template", jotain valmista sivupohjaako?
Huh huh. Jos PHP:llä saisi sivupohjan automaagisesti hakemaan tietokannasta oikeanlaisia tietoja ja tulostamaan ne kivasti sivulle, mihin koodareita enää tarvittaisiinkaan? Valitettavasti prosessi kuitenkin menee yleensä niin päin, että PHP:llä luetaan sivupohja, PHP:llä haetaan tiedot tietokannasta ja PHP:llä muokataan sivupohja uuteen uskoon ilman mitään kovin ihmeellisiä automaatioita, ja tässä prosessissa koodari on vastuussa siitä, että tiedot haetaan oikeasta taulusta ja laitetaan oikeaan sivupohjaan oikealla tavalla.
Plakkis kirjoitti:
Lisätietoja saa/pitää pyytää
Suosittelen tässä asiassa pientä suunnanmuutosta: jos haluat apua, esitä itse kysymyksesi niin yksityiskohtaisesti ja selvästi, että muutkin ymmärtävät edes suunnilleen, mistä on kyse.
-tossu- kirjoitti:
Plakkis kirjoitti:
Lisätietoja saa/pitää pyytää, josei muuten onnistu minkään vinkin antaminen.
Mitä tarkoitat sanalla "template", jotain valmista sivupohjaako?
Templatella tarkoitan valmista sivua (joka on jo luotuna). Ja anteeksi huonosti selitetystä asiasta. Yrittäisin siis tehdä koodia, joka ensiksi listaa tietyn sarakkeen (juu, SQL lausekkeet hallussa, ongelma tulee vasta seuraavaksi), ja tekee sarakkeen kohdista linkit, jotka ohjautuvat omille sivuilleen. Eli, tarviiko minun luoda jokainen sivusto itse, vai onko mitään helppoa keinoa luoda tämä listaus ja linkitys? (Sarakkeessa rivejä tuhansia, manuaalinen säätö kuulostaisi aika vaivalloiselta)
Plakkis kirjoitti:
Eli, tarviiko minun luoda jokainen sivusto itse, vai onko mitään helppoa keinoa luoda tämä listaus ja linkitys?
Listaus onnistuu hakemalla rivit tietokannasta (SELECT sarake FROM taulu) ja käymällä ne läpi silmukalla.
Mitä niihin sivuihin tulee, joihin linkit osoittavat? Onko niidenkin sisältö tietokannassa?
-tossu- kirjoitti:
Plakkis kirjoitti:
Eli, tarviiko minun luoda jokainen sivusto itse, vai onko mitään helppoa keinoa luoda tämä listaus ja linkitys?
Listaus onnistuu hakemalla rivit tietokannasta (SELECT sarake FROM taulu) ja käymällä ne läpi silmukalla.
Mitä niihin sivuihin tulee, joihin linkit osoittavat? Onko niidenkin sisältö tietokannassa?
Ajatuskatkosta iskee jälleen. Siis sarakkeen tietojen näyttö ja sivutus on jo hoidettuna.
Esimerkkinä kirjat:
Otsikkona Kirjan nimi
Kirjailija: Kirjan tekijän nimi
Takakansi: Takakansi tulostetaan tähän
Sarja: Mihin sarjaan kirja kuuluu
Osa: Mones osa sarjassa
Oletettavasti kaikki tiedot löytyvät tietokannasta. Tuossa olisi siis tietoa siitä mitä sivuihin tulee.
Listauksesta sen verta, että kun se hakee ne tiedot tietokannasta, niin niistä tarvisi saada luotua linkit sivuille, ettei se vain tulostaisi niitä tekstinä. Sillä rivimäärä on siis lähempänä viittänumeroista lukua, ja manuaalisesti kaiken tekeminen yksin olisi erittäin puuduttavaa hommaa. Mutta jos muuta vaihtoehtoa ei ole, kuin jokaisen sivun erikseen luominen, ja listauksen tekeminen suoraa linkkeinä, niin näinhän myös teen.
Onko jokaisella kirjalla oma ID? Silloin linkitys kannattaisi tehdä seuraavasti
<?php echo "<a href=\"kirjantiedot.php?id=" . $kirjanid. "\">" . $kirjannimi . "</a>";
Kirjantiedot.php sivulla taas haet oikean kirjan tiedot tällä tavalla
<?php $id = mysql_real_escape_string ($_GET ['id']); $kysely = mysql_query ("SELECT * FROM kirjat WHERE id = '$id'");
Kyllä, jokainen rivi omistaa oman tunniste IDnsä. Ja kiitos vinkistä, täytyykin pistää heti kokeiluun mitä tuosta saa aikaan.
Vielä vähän jäi epäselväksi, kun minulla on tehty tietojen automaattinen sivutus tällä koodilla:
<?php $kayttaja="********"; $salasana="*********"; $tietokanta="*********"; mysql_connect(localhost,$kayttaja,$salasana); @mysql_select_db($tietokanta) or die( "Virhe tietokantaa valittaessa"); // Kuinka monta riviä/sivu $rowsPerPage = 25; // Oletuksena näytetään sivu nro 1. $pageNum = 1; // jos $_GET['page'] määritetty, käytä sitä sivunumerona if(isset($_GET['page'])) { $pageNum = $_GET['page']; } // Kuinka monta sivua skipataan, että tiedetään kuinka monta riviä kullekkin sivulle kuuluu $offset = ($pageNum - 1) * $rowsPerPage; $query = "SELECT DISTINCT Kirjailija FROM books ORDER BY Kirjailija ASC LIMIT $offset, $rowsPerPage"; $result = mysql_query($query) or die('Virhe, haku epäonnistui'); //Taulukoiden muotoilut //näiden väliin //print random numbers while($row = mysql_fetch_array($result)) //Taulukoiden muotoilut //näiden väliin // Query tietokantaan rivien kokonaismäärän saamiseksi $query2 = "SELECT COUNT(Teos) AS numrows FROM books"; $result2 = mysql_query($query2) or die('Virhe, query2 epäonnistui'); $row = mysql_fetch_array($result2, MYSQL_ASSOC); $numrows = $row['numrows']; // Kuinka monta sivua käytössä kun sivutus käytössä $maxPage = ceil($numrows/$rowsPerPage); // Tulostetaan sivunumerot $self = $_SERVER['PHP_SELF']; $nav = ''; for($page = 1; $page <= $maxPage; $page++) { if ($page == $pageNum) { $nav .= " $page "; // Ei tarvetta linkille nykyiselle sivulle } else { $nav .= " <a href=\"$self?page=$page&rowsPerPage=$rowsPerPage\" class='page'>$page</a> "; } } // luodaan edellisen ja seuraavan linkit // ja linkit millä pääsee suoraan ensimmäiselle ja viimeiselle sivulle if ($pageNum > 1) { $page = $pageNum - 1; $prev = " <a href=\"$self?page=$page\">[Edellinen]</a> "; $first = " <a href=\"$self?page=1\">[Ensimmäinen]</a> "; } else { $prev = ' '; // Sivu yksi, älä tulosta edellistä $first = ' '; // Äläkä ensimmäisen sivun linkkiä } if ($pageNum < $maxPage) { $page = $pageNum + 1; $next = " <a href=\"$self?page=$page\">[Seuraava]</a> "; $last = " <a href=\"$self?page=$maxPage\">[Viimeinen]</a> "; } else { $next = ' '; // Viimeinen sivu, älä tulosta seuraavaa sivua $last = ' '; // Äläkä viimeiselle sivulle menoa } // echotetaan navigaatio linkit echo $first . $prev . $nav . $next . $last; // Ja lopuksi suljetaan yhteys tietokantaan mysql_close(); ?>
Joudun varmaankin heittään tällä vesilintua?
Aihe on jo aika vanha, joten et voi enää vastata siihen.