Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Sisällön muuttuminen eri sivuilla + lomake, joka lisää sisällön suoraa sivulle?

Sivun loppuun

merlin [10.10.2010 12:04:35]

#

Ensinnäkin pahoittelut huonosta otsikoinnista, en osannut nimetä tätä kun en oikein tiedä, että mitä etsin.

Olen siis rakentelemassa sivujani. Olen jakanut sivun kolmeen osaan, yla.php, itse sisältöön ja ala.php.

Minulla on kuitenkin ongelma, kyseisellä tavalla yla.php:hen lukeutuisi kaikki grafiikat (jolloin joka sivulla näkyisi samat grafiikat). Tavoite kuitenkin olisi saada kolmella eri sivulla (laukkahevoset, ratsuhevoset, ravihevoset) näkymään eri "logo" (ratsut_otsikko.jpg, ravi_otsikko.jpg, laukka.otsikko.jpg) sekä kuva (info_ratsut.jpg, info_ravi.jp, info_laukka.jpg).

Olisiko siis mahdollista, että jokin koodi tunnistaisi millä sivulla nyt ollaan (tajuaisi sisältösivun "arvon" : onko ratsu-, laukka- vai ravihevos-sivulla) ja käyttäisi kyseiselle sivulle tarkoitettuja grafiikoita?

----

Lisäksi olen miettinyt, että onko mahdollista tehdä lomaketta, joka lisää ölähetysö nappia painaessa lomakkeen sisällön suoraa samalle sivulle hieman alemmas. Uskon ettei tuossa ole niinkään haastetta, mutta lomakkeen sisältö (vain yksi laatikko, johon teksti kirjoitetaan) sisältö tulisi jakaa erilaisten otsikoiden alle?
Virtuaalitalleilla järjestetään kisoja - leikitään tällä kertaa, että järjestän vaikka estekisat. Kisoissani on vaikkapa kolme eri luokkaa:
Lk 1. 100cm
Lk 2. 120cm
Lk 3. 150cm
Osallistujat saavat osallistua rajatulla hevosmäärällä vaikka kaikkiin luokkiin. Lomakkeella tulee ilmoittaa seuraavat tiedot:
Luokan numero, johonalle listatut hevoset osallistuvat, sekä ratsastaja (ratsastajan tunnus) ja hevosen nimi. Yleinen ilmoitustapa kyseiselle litanjalle on seuraava:
Lk 1.
Heppu (VRL-0000) – Heppa Hoppunen
Heppu (VRL-0000) – Poni Poninen
Lk 2.
Heppu (VRL-0000) – Heppa Hoppunen
Heppu (VRL-0000) – Poni Poninen
Lk 3.
Heppu (VRL-0000) – Rautias Risto

Voiko jollakin koodilla määrittää, että tietyn "otsikon" alla oleva sisältö lisätään tiettyyn kohtaan, vai onko luotava esimerkiksi eri lomakelaatikot jokaiselle luokalle (se olisi ongelmallista, sillä luokkia voi olla vaikkapa 12). Lisäksi lisättyä sisältöä pitäisi pystyä poistamaan.

Kuten ehkä huomaatte, en ole mikään ohjelmoija hirmu, hyvä kun edes olen tajunnut miten php-koodi yleensä muodostetaan. Eli helpointa olisi varmaankin joku kädestä pitäen -opastus tai vaikkapa linkki jollekkin sivulle mistä löytyisi sopiva koodi käyttööni. Kiitos tuhannesti sille, joka pystyy minua auttamaan :)
Jos et tajunnut mitä tarkoitin, kysy!

muokk// miten musta tuntuu, että lähetin tämän vahingossa väärälle "palstalle", oikohan kuulunut tuonne ohjelmointi & kotisivut -alueelle... (mod. korjasi asian)

jimi-kimi [10.10.2010 17:24:27]

#

<?php
# index.php
# Tarkistetaan onko $_GET parametri "sivu" asetettu ja jos ei niin asetetaan
# se etusivuksi. Esimerkissa muuttujan kayttoa ja linkin muodostaminen...
# Lue, google, php.net ja kysy jos ei selkiä.
# Koodi testaamatonta ja suoraan selaimeen kirjoitettu.
ob_start();
if(isset($_GET['sivu'])){
  $NYKYINEN_SIVU = $_GET['sivu'];
}else{
  $NYKYINEN_SIVU = 'etusivu';
}
?>
<html>
<head>
<title><?php echo $NYKYINEN_SIVU;?></title>
<style>
@import url('perustyyli.css');
@import url('<?php echo $NYKYINEN_SIVU . '.css';?>');
</style>
</head>
<body>
<p>Nykyinen sivu: <?php echo $NYKYINEN_SIVU;?></p>
<a href="index.php?sivu=etusivu">etusivu</a><a href="index.php?sivu=ratsuhevoset">ratsuhevoset</a>
</body>
</html>
/* perustyyli.css */
p{
background-color: #acacac;
}


/* etusivu.css */
p{
font-size: .86em;
}

/* ratsuhevoset.css */
p{
font-size: 1.26em;
}

Kysy, jos jäi vielä jotain epäselvää tämän hyvin epäselvän esimerkin jälkeen.

EDIT: Esimerkin ymmärtämisen kannalta merkittävä unohdus. .css liittäminen nykyiseen sivuun tyylitiedoston määrittämisessä.

(Mod. huom: Eri koodit eri kooditageihin!)

Antti Laaksonen [10.10.2010 17:27:38]

#

merlin kirjoitti:

Olisiko siis mahdollista, että jokin koodi tunnistaisi millä sivulla nyt ollaan (tajuaisi sisältösivun "arvon" : onko ratsu-, laukka- vai ravihevos-sivulla) ja käyttäisi kyseiselle sivulle tarkoitettuja grafiikoita?

Saat sivun nimen selville näin:

<?php
$sivu = $_SERVER['REQUEST_URI'];
echo $sivu;
?>

Tämän perusteella voit valita esim. näytettävän kuvan:

<?php
$sivu = $_SERVER['REQUEST_URI'];
if ($sivu == "/sivu1.php") {
    echo "<img src=\"kuva1.png\">";
} else if ($sivu == "/sivu2.php") {
    echo "<img src=\"kuva2.png\">";
} else if ($sivu == "/sivu3.php") {
    echo "<img src=\"kuva3.png\">";
}
?>

trilog [10.10.2010 17:29:13]

#

Huomaa myös, että esitetyssä esimerkissä on XSS-aukko.

Suosittelen tutustumaan tähän koodivinkkiin.


Muokkaus. Tarkoitin siis jimi-kimin esimerkkiä.

jimi-kimi [10.10.2010 17:41:19]

#

<?php
// ...
$sivut = array("etusivu", "ratsuhevoset");
if(!in_array($NYKYINEN_SIVU, $sivut)){
  die("404 - Page not found..");
}
?>
<html>...

Ellei nyt sitten jäänyt kiireessä jotain oleellista huomaamatta.

merlin [10.10.2010 20:11:10]

#

En mie saa noita toimimaan. Ongelmia tulee, kun näille sisältösivuille (index.php, ratsut.php, laukka.php, ravi.php) ei tule <html>, <head>, <style> ja <body> tageja, koska ne määritetään jo yla.php. Eli en voi tota tyyliä määrittää missään. Ja siis tämä tuossa jimi-kimin ohjeessa.

Antin ohjeessa taasen koodien sijoituspaikat hiukan hakusessa. Ilmeisesti tuo ensimmäinen joka sivun alkuun, pitääkö siitä muokata jotain? Ja tuo toinen sinne yla.php:hen vai?

Tässä tulee taas ilmi kuinka avuton oon tämmösten kanssa x)

jimi-kimi [10.10.2010 20:53:57]

#

Helpointa kai olisi, jos pääsisit sivun sisältöön jotenkin käsiksi..

# pohja.php
<html>
<head>
<title><?php echo $SIVU_OTSIKKO;?></title>
</head>
<body>
<?php echo $SIVU_SISALTO;?>
</body>
</html>
<?php
# index.php
ob_start();
$SIVU_OTSIKKO = "";
$SIVU_SISALTO = "";

$NYKYINEN_SIVU = $_SERVER['REQUEST_URI'];

if($NYKYINEN_SIVU == "ratsut.php"){
  $SIVU_OTSIKKO = "RATSUT OTSIKKO";
  $SIVU_SISALTO = "RATSUT SIVUN SISALTO";
} # Voit jatkaa kaikki sivut else ifillä..
else{
  $SIVU_OTSIKKO = "Etusivu";
  $SIVU_SISALTO = "Etusivun sisalto";
}

include_once('pohja.php');

Tässä taas yksi esimerkki miten tämä hoituu todella rumasti, mutta saat varmaan idean poimittua tuosta. Putkan muilta käyttäjiltä saat varmaankin kattavammat ohjeet..

merlin [11.10.2010 16:20:54]

#

jimi-kimi, ongelma on edelleen siinä, että en osaa asentaa tuota sivuilleni x) Kun en tiedä mitä minnekkin pitäisi tunkea. Laitanko tuohon pohja.php;hen ns. ulkoasun ilman sisältö ja index.php;hen tarkoitettu koodi tulee jokaiselle "sisältö"-sivulle?

-tossu- [11.10.2010 17:50:07]

#

merlin kirjoitti:

jimi-kimi, ongelma on edelleen siinä, että en osaa asentaa tuota sivuilleni x) Kun en tiedä mitä minnekkin pitäisi tunkea. Laitanko tuohon pohja.php;hen ns. ulkoasun ilman sisältö ja index.php;hen tarkoitettu koodi tulee jokaiselle "sisältö"-sivulle?

Tuossa on ideana, että on vain kaksi tiedostoa, toinen on sivupohja ja toisessa kaikki sisältö. Mielestäni siinä ei ole mitään järkeä, koska se vain hankaloittaa sivujen ylläpitoa.

Itse tekisin sen näin:
index.php

<?php
$sivu = $_GET ['sivu'];
$sivut = array ("etusivu.php", "takasivu.php", "sivu2.php");
if (!in_array ($sivu, $sivut))
	$sivu = "etusivu";

?>
<html>
<!-- tähän header -->
<body>
<img src="logo<?php echo $sivu; ?>.png">
<?php include ($sivu); ?>
</body>
</html>

Eli on vain yksi sivu, jossa on ulkoasu, ja siihen liitetään halutun sivun sisältö. Linkit ovat tässä tapauksessa muotoa index.php?sivu=sivu2.php .

merlin [11.10.2010 18:14:58]

#

-tossu-, eli siis jokaisen sivun sisältö lisätään samalle sivulle? Tuo on minun tapauksessani kyllä täyttä itsemurhaa x) Sisältöä tulee roppakaupalla ja varsinkin hevosten sivut tulisi todella vaikeaksi muokata (hevosia saattaa tulla jopa 100).

Ehkä kuitenkin toteutan tämän usemmalla eri yla.php:lla. Nyt siis enää apua tuohon toiseen pulmaan :)?

-tossu- [11.10.2010 18:54:00]

#

merlin kirjoitti:

-tossu-, eli siis jokaisen sivun sisältö lisätään samalle sivulle? Tuo on minun tapauksessani kyllä täyttä itsemurhaa x) Sisältöä tulee roppakaupalla ja varsinkin hevosten sivut tulisi todella vaikeaksi muokata (hevosia saattaa tulla jopa 100).

En tiedä käsitikö jotain tekstistäni väärin, mutta jos käytät tuota minun ratkaisuani, niin kaikki sisältö ei tule samalle sivulle.

merlin [11.10.2010 18:58:59]

#

-tossu-, ilmeisesti käsitin :D hetki pieni, yritän sisäistää tota (ja kokeilla käytännössä) ->

muokkaus! -tossu- kiitos, kiitos, kiitos! Kerrankin joku ohje, jonka tajusin (mitä nyt aluksi pientä haparointia). Ainoo ongelma on, että kun tuolla alussa on määritetty nimet .php päätteisiksi, niin kuvien osoitteet ei toimi (muutakuin tuo paasivu_otsikko.jpg ja info_paasivu.jpg), koska se .php änkee myös mukaan osoitteisiin?

Lisäksi toi sisalto ei näy/jotain virheitä koodissa.

Macro [11.10.2010 20:29:03]

#

Tämä: <?php include ($sivu); ?>
täksi: <?php include ("$sivu.php"); ?>

merlin [11.10.2010 20:34:51]

#

macro, ei vaikuta mitään. Ongelma taitaa olla siinä, että

<?php
$sivu = $_GET ['sivu'];
$sivut = array ("[l]paasivu.php[/l]", "ratsut.php", "ravi.php", "laukka.php");
if (!in_array ($sivu, $sivut))
    $sivu = "[l]paasivu[/l]";

?>

boldatut on erinimiset vai mitä? Koska paasivu.php'n sisältö ei näy, mutta kuvat toimii. Toisin kuin ratsut.php, ravi.php ja laukka.php kuvat ei toimi, mutta sisältö toimii?

Mod. lisäsi kooditagit

-tossu- [11.10.2010 20:36:57]

#

merlin kirjoitti:

macro, ei vaikuta mitään. Ongelma taitaa olla siinä, että
...
boldatut on erinimiset vai mitä?

Koodissani on näköjään kirjoitusvirhe. Ota .php pois myös sieltä arraysta ja muuta include <?php include ("$sivu.php"); ?>:ksi.

merlin [11.10.2010 20:43:10]

#

Nyt paasivu.php sisältö ja kuvat näkyy, mutta linkkejä kokeillessa mikään sivulla ei muutu (ensimmäisen väliotsikon, logon ja isoimman kuvan pitäisi muuttua ravi, laukka ja ratsut sivuja painaessa).

-tossu- [11.10.2010 20:45:00]

#

merlin kirjoitti:

Nyt paasivu.php sisältö ja kuvat näkyy, mutta linkkejä kokeillessa mikään sivulla ei muutu (ensimmäisen väliotsikon, logon ja isoimman kuvan pitäisi muuttua ravi, laukka ja ratsut sivuja painaessa).

Myös linkeistä pitää ottaa .php lopusta pois.

merlin [11.10.2010 20:48:49]

#

Nyt toimii, kiitos aivan superpaljon :) ! Olen ollut vaikea "asiakas" kun ei oikein php vielä ole hallussa. Nyt enää tuo tulostus-juttu :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta