Autor Zpráva
JJ
Profil *
Zdravím,
mám toto:
Na začátku souboru mám:
<?php
$hodnota = File ("pages/hodnota.txt");
?>
Kde mám na každém řádku jednu hodnotu a ta se načítá podle toho jaké číslo níže uvedeným kódem zavolám - v tomto případě je to řádek 1 (toto je nepodstatné)

Pomocí následujícího jí vkládám do stránky - hodnota se načte do skrytého formulářového pole, které je v hover menu (kvůli hover efektu potřebuji, aby se daná hodnota načetla spolu se stránkou - proto to skryté formulářové pole - toto je jen na vysvětlenou):
<?php echo '<input type="hidden" value="'.$hodnota[0].'">';?>


Problém mám v tom, že toto:
<?php echo '<input type="hidden" value="'.$hodnota[0].'

se načte a zpracuje správně, ale následující část:
">';?>

se zpracuje špatně a do stránky se mi zobrazí závěr kódu - konkrétně:
">


Netušíte kde mám chybu?
JJ
Profil *
Nic?
Joker
Profil
JJ:
Není v $hodnota[0] náhodou nějaké HTML?
Bezpečnější by bylo použít htmlspecialchars.

A pokud se to používá kvůli hover efektu, proč je to ve skrytém formulářovém poli?
JJ
Profil *
$hodnota[0]

je obyčejná textová hodnota - konkrétně text: A1

Se krytým formulářovým polem to funguje jak má. Pokud použiju:
<?php
$hodnota = File ("pages/hodnota.txt");
?>
<?php echo $hodnota[0];?>

tak se mi do toho hover efektu nenačte nic, nebo to hover efekt vyřadí z činnosti. Na vysvětlenou: potřebuji, aby se mi tam načítaly textové hodnoty, které se průběžně mění a načítají se do více stránek - nechci je otrocky opravovat ve všech. Zároveň to není tak rozsáhlé, aby to muselo chodit na databázi - ne, že bych databáze ovládal :-(

Pro názornost ukázka zde (není to ten konkrétní příklad, který řeším, ale je to stejný princip):
 http://www.sgreality.cz/testovaci/[/pre]   (aktivní jsou domy pravo dole)

Jen vysvětlím - jde o klikací mapu vytvořenou jen za pomoci css (z různých důvodů nechci Flashovou animaci).
Pokud najedu na danou položku - zobrazí se za pomoci hover plocha z textem a ten text potřebuji načítat jak je shora uvedeno.
JJ
Profil *
Oprava - ukázka tady:

http://www.sgreality.cz/testovaci/
Joker
Profil
JJ:
Pro názornost ukázka zde (není to ten konkrétní příklad, který řeším, ale je to stejný princip):
A nebyl by radši ten konkrétní příklad?

Nebo alespoň- jak vypadá sestavený kód stránky?
JJ
Profil *
Stránka je skládaná dynamicky. Ten příklad je úplně stejný, jen je tam přidáno následující a je to dle mého názoru problematická část:

<?php echo 'byt<input type="hidden" value="'.$hodnota[0].'">';?>


Vše funguje jak má - jen přes obrázek se vypíše: ">

Relevantní část stránky - tady je někde zakopaný pes. Pokud tam vložím textovou hodnotu třeba z pole - není problém. Pokud, ale chci načíst $hodnota[0] z externího souboru - ani Ň - buď to vyřadí hover úplně, nebo se v hover nezobrazí žádná data:

<?php
$hodnota = File ("pages/hodnota.txt");
?>

<div align="center">
<ul id="improj4">

<li class="item1">
<a href="#4">
<span class="bubble2">Akce: bla bla <span class="pi33">Patro 1</span><br>
<?php echo 'byt<input type="hidden" value="'.$hodnota[0].'">';?></span>
</a>
</li>

<li class="item2">
<a href="#4">
<span class="bubble3">Akce: bla bla 2 <span class="pi33">Patro 2</span><br>
<?php echo 'byt<input type="hidden" value="'.$hodnota[1].'">';?>
</span>
</a>
</li>

</ul>
</div>


CSS (v externím souboru):

/* image map  */
*{margin:0;padding:0}

ul#improj4{
	margin:0;padding:0;
	background:url(../images/proj4imm.jpg) no-repeat;
	width:770px; /* šířka obrázku */
	height:531px; /* polovina výšky obrázku */
	position:relative;
	z-index:1;
	list-style-type:none;
}
ul#improj4 li a{text-indent:-999em}
#improj4 li .area1,
#improj4 li .area2,
#improj4 li .area3,
#improj4 li .area4,
#improj4 li a{
	text-decoration:none;
	position:absolute; /* do toho nesahat */
	z-index:200;
	background:url(../images/proj4imm.jpg) no-repeat 0 -999em ;
	cursor: pointer;
}

