Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: HTML tageja PHP-muuttujaan ym.

Sivun loppuun

jumitusta [04.11.2009 20:23:20]

#

Miten voisin lisätä johonkin PHP muuttujaan HTML tageja, esim: tällä tapaa(joka ei toimi...): $muuttuja="<a href=$linkki></a>"; (tuo $linkki muuttuja olisi saatu jostain formista).

Tarkoitus olisi sitten lisätä HTML-tiedoston <bodyyn> tuo muuttuja @muuttuja, jolloin tarkoitus olisi saada siihen aikaiseksi linkki muuttujan @linkki määräämään osotteeseen...

Kellään jotain apuja jompaan kumpaan probleemaan? Kiitos

(tossa jälkimmäisessä ongelmana on että jos yritän kirjottaa PHP:lla HTML tiedostoon, tulee kaikki teksti sinne ihan tiedoston loppuun, eikä bodyyn)

trilog [04.11.2009 20:31:49]

#

HTML-tagit ovat ihan normaalia tekstiä, joten toki niitä voi asettaa muuttujien arvoiksi. Ne pitää tulostaa, koska eihän selain niitä muuten koskaan tule näkemään. PHP suoritetaan palvelimen puolella, ei selaimessa.

Triton [04.11.2009 20:41:07]

#

Sitä paitsi eihän mikään ohjelmointikieli anna muuttijien arvoja näkyviin ennen kuin ne tulostetaan, vai olenko väärässä?

jumitusta [05.11.2009 07:58:50]

#

Juu, kiitos vastauksista. Ensimmäinen ongelma ratkesikin näköjään, johtui kai siitä että käytin hrefissä merkkiä " kun olisi pitäny käyttää merkkiä '

Toinen ongelma ei ole ratkennut kunnolla, mutta näköjään sinne </html> tagin jälkeenkin kirjotetut tagit toimivat, mutta siinä joutuu aina uudestaan määrittämään esim. divin asetukset, kun lisätään uutta tietoa sinne PHP:lla. Kätevää olisi jos pystyisin suoraan bodyn div-tagien sisään tulostamaan PHP:n fwritellä.

tsuriga [05.11.2009 08:15:53]

#

Älä kirjoita suoraan HTML-tiedostoon, vaan sisällytä haluamasi sisältö PHP:llä sivua suorittaessa.

Grez [05.11.2009 08:33:37]

#

jumitusta kirjoitti:

näköjään sinne </html> tagin jälkeenkin kirjotetut tagit toimivat

Se että tuollainen sattuu jossain toimimaan ei todellakaan tarkoita, että niin kannattaisi tehdä.

Jäynis [05.11.2009 08:49:21]

#

fwrite kirjoittaa tiedoston loppuun ainakin jos tiedosto on avattu fopen("sivu.html","a") tyylillä. Siispä jos välttämättä haluat luoda staattisen html-sivun niin sivun voisi kasata "osissa" esim.

...
$filu=fopen("sivu.html","w");
fwrite($filu,$sivun_ylaosa); //<html><head> jne.
fwrite($filu,$keskiosa); //esim. formista saadut linkit
fwrite($filu,$sivun_alaosa); //</body></html>
fclose($filu);

Edit:korjaus

Teuro [05.11.2009 09:06:34]

#

Jäynis kirjoitti:

fwrite kirjoittaa tiedoston loppuun ainakin jos tiedosto on avattu fopen("sivu.html","w") tyylillä.

Ei kyllä tuo pyyhkii koko tiedoston, mutta moodi "a" kirjoittaisi loppuun.

Jäynis [05.11.2009 09:12:32]

#

O-hups, tosiaan. Hyvä kun korjasit :)

jumitusta [05.11.2009 09:44:19]

#

Kiitoksia vastauksista. Ongelmani ei ratkennut kuitenkaan tai sitten en osaa, olen aika alussa näitten hommien kanssa...

Tarkoitus olisi, että sivulle voisi lisätä linkkejä tekstikentän avulla, eli ne aiemmatkin linkit säilyisivät ja sitten lisättäisiin sinne uusia perään.

Onko olemassa mitään määritettä PHP:n fwriteen tai muuhun joka esim. etsisi tietyn kohdan PHP-tiedoston avaamasta html-dokumentista ja kirjoittaisi siihen kohtaan, eikä loppuun, vaikka että HTML:dokumentissa lukis jotain tyyliin: location=linkit ja sit fwritellä kirjotettaisiin tohon "linkit" kohtaan...jotain tommosta haen.

tsuriga [05.11.2009 09:53:46]

#

Kirjoita ja lue linkit sivulle ulkoisesta lähteestä (tiedosto/tietokanta).

Teuro [05.11.2009 10:33:36]

#

Esimerkiksi näin voisi toteuttaa tuon.

<html>
<head>
<title>Linkkejä sivulle</title>
</head>
<body>
<?php
$linkit = file("linkit.txt");
$maara = count($linkit);
echo "<ul>";
for($a = 0; $a < $maara; $a++){
  echo "<li><a href=\"" . $linkit[$a] . "\">Linkki{$a}</a></li>";
}
echo "</ul>";
?>
</body>
</html>

linkit.txt voisi olla seuraavanlainen tuotos.

etusivulle.php
toiselle_sivulle.php

jumitusta [05.11.2009 14:23:45]

#

Kiitoksia paljon Teuro! Sain jutskani toimimaan tuolla keinolla.

tsuriga [05.11.2009 15:23:32]

#

Tai näin:

<?php
$links = file('linkit.txt', FILE_IGNORE_NEW_LINES);
?>
<html>
 ...
 <body>
  <ul>
   <?php foreach ($links as $url): ?>
   <li><a href="<?php echo $url; ?>"><?php echo basename($url, '.php'); ?></a></li>
   <?php endforeach; ?>
  </ul>
 </body>
</html>

Etunahan tässä on se, että kun opetetaan suorilta käsin toiminnallisuuskoodin ymppääminen sivun alkuun, saadaan iskostettua selkeä jaottelumalli eikä törmätä myöhemmin surullisenkuuluisaan headers already sent -ilmoitukseen.


Sivun alkuun

Vastaus

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

Tietoa sivustosta