Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: php + iframe kohdistus

Sivun loppuun

HellCome [14.03.2005 21:20:20]

#

Sellainen projekti olisi menossa, että pitäisi saada väännettyä kaikenlaiset ruokaan liittyvät reseptit koneelle. Homman nimi on nyt nimittäin sellainen, että ajattelin tehdä sivun jolla on kaksi iframea. Vasempaan iframeen tulee reseptilista (joka toimii mainiosti) ja valittaessa itse resepti, niin se ponnahtaisi oikeanpuoleiseen, isompaan iframeen, mutta kuinka ollakaan, näin ei käykään, vaan resepti näkyykin siinä pienemmässä, vasemmassa iframessa.

Tässä olisi esimerkin vuoksi "lihat.php"

<?php
require "funktiot.php";
$yhteys=AvaaTK();

$sql="SELECT * FROM ruoat WHERE tyyppi='Liharuoka'";

if (!$kysely = mysql_query($sql, $yhteys))
		{
		die("kysely epäonnistui : " . mysql_error());
		}

while ($rivit = mysql_fetch_array($kysely))
		{
		print "<a href='resepti.php?id=".$rivit[id];
		print "&tyyppi=".$rivit[tyyppi]."'>Linkki</a><br />";
		}

?>

Ja homma toimii kuin junan vessa. Seuraavana olisi sitten se "resepti.php" joka sitten näyttää kyseisen reseptin.

<?php
require "funktiot.php";
$yhteys=AvaaTK();
$id=$_GET['id'];

$sql="SELECT * FROM ruoat WHERE id='$id'";

if (!$kysely = mysql_query($sql, $yhteys))
		{
		die("kysely epäonnistui : " . mysql_error());
		}

while ($rivit = mysql_fetch_array($kysely))
		{
		print "<h3><u>$rivit[nimi]</u></h3>";
		print "<b><u>Ainekset:</u><br /></b><ul><li>$rivit[ainekset]</li></ul>";
		print "<b><u>Valmistus:</u><br /><br /></b>$rivit[tekoohje]<br /><br />";
		print "<b><u>Huom:</u></b><br /><br />$rivit[huom]";
		}

?>

Nyt sitten onkin kohdattava se ongelman ydin. Nimittäin "reseptit.html" sisältää alla mainitun iframen pätkän:

<iframe width="150px" height="300px" frameborder="1" name="reseptilista">
</iframe>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<iframe width="550px" height="300px" frameborder="1" name="reseptifreimi">
</iframe>

Varsinaiset reseptilistat (kasvis, pasta, liha...) olen laittanut valittavaksi reseptit.html sivulle tableen valittaviksi (<a href="lihat.php" target="reseptilista">), mutta kuinkas nyt sitten onnistuisi se lihat.php:n sisällä olevat linkit saada auki tuohon reseptit.html:n 'reseptifreimi':n?

samii [14.03.2005 23:13:53]

#

En muista iframeista / frameista ylipäätänsä mitään.. Mutta muistaakseni niissä linkeissä oli joku 'target="framennimi"' eli sen framen nimi mihin haluat sen avautuvan..

Tuossa tapauksessa siis; target="reseptifreimi"

Ei voi muistaa eikä jaksa nyt tarkistaa.

HellCome [15.03.2005 00:04:26]

#

kyllä toimii etusivulla, jossa haetaan esim "liharuoat" napilla liharuoat siihen vasen frameen, mutta kun ollaan siellä "liharuoat.php" sivulla siinä vasenframessa, niin sieltä käsin en ole saanut tuotua "kokoresepti.php" sivua siihen oikeaframeen. Ketuttaa.

chiqu [15.03.2005 09:38:25]

#

Tosiaan, oletko varmasti targettanut ne linkit ?

Koska ne aukeavat oletuksena varmasti samaan frameen, tulisi sinun muuttaa linkeistä aina, että mihin ne aukeavat:

target="iframe(siis iframen nimi)"

Tämän varmaan tiesitkin, mutta en löytänyt listauksistasi yhtään linkkiä, jossa target olisi määritelty, joten..

HellCome [15.03.2005 17:00:21]

#