#improj4 li a:hover,
#improj4 li a:hover .area1,
#improj4 li a:hover .area2,
#improj4 li a:hover .area3,
#improj4 li a:hover .area4{
	visibility:visible; /* zajišťuje viditelnost hover */
	background:url(../images/proj4imm.jpg) no-repeat 0 -999em ;

}

/* menu item 1*/
#improj4 li.item1 a{top:310px;width:183px;left:346px;height:42px;} /* border:1px blue solid; pro lepší zformátování*/
#improj4 li.item1 a:hover{background-position:-346px -841px;}

/* menu item 2*/
#improj4 li.item2 a{top:274px;width:183px;left:346px;height:36px;} /* border:1px blue solid; pro lepší zformátování*/
#improj4 li.item2 a:hover{background-position:-346px -805px;}

/* menu item 3*/
#improj4 li.item3 a{top:238px;width:183px;left:346px;height:36px;} /* border:1px blue solid; pro lepší zformátování*/
#improj4 li.item3 a:hover{background-position:-346px -769px;}

/* menu item 4 */
#improj4 li.item4 a{top:202px;width:155px;left:331px; height:12px;}
#improj4 li.item4 .area1{width:175px;left:3px;top:12px; height:12px;}
#improj4 li.item4 .area2{width:192px;left:8px;top:24px; height:12px;}
#improj4 li.item4 a:hover{background-position:-331px -733px;}
#improj4 li.item4 a:hover .area1{background-position:-334px -745px;}
#improj4 li.item4 a:hover .area2{background-position:-339px -757px;}

#improj4 a:hover .bubble{
	display: block;
	text-indent: 0;
	color: #000;
	/*background-color: #ffffff;*/
	background-image:url(../images/proj4bubble.gif);
	font-weight: normal;
	position: absolute;
	/*border: 1px solid silver;*/
	top: -300px;
	left: -250px;
	margin: 0;
	padding: 10px;
	width: 480px;
	height:150px;
	text-align:justify;
}

#improj4 a:hover .bubble2{
	display: block;
	text-indent: 0;
	color: #000;
	/*background-color: #ffffff;*/
	background-image:url(../images/proj4bubble.gif);
	font-weight: normal;
	position: absolute;
	/*border: 1px solid silver;*/
	top: -264px;
	left: -250px;
	margin: 0;
	padding: 10px;
	width: 480px;
	height:150px;
	text-align:justify;
}

#improj4 a:hover .bubble3{
	display: block;
	text-indent: 0;
	color: #000;
	/*background-color: #ffffff;*/
	background-image:url(../images/proj4bubble.gif);
	font-weight: normal;
	position: absolute;
	/*border: 1px solid silver;*/
	top: -228px;
	left: -250px;
	margin: 0;
	padding: 10px;
	width: 480px;
	height:150px;
	text-align:justify;
}

#improj4 a:hover .bubble4{
	display: block;
	text-indent: 0;
	color: #000;
	/*background-color: #ffffff;*/
	background-image:url(../images/proj4bubble.gif);
	font-weight: normal;
	position: absolute;
	/*border: 1px solid silver;*/
	top: -192px;
	left: -235px;
	margin: 0;
	padding: 10px;
	width: 480px;
	height:150px;
	text-align:justify;
}

#improj4 a .bubble:first-line, a .bubble2:first-line, a .bubble3:first-line, a .bubble4:first-line { /* tohle není podporováno v některých prohlížečích */
font-weight:bold;
}


#improj4 a .bubble, .bubble2, .bubble3, .bubble4 {
display:none;
}

.red {
font-weight:bold;
color:red;
}

.green {
font-weight:bold;
color:green;
}
Joker
Profil
JJ:
Stránka je skládaná dynamicky.
No právě.
Já myslel jak vypadá kód výsledné stránky poté, co se provede PHP (čili jak to vypadá ve zobrazení zdrojového kódu v prohlížeči)
Stačí HTML.
JJ
Profil *
Promiň - jsem v práci a nesoustředím se na to...

Tady: http://www.sgreality.cz/testovaci/1.jpg

je vidět stav před hover - je tam na obrázku vidět část kódu: ">

