Autor | Zpráva | ||
---|---|---|---|
JJ Profil * |
#1 · Zasláno: 8. 9. 2009, 22:08:16
Zdravím,
mám toto: Na začátku souboru mám: <?php $hodnota = File ("pages/hodnota.txt"); ?> 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 * |
#2 · Zasláno: 9. 9. 2009, 09:04:18
Nic?
|
||
Joker Profil |
#3 · Zasláno: 9. 9. 2009, 09:14:00
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 * |
#4 · Zasláno: 9. 9. 2009, 13:05:45
$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) |
||
JJ Profil * |
#5 · Zasláno: 9. 9. 2009, 13:06:40
|
||
Joker Profil |
#6 · Zasláno: 9. 9. 2009, 13:12:46
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 * |
#7 · Zasláno: 9. 9. 2009, 13:52:08
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 |
#8 · Zasláno: 9. 9. 2009, 13:57:56
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 * |
#9 · Zasláno: 9. 9. 2009, 16:14:39
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"> |
||
malejs Profil * |
#10 · Zasláno: 9. 9. 2009, 16:51:42
řá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 * |
#11 · Zasláno: 9. 9. 2009, 16:53:36
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 * |
#12 · Zasláno: 9. 9. 2009, 17:02:09
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 * |
#13 · Zasláno: 9. 9. 2009, 17:09:14
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 * |
#14 · Zasláno: 10. 9. 2009, 07:35:52
Nějaký jiný nápad?
|
||
malejs Profil * |
#15 · Zasláno: 10. 9. 2009, 08:07:31
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 * |
#16 · Zasláno: 10. 9. 2009, 08:23:24
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 * |
#17 · Zasláno: 10. 9. 2009, 10:47:29
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 * |
#18 · Zasláno: 10. 9. 2009, 10:55:13
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 |
#19 · Zasláno: 10. 9. 2009, 11:03:43
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 * |
#20 · Zasláno: 10. 9. 2009, 11:12:29
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 |
#21 · Zasláno: 10. 9. 2009, 11:29:25
|
||
Chamurappi Profil |
#22 · Zasláno: 10. 9. 2009, 13:41:03
|
||
JJ Profil * |
#23 · Zasláno: 10. 9. 2009, 14:15:52
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 * |
#24 · Zasláno: 12. 9. 2009, 22:11:12
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. |
||
Časová prodleva: 15 let
|
0