Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Templaten täyttö SQLsta

Sivun loppuun

Plakkis [21.09.2010 11:53:27]

#

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

-tossu- [23.09.2010 21:35:50]

#

Plakkis kirjoitti:

Lisätietoja saa/pitää pyytää, josei muuten onnistu minkään vinkin antaminen.

Mitä tarkoitat sanalla "template", jotain valmista sivupohjaako?

Metabolix [23.09.2010 21:45:21]

#

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.

Plakkis [23.09.2010 22:32:34]

#

-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)

-tossu- [23.09.2010 22:47:40]

#

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?

Plakkis [23.09.2010 22:59:19]

#

-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.

-tossu- [23.09.2010 23:27:04]

#

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'");

Plakkis [23.09.2010 23:35:22]

#

Kyllä, jokainen rivi omistaa oman tunniste IDnsä. Ja kiitos vinkistä, täytyykin pistää heti kokeiluun mitä tuosta saa aikaan.

Plakkis [26.09.2010 23:13:02]

#

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 = '&nbsp;'; // Sivu yksi, älä tulosta edellistä
    $first = '&nbsp;'; // Ä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 = '&nbsp;'; // Viimeinen sivu, älä tulosta seuraavaa sivua
$last = '&nbsp;'; // Ä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?


Sivun alkuun

Vastaus

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

Tietoa sivustosta