A tady je stav po najetí myší na objekt: http://www.sgreality.cz/testovaci/2.jpg

je tam také vidět část kódu: ">

Jinak vše šlape jak má. Je zajímavé že v IE 8 a Maxthonu to šlape jak má a třeba FF, Opera, Chrome, Netscape, Safari to zobrazí s chybou - tedy je tam vidět část kódu: ">

Tady je HTML:

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


<html>
<head>


<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta http-equiv="content-language" content="cs">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="imagetoolbar" content="no">
<meta http-equiv="Reply-to" content="teseract@seznam.cz">
<meta http-equiv="Robots" name="Robots" content="All">
<meta http-equiv="Cache-Control" name="Cache-Control" content="no-cache, must-revalidate">
<meta http-equiv="Pragma" name="Pragma" content="no-cache">
<meta name="copyright" content="© 2009, teseract@seznam.cz">
<meta name="author" content="Teseract">
<meta name="owner" content="Teseract">

<meta name="security" content="public">
<meta name="robots" content="all,follow">
<meta name="Abstract" content="">
<meta name="description" content="SLÁDEK GROUP, a.s. - Developerské a realitní projekty">
<meta name="keywords" content="Sládek,Sládek a.s.,Sládek group,Sládek group a.s.,SLÁDEK GROUP a.s.,developerské projekty, reality,realitní činnost,pronájem prostor,výstavba bytů,Roklinka,Obytný soubor Roklinka,byty Benešov,prodej bytů Benešov,prodej bytů Brandýs nad Labem,byty Brandýs nad Labem,Obytný soubor U Vodojemu,Obytný soubor U Vodojemu Brandýs nad Labem,Obytný soubor U Vorojemu II.,Obytný soubor U Vodojemu II. Brandýs nad Labem,Obytný soubor U Vodojemu III.,Obytný soubor U Vodojemu Brandýs nad Labem,sgreality,sgreality.cz,www.sgreality.cz,http://www.sgreality.cz,sladekgroup, sladekgroup.cz,www.sladekgroup.cz,http://www.sladekgroup.cz,sladek-as.cz,www.sladek-as.cz,http://www.sladek-as.cz" lang="cs">
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" type="text/css" href="css/layout.css">
<link rel="stylesheet" type="text/css" href="css/styly.css">
<link rel="stylesheet" type="text/css" href="css/allmenu.css">
<link rel="stylesheet" type="text/css" href="css/lightbox.css" media="screen">
<link rel="stylesheet" type="text/css" href="css/image_maps.css">

<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="css/ie6menu.css">
<![endif]-->

<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>

<script type="text/javascript" src="js/lightbox.js"></script>

<title>SLÁDEK GROUP, a.s. - Realitní a developerské projekty</title>


</head>
<body>
<div id="hlavni">
<div id="stranka_obal">


<div id="hlavicka"> <!-- mainbar -->


<div id="menupi">
<table class="pi1" width="1000" cellpadding="0" cellspacing="0">
<tr>

<td width="200">
<ul>
<li><a class="levy" href="?page=article0"></a>
</li>
</ul>
</td>
<td width="200">
<ul>

<li><a class="middle" href="?page=article_proj">Developerské projekty</a>
<ul>
<li><a class="sub1" href="?page=article_proj">Probíhající</a>
<ul>
<li><a class="subpj" href="?page=article_proj1_1">Bytové domy "U Vodojemu II." Brandýs nad Labem</a></li>
<li><a class="subpj" href="?page=article_proj2_1">Bytové domy "U Vodojemu III." Brandýs nad Labem</a></li>
<li><a class="subpj" href="?page=article_proj3_1">Obytný soubor Roklinka v Benešově u Prahy</a></li>

<li><a class="subpj" href="?page=article_proj4_1">Bytový dům Votice</a></li>
</ul>
</li>
<li><a class="subpj" href="?page=article_proj_bud">Připravované</a></li>
<li><a class="subpj" href="?page=article_proj_dok">Dokončené</a></li>
</ul>
</li>
</ul>

</td>
<td width="200">
<ul>
<li><a class="middle" href="?page=article_real">Realitní činnost</a>
<ul>
<li><a class="subpj" href="?page=article_real1">Pronájem prostor Integrovaný dům, Tyršova, Benešov</a></li>
<li><a class="subpj" href="?page=article_real2">Pronájem kancelářských prostor v Administrativní budově SLÁDEK GROUP, a.s., Benešov</a></li>
</ul>

