Miten teillä on tapana luoda sivuston rakenne PHP:llä?
Esim.
- Ollaanko aina index.php:ssä, mikä ottaa GET-arvona sivun, mikä liitetään include()-funktiolla?
- Käytetäänkö eri sivujen jäsentelyyn jotain id-numeroa, minkä perusteella haetaan sivun tieto/osoite tietokannasta?
- Teettekö paljon erillisiä php-tiedostoja yhtä sivua varten, vai yhden tiedoston, joka sisältää paljon tietoa, mutta näyttää halutun tavaran if-lauseiden perusteella?
Jos haluaisin mennä vaikka urheilu-osaston jalkapallosivulle, niin mikä olis todennäköisimmin luomasi sivuston osoite?:
1. sivu.com/urheilu/jalkapallo/
2. sivu.com/urheilu/jalkapallo.php
3. sivu.com/urheilu.php?page=jalkapallo
4. sivu.com/index.php?page1=urheilu&subpage=jalkapallo
5. sivu.com/index.php?page_id=12
6. sivu.com/?p=12
URLista sivu ja require_oncella yleensä sinne sekaan tarkistuksien jälkeen, osoitteen siistiminen htaccessin rewrite-enginellä. Eli 1.
joekool kirjoitti:
- Ollaanko aina index.php:ssä, mikä ottaa GET-arvona sivun, mikä liitetään include()-funktiolla?
Ennen tein näin, nykyään includetan ylaosan ja alaosan jokaiseen tiedostoon. Monessakin tapauksessa järkevämpi vaihtoehto, kun jotkut sivut saattavat haluta lähettää headereita niin saa lähetää ne rauhassa ja sen jälkeen vasta pistetään html:ää kehiin.
joekool kirjoitti:
- Käytetäänkö eri sivujen jäsentelyyn jotain id-numeroa, minkä perusteella haetaan sivun tieto/osoite tietokannasta?
Sivu haetaan loogisesti ?sivu=jalkapallo ja kuten tsuriga mainitsi rewritellä muutetaan sivu.com/jalkapallo
joekool kirjoitti:
- Teettekö paljon erillisiä php-tiedostoja yhtä sivua varten, vai yhden tiedoston, joka sisältää paljon tietoa, mutta näyttää halutun tavaran if-lauseiden perusteella?
Teen paljon erillisiä tiedostoja, joka joskus saattaa kostautua. 50:stä huonosti nimetystä tiedostosta kun alkaa etsimään jotain tiettyä riviä, niin ei hyvä.
En ole ihmeempiä sivuja tehnyt, mutta yleensä tyyli on ollut tuo 2: sivu.com/index.php?sivu=jalkapallo. En olekkaan tuosta rewritestä kuullut, pitääkin tutustua joskus.
Ja tosiaan monta erillistä tiedostoa, kukaan ei lähde lukemaan kymmentuhatrivistä kooditiedostoa (ei PHP:ssä eikä muissakaan kielissä).
Jos sivut ovat erilaisia, valitsen kakkostavan. Jos samanlaisia sivuja on paljon ja sisältö haetaan esim. tietokannasta, kolmonen tuntuu kuitenkin paremmalta. Minusta kaikkien sivujen virittäminen index.php:n alle ei ole hyvä, sillä osoite pidentyy ja vaikeutuu. Myöskään id-numeroita ei kannata käyttää, jos sivuilla on lyhyt, sopiva nimi.
Ite en ole koskaan tykännyt tommosesta ?sivu=blah-hommasta. Mun sivuilla jokaisen sivun rakenne on tyyliin
<?php $otsikko = "Asian otsikko"; include "yla.php"; /* tähän tulee ite sivun sisältö */ include "ala.php"; ?>
Omasta mielestäni toi on tosi helppo, selkeä ja yksinkertainen systeemi. Yla.php:hen saa vaikka kävijälaskurit ja kaikki viritettyä sisään. Siellä myös käsittelen urlin ja muodostan pari hyödyllistä muuttujaa kuten lataajan ip, $takasi (tyyliin <a href="$takasi/index.php">). Ite tykkän tosta tyylistä et yla- ja ala.php muodostaa ton rungon, ?sivu=blah-tyylistä tulee mieleen framet ja tulee paha olo :)
Olen ainakin tähän asti tehnyt jokaiselle sivulle oman tiedoston, olen ajatellut siirtyä kyllä noiden ?page=sivunnimi käyttöihin, mutta en ole löytänyt asiasta kertovaa toimivaa opasta, joku voisi varmaan vihjasta.. ?
chiqu: eihä vaikeekaan, turvallinen ratkaisu on vaikka tehä taulukko esim $sivut = array("pääsivu" => "indeksi.php", "minä" => "administa.php") ja sitte includetat $sivut[$_GET["sivu"]]. Siis tohon tyyliin.
jaajaa, et noin iisipiisiä. Mut eihä toi mitää auta, voi vaan lesota taidoillaan ;P
Koitin muuten ja en oikeen ymmärtänyt, viitsisikö joku antaa ihan toimivan esimerkin tuosta, linkityksineen ?
Hm, tää ei annamun muokata viestejäni :/
No enivei, ymmärsin jo homman, en tartte apua.
no jaa.. mul on yleensä monta erillistä php filuu ja aina ainakin yla.php ja ala.php jotka sit includetan, mut sen lisäks mul on tapana tehä semmonen sivu jossa hoidetaan kaikki pikkujutut kuten sisään/ulos kirjautuminen. Eli käytän 1, 2 ja 3 tyylejä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.