Autor | Zpráva | ||
---|---|---|---|
perwin Profil |
#1 · Zasláno: 12. 12. 2010, 16:35:19
LosFilipos:
Takže nemůžu dát to echo "refresh"; do podmínky if? |
||
LosFilipos Profil |
#2 · Zasláno: 12. 12. 2010, 16:44:23
perwin:
Však ono se to má neustále refreshovat, přeci... Každých 5 sekund se zjišťuje, zda nepřibyl nový chat... není potřeba žádná podmínka if... |
||
perwin Profil |
#3 · Zasláno: 12. 12. 2010, 16:58:08
LosFilipos:
Nojo ale on se refreshuje i každých 5 sekund i ten formulář a klonuje se na sebe... to by nebyl ten hlavní problém, ale problém je že nelze odesílat zprávu z jiného formuláře než je ten úplně první. |
||
LosFilipos Profil |
#4 · Zasláno: 12. 12. 2010, 17:01:07
perwin:
„i ten formulář a klonuje se na sebe“ Proto tam je podmínka se $_SESSION[id_chatu], která má zajistit, aby se ten formulář nevypisoval, přeci... |
||
perwin Profil |
#5 · Zasláno: 12. 12. 2010, 17:01:45
LosFilipos:
Tak v tom případě to nefunguje. |
||
LosFilipos Profil |
#6 · Zasláno: 12. 12. 2010, 17:06:15
pokud tam máš toto, nevidím důvod, proč by to nemělo fungovat...
<?php session_start(); $query... while($result=mysql_fetch_array($query)) { if($result["id_kamarada"]==$_SESSION["login"]) { if(!isset($_SESSION[$result["id_chatu"]])) { echo 'vypsání formuláře'; $_SESSION[$result["id_chatu"]]=true; } } } ... refresh ?> |
||
LosFilipos Profil |
#7 · Zasláno: 12. 12. 2010, 17:07:41 · Upravil/a: LosFilipos
perwin:
Zkus vypsat v tom iframu <?php print_r($_SESSION); ?> (bez reloadování) a napiš, co to vypíše... |
||
perwin Profil |
#8 · Zasláno: 12. 12. 2010, 17:08:08 · Upravil/a: perwin
LosFilipos:
Nelze napsat místo <? if($result["id_uzivatele"] == $_SESSION["login"]) { if(!isset($_SESSION[$result["id_chatu"]])) { ... } } // toto if($result["id_uzivatele"] == $_SESSION["login"] or !isset($_SESSION[$result["id_chatu"]])) { ... } ?> |
||
LosFilipos Profil |
#9 · Zasláno: 12. 12. 2010, 17:11:26 · Upravil/a: LosFilipos
perwin:
Nejde, protože v druhém případě se formulář vypíše vždy, když se $result["id_uzivatele"] rovná $_SESSION["login"], nezávisle na tom, zda je $_SESSION... Můžeš tam napsat místo OR -> AND (neboli &&) |
||
bubinonobobo Profil * |
#10 · Zasláno: 12. 12. 2010, 17:34:14
až to budete mít vyřešený tak sem dejte kód.. :))
|
||
perwin Profil |
#11 · Zasláno: 12. 12. 2010, 17:35:36
LosFilipos:
Bez dalších session netýkajících se chatu to vypíše toto: Array ( [chaty] => Array ( [40] => 1 ) [40] => 1 ) |
||
perwin Profil |
#12 · Zasláno: 12. 12. 2010, 17:38:17
LosFilipos:
Script nyní vypadá 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["id_chatu"]])) { echo " <script type='text/javascript'> var div1 = window.parent.document.createElement('DIV'); ... </script> "; $_SESSION[$result["id_chatu"]]=true; } } elseif($result["id_kamarada"] == $_SESSION["login"]) { if(!isset($_SESSION[$result["id_chatu"]])) { echo " <script type='text/javascript'> var div1 = window.parent.document.createElement('DIV'); ... </script> "; } } } // echo '<script type="text/javascript">window.setTimeout(function() {location.reload();},5000);</script>'; print_r($_SESSION); ?> bubinonobobo: Dobře dám sem potom ten hotovej funkční kód. |
||
LosFilipos Profil |
#13 · Zasláno: 12. 12. 2010, 17:40:46 · Upravil/a: LosFilipos
perwin:
<?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["id_chatu"]])) { echo " <script type='text/javascript'> var div1 = window.parent.document.createElement('DIV'); ... </script> "; $_SESSION[$result["id_chatu"]]=true; } } elseif($result["id_kamarada"] == $_SESSION["login"]) { if(!isset($_SESSION[$result["id_chatu"]])) { echo " <script type='text/javascript'> var div1 = window.parent.document.createElement('DIV'); ... </script> "; $_SESSION[$result["id_chatu"]]=true; // tohle tam musí být taky, jinak to nikdy nebude fungovat!!! } } } echo '<script type="text/javascript">window.setTimeout(function() {location.reload();},5000);</script>'; ?> |
||
perwin Profil |
#14 · Zasláno: 12. 12. 2010, 17:45:08 · Upravil/a: perwin
LosFilipos:
Stále se to reloaduje.... podle mě by to echo s tím reloadem mělo být v podmínce else k tomu $_SESSION["id_chatu"] |
||
LosFilipos Profil |
#15 · Zasláno: 12. 12. 2010, 17:47:52
perwin:
„Stále se to reloaduje“ Což je přeci správně. Skript se má volat každých pět vteřin... Jinak bys nezjistil, že se přidal nový chat... „podle mě by to echo s tím reloadem mělo být v podmínce k tomu $_SESSION["id_chatu"]“ To je blbost, protože by stránka reloadovala ještě než by se došlo na konec while, a tudíž bys u prvního reloadu ztratil veškerá ostatní data a ostatní chaty by se nevypsaly... |
||
perwin Profil |
#16 · Zasláno: 12. 12. 2010, 17:49:34 · Upravil/a: perwin
LosFilipos:
Tím 'stále se to reloaduje' jsem myslel , že se to stále klonuje... Jak to mám opravit? Díky |
||
LosFilipos Profil |
#17 · Zasláno: 12. 12. 2010, 17:55:19
Existuje v tabulce activechats sloupec id_chatu?
|
||
perwin Profil |
#18 · Zasláno: 12. 12. 2010, 18:13:52
LosFilipos:
Ano existuje |
||
LosFilipos Profil |
#19 · Zasláno: 12. 12. 2010, 18:19:20
Tak zkus napsat $_SESSION[$result["id_chatu"]] = 'ano'; (u obou případů)
|
||
perwin Profil |
#20 · Zasláno: 12. 12. 2010, 18:19:55 · Upravil/a: perwin
LosFilipos:
Je $_SESSION[$result["id_chatu"]] totéž co $_SESSION["id_chatu"] = $result["id_chatu"] ? |
||
perwin Profil |
#21 · Zasláno: 12. 12. 2010, 18:22:44
LosFilipos:
Mám nápad: Co rozdělit vypsání okna chatu a refreshe do 2 scriptů? |
||
LosFilipos Profil |
#22 · Zasláno: 12. 12. 2010, 18:27:05 · Upravil/a: LosFilipos
perwin:
Ne není, to je velký rozdíl. V případě $_SESSION[$result["id_chatu"]] vznikne třeba $_SESSION, která se jmenuje např. "40" a hodnota je true, kdežto u $_SESSION["id_chatu"] se ta session jmenuje id_chatu a její hodnota je "40". Pro tvůj případ je ale potřeba, aby vznikla session, která se bude jmenovat číselně ($_SESSION["40"]) tedy stejně jako ten kontrétní chat... Kapiš? |
||
LosFilipos Profil |
#23 · Zasláno: 12. 12. 2010, 18:27:41
perwin:
„Co rozdělit vypsání okna chatu a refreshe do 2 scriptů?“ A jak si tím pomůžeš? |
||
perwin Profil |
#24 · Zasláno: 12. 12. 2010, 18:31:26
LosFilipos:
Vlastně nijak... spletl jsem se.. A víš prosím jak to opravit? Dík |
||
LosFilipos Profil |
#25 · Zasláno: 12. 12. 2010, 18:34:40
perwin:
„A víš prosím jak to opravit?“ Tak, že tam bude toto přesně: <?php $_SESSION[$result["id_chatu"]] = 'true'; ?> |
||
perwin Profil |
#26 · Zasláno: 12. 12. 2010, 18:47:42 · Upravil/a: perwin
LosFilipos:
Koukni se na [#13] - tam jsi sám napsal, jak ten můj kód vypadá. Co tam mám upravit? A vždyť ta $_SESSION existuje: [chaty] => Array ( [40] => 1 ) - je to chat s číslem 40 |
||
LosFilipos Profil |
#27 · Zasláno: 12. 12. 2010, 18:51:29
perwin:
Nevidím důvod, proč by to, co je u #13 nemělo fungovat. Pokud to máš taky tak, problém bude někde jinde... |
||
perwin Profil |
#28 · Zasláno: 12. 12. 2010, 18:58:56
LosFilipos:
No, problém je někde jinde... ale kde?? |
||
perwin Profil |
#29 · Zasláno: 12. 12. 2010, 19:04:09
LosFilipos:
Akorát nevím, co to je to: [chaty] => Array ( [40] => 1 ) ? |
||
LosFilipos Profil |
#30 · Zasláno: 12. 12. 2010, 19:09:37
Tak zkus přepsat všude $_SESSION[$result["id_chatu"]] na $_SESSION["chaty"][$result["id_chatu"]]... Třeba to pomůže...
|
||
Téma pokračuje na další straně.
|
0