</li>
</ul>
</td>
<td width="200">
<ul>
<li><a class="middle" href="?page=article5">Kontakt</a></li>
</ul>
</td>
<td width="200">
<ul>

<li><a class="pravy" href="http://www.sladekgroup.cz" target="_blank">O společnosti</a></li>
</ul>
</td>

</tr>
</table>
</div>


</div> <!-- mainbar konec -->




<div id="obsah_text">

<div id="text"> <!-- těla stránek -->


<table width="100%" border="0">
<tr><td align="left" width="776" valign="top">

<!-- obsah stránky -->

<h1>
Bytový dům Votice<br>&nbsp;<br></h1>


<h2>
Vyberte patro</h2>


<div align="center">
<ul id="improj4">

<li class="item1">
<a href="#2">
<span class="bubble">Bytový dům Votice: <span class="pi33">Patro 1</span><br>
</span>
</a>
</li>


<li class="item2">
<a href="#4">
<span class="bubble2">Bytový dům Votice: <span class="pi33">Patro 2</span><br>

byt<input type="hidden" value="<a href="?page=article_proj4_a1" class="pi33">A1</a><!-- A1 -->
"></span>
</a>
</li>

<li class="item3">
<a href="#4">
<span class="bubble3">Bytový dům Votice: <span class="pi33">Patro 3</span><br>
</span>
</a>
</li>

<li class="item4">
<a href="#4">
<span class="bubble4">Bytový dům Votice: <span class="pi33">Patro 4</span><br>
Nějaký text, nějaký text, nějaký text...</span>
<span class="area1"></span>
<span class="area2"></span>
</a>
</li>

</ul>
</div>





</td>
<td align="right" valign="top">


<table cellpadding="0" cellspacing="0">
<tr>
<td class="pi7" width="200" height="25">Menu projektu</td>
</tr>

<tr>
<td class="pi8" align="left">
<div id="menupi2">
<ul>

<li><a href="?page=article_proj4_1" class="top">O projektu</a></li>

<li><a href="?page=article_proj4_2">Lokalita</a></li>

<li><a class="active" href="?page=article_proj4_3">Vyberte si byt</a></li>

<li><a href="?page=article_proj4_4">Ceník</a></li>

<li><a href="?page=article_proj4_5">Financování</a></li>

<li><a href="?page=article_proj4_6">Standardní provedení</a></li>

<li><a href="?page=article_proj4_7">Vizualizace</a></li>

<li><a href="?page=article_proj4_8">Fotografie ze stavby</a></li>

<li><a href="?page=article_proj4_9">Docházkové vzdálenosti</a></li>

<li><a href="?page=article_proj4_10">Vzory smluv a dokumenty</a></li>

<li><a href="?page=article_proj4_11">Klientské změny</a></li>

</ul>

</div
malejs
Profil *
řádek 150.
"></span>


čili v příspěvku #7 je chyba zde:
<?php echo 'byt<input type="hidden" value="'.$hodnota[0].'">';?></span>


Zkus to zapsat...
<?php echo "byt<input type=\"hidden\" value=\"".$hodnota[0]."">";?></span>


copak to udělá...
malejs
Profil *
oprava:
<?php echo "byt<input type=\"hidden\" value=\"".$hodnota[0]."\">";?></span>


Nehledě na to, že máš uzavřený tag </span>, kzerý ovšem předtím ikde neotvíráš...
JJ
Profil *
Tenhle zápis mě také napadl a bohužel je výsledek stejný. Jinak ten <span> otevírám o řádek výš - možná je to chyba, nicméně validátorem to prošlo...
JJ
Profil *
Jenom dodám, že uvedené zápisy fungují, pokud chci danou věc vypsat přímo do stránky, ale při pokusu vypsat to do té hover "bubliny" to chybuje.
JJ
Profil *
Nějaký jiný nápad?
malejs
Profil *
Teď jsem to zkoušel a očividně dělá brikule hypertext odkaz ve value v tom inputu. Když jsem vyhodil odkaz a zapsal to takto (je to html zápis samo...):
byt<input type="hidden" value="A1">


tak se to zobrazilo správně, tedy bez
">


Otázkou tedy je, zda ve value může být vůbec hypertextový odkaz...
malejs
Profil *
Ještě jsem vyzkoušel, zda nepomůže zápis
byt<input type='hidden' value='<a href="?page=article_proj4_a1">A1</a>'>

a to funguje a nevypíše to
">
JJ
Profil *
Ve value může být hypertextový odkaz - soudě podle toho, že to projde validátorem...

