« 1 2 3 4 5 6 7 8 »
Autor Zpráva
perwin
Profil
LosFilipos:
Takto to nefunguje už vůbec a vypíše se jenom ten refresh.
LosFilipos
Profil
perwin:
vypíše se ten refresh
Jak se vypíše? To nechápu. Hoď sem odkaz na ukázku...
perwin
Profil
LosFilipos:
Vypíše se jenom ten JS s reloadem, ikdyž je moje id v tabulce activechats, nevypíše se formulář.
Nefunguje to....
LosFilipos
Profil
perwin:
Vypíše se jenom ten JS s reloadem, ikdyž je moje id v tabulce activechats, nevypíše se formulář.
To ovšem znamená, že to funguje, jelikož je jakoby tvoje okno chtau otevřené. Napiš do stránky session_destroy() reloadni to, a pak to odstraň... Uvidíš, že ti bude fungovat...
perwin
Profil
LosFilipos:
Napiš do stránky session_destroy() reloadni to, a pak to odstraň...
Co? Nestačí se jenom odhlásit? Protože se i při tom ničí session.
LosFilipos
Profil
Pokud se ti u odlhašování ničí session kompletně, tak ano... Co takhle to zkusit místo dotazů do diskuse?
perwin
Profil
LosFilipos:
Ano, zkusil jsem to a funguje to... ale:
1) Nefunguje mi to v IE - tam se to nevím proč stejně klonuje, v Chrome ne
2) Když v Chrome reloadnu stránku ručně, tak se mi potom už znovu ten formulář nezobrazí - a vlastně i při přechodu mezi stránkami - v IE se to sice nestane, ale tam je zase problém č. 1
LosFilipos
Profil
perwin:
1) Nefunguje mi to v IE - tam se to nevím proč stejně klonuje, v Chrome ne
Nástroje pro vývojáře v IE 8 -> ladění scriptů -> zjistit chybu

2) Když v Chrome reloadnu stránku ručně, tak se mi potom už znovu ten formulář nezobrazí - a vlastně i při přechodu mezi stránkami - v IE se to sice nestane, ale tam je zase problém č. 1
Tak to budeš muset na stránky přidat podmínku if($_SESSION["chaty"]...) {vypiš okno chatu}, nebo je tu druhé řešení, který vlastně řeší i problém č. 1 -
Vykašlat se na $_SESSION a při každém vypsání formuláře nejdříve odstranit vnitřek divu, do kterého se následně vypisuje formulář... (innerHTML = '') nebo tak něco...
LosFilipos
Profil
perwin:
Na začátek toho javascriptu můžeš dát třeba toto:
var div1 = window.parent.document.getElementById('hlavni');
if(div1) {
div1.innerHTML = '';
} else {
div1 = window.parent.document.createElement('DIV');
div1.id = 'hlavni'
}
což dělá to, že vytvoří nový div id="hlavni", ale jen za předpokladu, že žádný takový div není (tedy poprvé), když takový div existuje, smaže jeho vnitřek...
perwin
Profil
LosFilipos:
Nástroje pro vývojáře v IE 8 -> ladění scriptů -> zjistit chybu
Je jistá chyba v souboru engine.js řádek 85 znak 17 - Byl očekáván objekt

Vykašlat se na $_SESSION a při každém vypsání formuláře nejdříve odstranit vnitřek divu, do kterého se následně vypisuje formulář
Nemáš něco přesnějšího? To mám překopat celý script? - že tam nebude $_SESSION a createElement?
LosFilipos
Profil
perwin:
že tam nebude $_SESSION
Nebude tam session a bude tam toto [#9]...
perwin
Profil
LosFilipos:

var div1 = window.parent.document.getElementById('hlavni');
if(div1) {
div1.innerHTML = 'co mám dát sem?';
} else {
div1 = window.parent.document.createElement('DIV');
div1.id = 'hlavni' - tohle je id jako je <div id="hlavni"> ?
}
LosFilipos
Profil
perwin:
co mám dát sem?
Nic... Chceš přece smazat vnitřek toho divu, aby se ten formulář nekopíroval dál, ne?

tohle je id jako je <div id="hlavni"> ?
Ano...
perwin
Profil
LosFilipos:
Takže mám script
<script type='text/javascript'>
var div1 = window.parent.document.createElement('DIV');
div1.setAttribute('style', 'position: absolute; top: 50px; left: 5px; background-color: red; width: 400px; height: 100px;');
var form1 = window.parent.document.createElement('FORM');  
form1.setAttribute('action', 'javascript:request(\'".$_SESSION['login']."\'); javascript:erase()'); 
form1.setAttribute('method', 'post');
form1.setAttribute('name', 'forml'); 
var textarea1 = window.parent.document.createElement('TEXTAREA'); 
textarea1.setAttribute('name', 'text');
textarea1.setAttribute('cols', '40');
textarea1.setAttribute('rows', '3');
var input1 = window.parent.document.createElement('INPUT'); 
input1.setAttribute('type', 'submit');
input1.setAttribute('value', 'Odeslat příspěvek');
 input1.onclick = function(){ 
    if(document.forms.forml.text.value=='') 
    return false;
   };
var div2 = window.parent.document.createElement('DIV');
div2.setAttribute('id', 'm');
form1.appendChild(textarea1);
form1.appendChild(input1);
div1.appendChild(form1);
div1.appendChild(div2);
window.parent.document.body.appendChild(div1);
</script>

upravit na:
var div1 = window.parent.document.getElementById('hlavni');
if(div1) {
div1.innerHTML = '';
} else {
div1 = window.parent.document.createElement('DIV');
div1.id = 'hlavni';
div1.setAttribute('style', 'position: absolute; top: 50px; left: 5px; background-color: red; width: 400px; height: 100px;');
var form1 = window.parent.document.createElement('FORM');  
form1.setAttribute('action', 'javascript:request(\'".$_SESSION['login']."\'); javascript:erase()'); 
form1.setAttribute('method', 'post');
form1.setAttribute('name', 'forml'); 
var textarea1 = window.parent.document.createElement('TEXTAREA'); 
textarea1.setAttribute('name', 'text');
textarea1.setAttribute('cols', '40');
textarea1.setAttribute('rows', '3');
var input1 = window.parent.document.createElement('INPUT'); 
input1.setAttribute('type', 'submit');
input1.setAttribute('value', 'Odeslat příspěvek');
 input1.onclick = function(){ 
    if(document.forms.forml.text.value=='') 
    return false;
   };
var div2 = window.parent.document.createElement('DIV');
div2.setAttribute('id', 'm');
form1.appendChild(textarea1);
form1.appendChild(input1);
div1.appendChild(form1);
div1.appendChild(div2);
window.parent.document.body.appendChild(div1);
}

?
LosFilipos
Profil
perwin:
Tak to může být i takto, v tom případě...
var div1 = window.parent.document.getElementById('hlavni');
if(!div1) {
div1 = window.parent.document.createElement('DIV');
div1.id = 'hlavni';
div1.setAttribute('style', 'position: absolute; top: 50px; left: 5px; background-color: red; width: 400px; height: 100px;');
var form1 = window.parent.document.createElement('FORM');  
form1.setAttribute('action', 'javascript:request(\'".$_SESSION['login']."\'); javascript:erase()'); 
form1.setAttribute('method', 'post');
form1.setAttribute('name', 'forml'); 
var textarea1 = window.parent.document.createElement('TEXTAREA'); 
textarea1.setAttribute('name', 'text');
textarea1.setAttribute('cols', '40');
textarea1.setAttribute('rows', '3');
var input1 = window.parent.document.createElement('INPUT'); 
input1.setAttribute('type', 'submit');
input1.setAttribute('value', 'Odeslat příspěvek');
 input1.onclick = function(){ 
    if(document.forms.forml.text.value=='') 
    return false;
   };
var div2 = window.parent.document.createElement('DIV');
div2.setAttribute('id', 'm');
form1.appendChild(textarea1);
form1.appendChild(input1);
div1.appendChild(form1);
div1.appendChild(div2);
window.parent.document.body.appendChild(div1);
}
perwin
Profil
LosFilipos:
Když jsem upravil script takto:
<?php
session_start();
require "db.php";
$query = mysql_query("SELECT * FROM `activechats`");
while($result = mysql_fetch_array($query)) {
if($result["id_uzivatele"] == $_SESSION["login"]) { if(!isset( $_SESSION[$result["chaty"]["id_chatu"]])) { echo "

<script type='text/javascript'>
var div1 = window.parent.document.getElementById('hlavni');
if(!div1) {
div1 = window.parent.document.createElement('DIV');
div1.id = 'hlavni';
div1.setAttribute('style', 'position: absolute; top: 50px; left: 5px; background-color: red; width: 400px; height: 100px;');
var form1 = window.parent.document.createElement('FORM');  
form1.setAttribute('action', 'javascript:request(\'".$_SESSION['login']."\'); javascript:erase()'); 
form1.setAttribute('method', 'post');
form1.setAttribute('name', 'forml'); 
var textarea1 = window.parent.document.createElement('TEXTAREA'); 
textarea1.setAttribute('name', 'text');
textarea1.setAttribute('cols', '40');
textarea1.setAttribute('rows', '3');
var input1 = window.parent.document.createElement('INPUT'); 
input1.setAttribute('type', 'submit');
input1.setAttribute('value', 'Odeslat příspěvek');
 input1.onclick = function(){ 
    if(document.forms.forml.text.value=='') 
    return false;
   };
var div2 = window.parent.document.createElement('DIV');
div2.setAttribute('id', 'm');
form1.appendChild(textarea1);
form1.appendChild(input1);
div1.appendChild(form1);
div1.appendChild(div2);
window.parent.document.body.appendChild(div1);
}
</script>

";  $_SESSION[$result["chaty"]["id_chatu"]] = 'true'; } }
elseif($result["id_kamarada"] == $_SESSION["login"]) { if(!isset( $_SESSION[$result["chaty"]["id_chatu"]])) { echo "

<script type='text/javascript'>
var div1 = window.parent.document.getElementById('hlavni');
if(!div1) {
div1 = window.parent.document.createElement('DIV');
div1.id = 'hlavni';
div1.setAttribute('style', 'position: absolute; top: 50px; left: 5px; background-color: red; width: 400px; height: 100px;');
var form1 = window.parent.document.createElement('FORM');  
form1.setAttribute('action', 'javascript:request(\'".$_SESSION['login']."\'); javascript:erase()'); 
form1.setAttribute('method', 'post');
form1.setAttribute('name', 'forml'); 
var textarea1 = window.parent.document.createElement('TEXTAREA'); 
textarea1.setAttribute('name', 'text');
textarea1.setAttribute('cols', '40');
textarea1.setAttribute('rows', '3');
var input1 = window.parent.document.createElement('INPUT'); 
input1.setAttribute('type', 'submit');
input1.setAttribute('value', 'Odeslat příspěvek');
 input1.onclick = function(){ 
    if(document.forms.forml.text.value=='') 
    return false;
   };
var div2 = window.parent.document.createElement('DIV');
div2.setAttribute('id', 'm');
form1.appendChild(textarea1);
form1.appendChild(input1);
div1.appendChild(form1);
div1.appendChild(div2);
window.parent.document.body.appendChild(div1);
}
</script>

";  $_SESSION["chaty"][$result["id_chatu"]] = 'true'; } }
}
 echo '<script type="text/javascript">window.setTimeout(function() {location.reload();},5000);</script>'; 


?>
FUNGUJE TO!!
Ale je tu problém, že v IE si můžu volně přepínat stránky a chat zůstane ve stejným stavu, ale v Chrome to nefunguje - chat se zobrazí jenom při jednom reloadu trychat.php, jakmile přepnu stránku tak chat zmizí a už se neobjeví.
A taky je tam problém, který podle mě souvisí s tím předchozím... v Chrome nějak nefunguje ten relaod, protože když v IE začnu chat do Chromu, v Chromu se nic nezobrazí a stejně tak se to nezobrazí při přechodu ze stránky na jinou, v IE to ale funguje.
LosFilipos
Profil
perwin:
ale přestal fungovat v Chrome
Chrome -> nástroje -> nástroje pro vývojáře -> zjistit chybu...
LosFilipos
Profil
perwin:
Ale nevidím důvod, proč by to nemělo fungovat...
LosFilipos
Profil
perwin:
Vidím... Odstraň $_SESSION["chaty"]... všechny 4...
perwin
Profil
LosFilipos:
Super, tak toto by bylo vyřešeno a díky moc za rady.
Poraď mi ještě prosím jak udělat ty zprávy realtime?
perwin
Profil
LosFilipos:
Soubor run.php:
<?php
session_start();
require('db.php'); 

$nick = $_SESSION["login"];
$text = htmlspecialchars($_POST["text"]);

$data = mysql_query("SELECT id_chatu FROM `activechats`");
$Vysledek = mysql_fetch_array($data);

if($text!="") {
$prevodni_tabulka = Array(
  ':-D'=>'<img src="http://web.cz/smiles/1.gif">',
  ':-P'=>'<img src="http://web.cz/smiles/2.gif">',
  ':-S'=>'<img src="http://web.cz/smiles/3.gif">',
  ':-)'=>'<img src="http://web.cz/smiles/4.gif">',
  ':-C'=>'<img src="http://web.cz/smiles/5.gif">',
  ':-O'=>'<img src="http://web.cz/smiles/6.gif">',
  ':-U'=>'<img src="http://web.cz/smiles/7.gif">',
  ':-W'=>'<img src="http://web.cz/smiles/8.gif">',
  ':-('=>'<img src="http://web.cz/smiles/9.gif">',
  ':-A'=>'<img src="http://web.cz/smiles/10.gif">'
);

   $text = str_replace(array_keys($prevodni_tabulka),
array_values($prevodni_tabulka), $text);
mysql_query("INSERT INTO zpravy (id_autora,id_chatu,text_zpravy,cas_zpravy) VALUES ('$nick', '$Vysledek[id_chatu]', '$text', NOW())") or die (mysql_error());
}


echo '<login style="display:none;">'.$nick.'</login>';
$query = mysql_query("SELECT * FROM `zpravy` WHERE id_chatu = '$Vysledek[id_chatu]' ORDER BY `id_zpravy` DESC");
echo '<h6>Diskuse...</h6>';
while($result = mysql_fetch_array($query)) {
if($result["id_autora"]==$nick) {
echo '<i><b>'.$result["id_autora"].'</b></i>: '.$result["text_zpravy"].'<br />';
} else {
echo '<b>'.$result["id_autora"].'</b>: '.$result["text_zpravy"].'<br />';
}
}
?>


Tam se to vypisuje do realtime ne?
Prosím poraď. Díky
LosFilipos
Profil
perwin:
Realtim se to vypisuje tak, že se ajaxem / javascriptem volá tento skript každou jednu sekundu. Jedná se o funkci reload() v původním engine.js. Pořádně si to prostuduj. Dneska už na to nemám čas, pokračování možná zítra...
perwin
Profil
LosFilipos:
A jak mám volat funkci reload()? Vím, že se dají funkce volat přímo z elementu jako onlick="funkce" nebo onload="funkce", ale ani jedno se nedá použít v tom divu se zprávami - dal bych tam onload, ale to funguje jenom u img a body. Poraď prosím. Díky
LosFilipos
Profil
perwin:
A jak mám volat funkci reload()?
window.setInterval(function() {reload();},1000);
perwin
Profil
LosFilipos:
Nojo ale co mám dát do toho divu aby se to týkalo jenom jeho a né celé stránky? Něco jako id="reload()"?
perwin
Profil
LosFilipos:
Nebo:
document.getElementById('id_divu').setInterval(function() {reload();},1000);

?
LosFilipos
Profil
perwin:
Nic, ta funkce reload nezpůsobí refresh celé stránky (To není location.reload()) Moje funkce reload (ze souboru engine.js ř. 27) způsobí jen to, že se refreshne obsah divu s id="m"... Pořádně si prohlédni zdroják...
Chamurappi
Profil
Chtěl bych důrazně upozornit, že tady není chat. Pokud chcete svoje příspěvky krátce po odeslání doplnit, používejte funkci „Změnit“.

Jestli jsem správně pochopil tohle dlouhé vlákno, tak perwin pokaždé sesmolí nějakou evidentní pitomost (jako teď ve [#26]), kterou by nikdy nemohl napsat, kdyby si nastudoval základy, a LosFilipos mu v ní pak hledá chybu. Fascinující.


Reaguji na perwina:
div1.setAttribute('style', 'position: absolute […]
Možná, že když si to přečteš potřetí, tak to bude mít nějaký účinek…
perwin
Profil
LosFilipos:
Mám skoro stejný (okopírovaný) soubor engine.js, kde je ta funkce reload, a ikdyž mám div s id="m", tak se nereloaduje. Dík
perwin
Profil
Chamurappi:
Chtěl bych jenom podotknout, že
„div1.setAttribute('style', 'position: absolute […]“
mi funguje jak v IE, tak v Netscape prohlížečích.

tak perwin pokaždé sesmolí nějakou evidentní pitomost
Jak mám vědět, že je to 'evidentí pitomost'? Jsem si jistý, že když mě někdo opraví, tu samou chybu už neudělám a nebudu s ní nadále otravovat.
« 1 2 3 4 5 6 7 8 »

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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