Olen tosiaan vain targetoinut tuon "reseptit.html" linkit avautumaan tuossa vasemmassa iframessa (ent. reseptilista). Se targetointi kyllä hoituu, mutta kuinkakohan onnistuisi tuossa liharuoat.php:ssä olevien linkkien targetointi tuonne reseptit.html:n oikeaan iframeen (ent. reseptifreimi)?

Yritin illalla sellaista targetointia, että

lihat.php

print "<a href='resepti.php?id=".$rivit[id];
print "&tyyppi=".$rivit[tyyppi]."' target="reseptit.html/oikea">".$rivit[nimi]."</a>";

Tuo target="reseptit.html/oikea" ei arvatenkaan toiminut. Myöskään pelkkä target="oikea" ei muistini mukaan toiminut (nythän siis ollaan lihat.php:n puolella, eikä siellä reseptit.html:ssä, jossa ne iframet ovat. Menee kinkkiseksi, mutta jos ei targettaus onnistu, niin täytynee antaa periksi ja tehdä jollain toisella konstilla.

Toinen merkillinen tapaus on myös se, että reseptit.html:n 'oikea' iframeen ei saa targetoitua sellaista sivua kuin "resepti.php" joka siis on se varsinainen sivu joka näyttää kyseisen reseptin:

resepti.php

<?php
require "funktiot.php";
$yhteys=AvaaTK();
$id=$_GET['id'];

$sql="SELECT * FROM ruoat WHERE id='$id'";

if (!$kysely = mysql_query($sql, $yhteys))
		{
		die("kysely epäonnistui : " . mysql_error());
		}

while ($rivit = mysql_fetch_array($kysely))
		{
		print "<h3><u>$rivit[nimi]</u></h3>";
		print "<b><u>Ainekset:</u><br /></b><ul><li>$rivit[ainekset]</li></ul>";
		print "<b><u>Valmistus:</u><br /><br /></b>$rivit[tekoohje]<br /><br />";
		print "<b><u>Huom:</u></b><br /><br />$rivit[huom]";
		}

?>

Tässä yritin tehdä normaalin targetin 'oikea' iframeen reseptit.html:ssä ja se onnistuikin muilla sivuilla, mutta jostain syystä tuo resepti.php on iframelle myrkkyä. Vaikka kyseinen $sql ei tietystikään löydä mitään id-numeroa, niin eikö sen silti pitäisi tulostaa ruudulle nuo Ainekset:, Valmistus: ja Huom: kohdat? Jos resepti.php:n sekaan kirjoittaa print-rivin niin se kyllä näkyy, mutta mistä syystä nuo kolme muuta riviä eivät näy?

Merkillistä, sangen merkillistä.

Ai niin... meinasi unohtua:

print "<a href='resepti.php?id=".$rivit[id];
print "&tyyppi=".$rivit[tyyppi]."'target='oikea'>".$rivit[nimi]."</a>

Avaa reseptin kokonaan uuteen ikkunaan. Aivan kuin käyttäisi targettina "new"iä.

Olga [15.03.2005 17:42:51]

#

HellCome kirjoitti:

Aivan kuin käyttäisi targettina "new"iä.

Ainakin ennenvanhaan toi uuteen ikkunaan avaaminen oli target="_blank".

D.J-Dew [15.03.2005 18:03:34]

#

Olga kirjoitti:

HellCome kirjoitti:

Aivan kuin käyttäisi targettina "new"iä.

Ainakin ennenvanhaan toi uuteen ikkunaan avaaminen oli target="_blank".

Niinhän se on vieläkin. Tosin jos targetiksi laittaa "new", sivu avautuu uuteen ikkunaan, jos "new"-nimistä framea ei löydy.

HellCome [15.03.2005 22:29:59]

#

All on the rocks.. eli taidan kokeilla ihan uutta kikkaa kunhan "kerkeän". Kokeilen "oikea" iframen korvaamista tyylitiedostolla ja sen avulla sitten saada reseptin näkymään "oikea" ifrin kohdalla. Ohimennen vain tiedoksi ja tietty sen varalta, että joku keksii jonkun hienon vinkin tai arveluttavan legendan moiseen uhkayritykseen..


Sivun alkuun

Vastaus

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

Tietoa sivustosta