Prosté vložení textu není problém. Pokud bych to tam chtěl otrocky vkládat ručně tak to udělám jinak. Já potřebuji, aby se data tahala z jednoho *.txt souboru, který by fungoval jako databáze. Důvod je, že ta data se načítají do X stránek a mění se i třeba každý den a není reálné je ručně opravovat v každé stránce. Proto se snažím využít tohoto: http://interval.cz/clanky/php-manipulace-se-soubory/

Při běžném vložení do stránky to šlape bezchybně. Při vložení do té hover "bubliny" to zlobí...
JJ
Profil *
Pokud to zapíšu následujícím způsobem, tak se tam
">

nevypíše, ale vyřadí to hover u dané položky z provozu.

<li class="item1">
<a href="#2">
<span class="bubble">Akce: <span class="pi33">Patro 1</span><br>
<?php
$hodnota = File ("pages/hodnota.txt");
echo "$hodnota[0]<br>";
?>
</span>
</a>
</li>


Přitom pokud použiju stejnou věc pro vložení do stránky (bez hover) tak to šlape:
<?php
$hodnota = File ("pages/hodnota.txt");
echo "$hodnota[0]<br>";
?>
Joker
Profil
malejs:
Teď jsem to zkoušel a očividně dělá brikule hypertext odkaz ve value v tom inputu.
...přesně podezření, které jsem měl hned na začátku- Joker: „Není v $hodnota[0] náhodou nějaké HTML?

JJ:
Ve value může být hypertextový odkaz - soudě podle toho, že to projde validátorem...
Nemůže. Za prvé v hodnotě value nemohou být uvozovky, protože to tím pádem ukončí ten atribut value. Za druhé tam nemůže být ani HTML kód.
Kterým validátorem to projde?
Mně teda na znaku "<" uvnitř value zařve W3C validátor "literal is missing closing delimiter" a Chamurappiho český "literálu chybí ukončovací oddělovač (uvozovka)."
JJ
Profil *
Projde to jak oficiálním validátorem, tak českým - běžně tuto konstrukci používám - netvrdím, že je to správně, ale předpoklad byl, že by mi když tak validátor vynadal, že to dělám špatně. Tuto konstrukci jsem našel kdesi na webu(byl to nějaký návod na posbírání dat z formuláře). Nicméně na tom skrytém formulářovém poli netrvám. Průšvih je, že bez něj to tu hodnotu prostě nenačte. Napadla mě konstrukce, kdy se to vypsalo do skrytého prvku a z toho se to pak posbíralo jako text a z toho se to pak překlopilo tam kam potřebuji. A zase - při výpisu přímo na stránku to šlape - při výpisu do té hover bubliny jí to vyřadí z provozu...
Joker
Profil
JJ:
Projde to jak oficiálním validátorem, tak českým
Neprojde (tentýž zdroják s prázdnou value projde, ukázka).

Nicméně na tom skrytém formulářovém poli netrvám.
Podle mě by taky byly lepší způsoby- například si rovnou vygenerovat skryté <div>y a potom je jenom zobrazovat.
Chamurappi
Profil
Reaguji na Jokera:
Neprojde (tentýž zdroják s prázdnou value projde, ukázka).
Problém je v uvozovkách, ne v menšítku uvnitř value. Pokud „"“ zapíšeš jako „&quot;“ nebo obalíš hodnotu apostrofy (jako je v příspěvku [#16]), bude zeleno.
JJ
Profil *
Dostali jsme se trošku někam jinam...

Fakticky mi jde o to, proč toto:
<?php
$hodnota = File ("pages/hodnota.txt");
echo "$hodnota[0]<br>";
?>

vypíše v pohodě do stránky to co najde na prvním řádku souboru hodnota.txt, ale do "bubliny", která se zobrazuje jako hover, ani omylem. Toto se přece vygeneruje na serveru a pošle prohlížeči - tedy by server měl odesílat to co najde na prvním řádku souboru hodnota.txt. V tomto případě text: A1. A mělo by to tedy být v prohlížeči načtené a jenom se to při hover zobrazí. Bohužel to tak není a navíc to vyřadí hover efekt.
Pokud tam text A1 napíšu ručně - ne pomocí PHP, tak se to v tom hoveru zobrazí.
JJ
Profil *
Vyřešeno:

Jsem nepozornej idiot
- neuvědomil jsem si, že v tom externím souboru mám odkaz Snažil jsem se rozchodit toto:
<a href=...>bla bla<a href=...>A1</a></a>


Už vše šlape jak má. Díky všem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: