Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Pieni sivusto PHP:llä?

timodemus [05.06.2007 23:17:40]

#

Miten PHP:llä tehdään allaolevista html-sivuista esim sivu.php, joka näyttäisi käyttäjälle samalta, mutta koko sivusto olisi yhdessä tiedostossa?

eka.html

<html>
<head>
<title> Eka sivu </title>
</head>

<body>
Tämä on eka sivu<br>
<br>
<a href="eka.html">eka.html</a><br>
<a href="toka.html">toka.html</a><br>
<a href="kolmas.html">kolmas.html</a>
</body>
</html>

toka.html

<html>
<head>
<title> Toka sivu </title>
</head>

<body>
Tämä on toka sivu<br>
<br>
<a href="eka.html">eka.html</a><br>
<a href="toka.html">toka.html</a><br>
<a href="kolmas.html">kolmas.html</a>
</body>
</html>

kolmas.html

<html>
<head>
<title> Kolmas sivu </title>
</head>

<body>
Tämä on kolmas sivu<br>
<br>
<a href="eka.html">eka.html</a><br>
<a href="toka.html">toka.html</a><br>
<a href="kolmas.html">kolmas.html</a>
</body>
</html>

pistemies [05.06.2007 23:49:53]

#

<html>
<head>
<?php
if(!$_GET['sivu']){
echo '<title> Eka sivu </title>
</head>

<body>
Tämä on eka sivu<br>';
 }
//toka.html
if($_GET['sivu'] =="toka_html"){
echo '<title> Toka sivu </title>
</head>

<body>
Tämä on toka sivu<br>';
}


//kolmas.html
if($_GET['sivu'] =="kolmas_html"){
echo '<title> Kolmas sivu </title>
</head>

<body>
Tämä on kolmas sivu<br>';
}
?>
<a href="mun.php">eka.html</a><br>
<a href="mun.php?sivu=toka_html">toka.html</a><br>
<a href="mun.php?sivu=kolmas_html">kolmas.html</a>
</body>
</html>

Sivun sisältö on tässä pääosin sama (linkit). Niimpä tarvitaan muutoksia vain noita otsikoita varten.

timodemus [06.06.2007 00:29:17]

#

Kiitos!
Toka ja kolmas sivu toimii.
Ekassa näkyy otsikot, mutta lisäksi sivulla näkyy seuraavat herjat:


Notice: Undefined index: sivu in c:\program files\easyphp1-8\www\mun.php on line 4

Notice: Undefined index: sivu in c:\program files\easyphp1-8\www\mun.php on line 12

Notice: Undefined index: sivu in c:\program files\easyphp1-8\www\mun.php on line 22


Eli ilmeisesti noissa if-lauseissa on jotain vikaa?

Käytän EasyPHP -virtuaalipalvelinta omalla koneella, mutta on sillä kaikki aikaisemmat sivut toimineet, joten vika tuskin on siinä...

tsuriga [06.06.2007 05:25:08]

#

Sinun tulisi tarkistaa, sisältääkö $_GET-taulukko kyseistä indeksiä. Näin ei ole, ellei käyttäjä ole sisältänyt sitä sivupyyntöönsä (ts. hakenut esimerkiksi sivua mun.php?sivu=kolmas_html). Toisekseen, kannattaa käyttää tuossa else if -rakennetta - sivu kun ei voi olla montaa eri arvoa kuitenkaan. Kun tiedetään muuttujan tyyppi, vertailu on sama tehdä tarkoilla vertailuoperaattoreilla yllätysten välttämiseksi, sekä mahdollisesti myös nopeuden vuoksi (kun epätarkan vertailun sisältävä if palauttaa falsen, se on hitaampi kuin tarkka vertailu. Veikkaisin tilanteen olevan toinen kun if palauttaakin truen.. ei sillä, että tässä nopeuserolla olisi lähinnä mitään väliä, kts. oikea syy yllä :p). Kannattaa myös lukea PEARin koodausstandardit.

pistemies [06.06.2007 11:58:54]

#

Palvelimella, jota käytät, php:n asetuksissa on E_NOTICE päällä virheilmoitukissa. Jos asiaan voit vaikuttaa, se kannattaa poistaa error_reporting-listalta.(Edit: Voit tietty vaikuttaa, koska tiedostot näyttävät olevan C-asemassa).
Minun koneellani yksikään error_reporting ei ole päällä (edessä puolipiste ;), eikä ole haitannut. Niitä voi tarpeen mukaan asetella päälle, jos ei jokin homma muuten selviä.
Riittää, kun display_errors = On.
Nämä siis tapahtuvat php.ini tiedostossa.

tsuriga [07.06.2007 08:37:43]

#

Ei nyt taas mennä helpoimman kautta, vaan varmistetaan mieluummin ohjelman toimivuus ennen kuin lasketaan softaa nettiin. Kyllä ne noticetkin saa olla päällä siellä kehitysserverillä, muuten sitä voi ihmetellä esimerkiksi notta "mitenkäs tässä minun funktiossa muuttujalla x on arvo 0". Tämähän voi johtua yksinkertaisesti vaikkapa siitä, että muuttuja oli määritelty funktion ulkopuolella, jolloin se ei näy funktion sisälle, ja muuttujalle annettiin oletusarvo. Paljon helpompi debugata kun huomautuksetkin ovat käytössä, ja kun ne oikeasti otetaan huomioon sillä isset-funktiolla.

timodemus [07.06.2007 11:53:09]

#

Sain toimimaan, kun muutin hieman tota ekaa sivua,

if($_GET['sivu'] =="eka_html"){
echo '<title> Toka sivu </title>
</head>

<body>
Tämä on eka sivu<br>';
}

+ linkkeihin muutos:
<a href="mun.php?sivu=eka_html">eka.html</a>

ja sivulle saapuessa laitoin osoitteeksi:
mun.php?sivu=eka_html

Kiitos kaikille!

Vastaus

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

Tietoa sivustosta