Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Include-ongelma

Sivun loppuun

Haraldinho [06.10.2013 22:36:37]

#

Hei! Sellainen ongelma on ilmennyt, että kun liitän includen avulla html-sisältöä html-sisällön keskelle, esimerkiksi valmiin sivun keskelle liittäisin kirjautumislomakkeen. Kun sisältö liitetään, tulee tiedostojen "liitoskohtaan" väkisin ylimääräinen rivinvaihto. Mistähän se johtuu ja kuinka voisin sen korjata muuten kuin tekemällä tällaisen homman:

<p style="margin-top: -20px;"></p>

Jos ymmärsitte, kertokaa mistä on kyse, kiitos!

Lebe80 [06.10.2013 22:58:53]

#

Katsopa, ettei sun "include"-tiedostoissas ole mitään ylimääräisiä rivinvaihtoja <?php ?> -tägien ulkopuolella (esim. tiedoston alussa/lopussa).

Missäs kohtaa tuo rivinvaihto näkyy, kun periaatteessa html:ssä tyhjät rivit eivät näy ilman erillisiä html-tägejä.

Tukki [07.10.2013 10:48:50]

#

Lebe80 kirjoitti:

Missäs kohtaa tuo rivinvaihto näkyy, kun periaatteessa html:ssä tyhjät rivit eivät näy ilman erillisiä html-tägejä.

Tarkkaanottaen tuo ei ihan noin ole. Inline-kontekstissa useat peräkkäiset tyhjät rivit ja muut whitespace-merkit supistuvat yhdeksi välilyönniksi. Eli sillä on merkitystä onko noita whitespaceja yksi tai useampi vaiko ei yhtään.

Lebe80 [07.10.2013 10:52:06]

#

Tukki kirjoitti:

Lebe80 kirjoitti:

Missäs kohtaa tuo rivinvaihto näkyy, kun periaatteessa html:ssä tyhjät rivit eivät näy ilman erillisiä html-tägejä.

Tarkkaanottaen tuo ei ihan noin ole. Inline-kontekstissa useat peräkkäiset tyhjät rivit ja muut whitespace-merkit supistuvat yhdeksi välilyönniksi. Eli sillä on merkitystä onko noita whitespaceja yksi tai useampi vaiko ei yhtään.

No siksihän mä sitä kysyinkin, miten se näkyy ja missä kohtaa. Kysyjä kuitenkin puhuu rivinvaihdosta, eikä "välilyönnistä".

Haraldinho [07.10.2013 11:08:58]

#

Itse asiassa lähdekoodissa ei näy <br> -tägejä tai vastaavaa, joten kyse ei ehkä ole rivinvaihdosta, mutta kuitenkin...
Huomasin, että väli ilmestyy vain, jos käytän liitettävässä koodissa tägejä. Jos kirjoitan sisällön ilman mitään tägejä, ei väliä tule.

Esimerkki tapauksesta:

Index.php

<html>
 <body>
 <div style="border: 1px solid #000;">
  <?php
  include("kirjaudu.php");
  ?>
  </div>
 </body>
</html>

Ja kirjaudu.php:

<p>Kirjaudu</p>
<form>
 Tunnus: <input type="text">
</form>

Lebe80 [07.10.2013 11:17:41]

#

Ettei nyt vain olisi selaimen oletustyylit ongelman aiheuttajana? Eli joko p-tägi puskee itselleen omat rivinvaihdot, tai vastaavasti formin tyylit.

Tietenkin, sullahan voi olla myös omia css-tyylejä, joita et vain tuohon esimerkkiisi ole laittanut...

Haraldinho [07.10.2013 12:50:13]

#

Ajattelin itsekin, että se lienee tägien oletustyylistä kiinni, mutta jännä että ne tyylit tulevat käyttöön vasta kun liitän tekstiä. Jos saman sisällön liittää ilman includea, välejä ei synny.

Lebe80 [07.10.2013 12:58:55]

#

No selaimesta vaan Web Developer osio auki ja katsomaan, mistä johtuu, ei tästä oikein pysty ilman linkkiä arvailemaan muuta.

The Alchemist [07.10.2013 13:14:13]

#

White-space ei saa olla ongelma. Koodaa sivusi paremmin. Lisäksi on aika selvää, että pasteamasi esimerkit eivät oikeasti ole sitä koodia, mikä sulla oikeasti on käytössä ja minkä kanssa sulla on ongelmia. Sellaisista esimerkeistä ei tietenkään voi vikaa löytää.

pistemies [07.10.2013 13:55:01]

#

Haraldinho kirjoitti:

Ajattelin itsekin, että se lienee tägien oletustyylistä kiinni, mutta jännä että ne tyylit tulevat käyttöön vasta kun liitän tekstiä. Jos saman sisällön liittää ilman includea, välejä ei synny.

Minulla ainakin kun testaan noita esimerkkejä, tekstin "Kirjaudu" ylä- ja alapuolelle tulee tyhjä rivi riippumatta onko käytetty includea vai onko tuo lomake index.php tiedostossa.
Se johtuu ihan tuosta p ja form-tagien oletustyyleistä. Koska ne molemmat on yhdellä rivillä voit asettaa niille tyyliksi display:none.

Lebe80 [07.10.2013 15:59:28]

#

pistemies kirjoitti:

Se johtuu ihan tuosta p ja form-tagien oletustyyleistä. Koska ne molemmat on yhdellä rivillä voit asettaa niille tyyliksi display:none.

...

pistemies kirjoitti:

Koska ne molemmat on yhdellä rivillä voit asettaa niille tyyliksi display:none.

Mit... miksi?!
http://www.reactiongifs.com/wp-content/uploads/2013/02/imgur_9CUtI.gif

pistemies [07.10.2013 16:13:13]

#

Oho. Eiku inline :)

(Rivitys on sillon "none")

Lebe80 [07.10.2013 16:34:00]

#

pistemies kirjoitti:

Oho. Eiku inline :)

(Rivitys on sillon "none")

No eikös silloin olis vaan helpompi laittaa p:n tilalle jokin inline-elementti?

pistemies [07.10.2013 16:43:05]

#

Lebe80 kirjoitti:

No eikös silloin olis vaan helpompi laittaa p:n tilalle jokin inline-elementti?

Joo.

Haraldinho [07.10.2013 19:08:11]

#

The Alchemist kirjoitti:

Koodaa sivusi paremmin.

Ah, siinäpä vasta ammattilaisen neuvo, kiitos avusta! Alankin koodata tästä lähtien hyvin sen sijaan, että koodaisin huonosti :)


Sivun alkuun

Vastaus

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

Tietoa sivustosta