« 1 2 3 4 5 6 7 8 »
Autor Zpráva
perwin
Profil
LosFilipos:
Takže nemůžu dát to echo "refresh"; do podmínky if?
LosFilipos
Profil
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
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
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
LosFilipos:
Tak v tom případě to nefunguje.
LosFilipos
Profil
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
perwin:
Zkus vypsat v tom iframu
<?php
print_r($_SESSION);
?>


(bez reloadování) a napiš, co to vypíše...
perwin
Profil
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
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 *
až to budete mít vyřešený tak sem dejte kód.. :))
perwin
Profil
LosFilipos:
Bez dalších session netýkajících se chatu to vypíše toto:
Array
(
    [chaty] => Array
        (
            [40] => 1
        )
 
    [40] => 1
)
perwin
Profil
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
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
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
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
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
Existuje v tabulce activechats sloupec id_chatu?
perwin
Profil
LosFilipos:
Ano existuje
LosFilipos
Profil
Tak zkus napsat $_SESSION[$result["id_chatu"]] = 'ano'; (u obou případů)
perwin
Profil
LosFilipos:
Je $_SESSION[$result["id_chatu"]] totéž co $_SESSION["id_chatu"] = $result["id_chatu"] ?
perwin
Profil
LosFilipos:
Mám nápad:
Co rozdělit vypsání okna chatu a refreshe do 2 scriptů?
LosFilipos
Profil
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
perwin:
Co rozdělit vypsání okna chatu a refreshe do 2 scriptů?
A jak si tím pomůžeš?
perwin
Profil
LosFilipos:
Vlastně nijak... spletl jsem se..
A víš prosím jak to opravit? Dík
LosFilipos
Profil
perwin:
A víš prosím jak to opravit?
Tak, že tam bude toto přesně:
<?php
$_SESSION[$result["id_chatu"]] = 'true';
?>
Tím se vytvoří $_SESSION, která se bude jmenovat stejně jako ten chat, pro který si už jednou vypsal okno a tudíž se to okno přestane vypisovat...
perwin
Profil
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
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
LosFilipos:
No, problém je někde jinde... ale kde??
perwin
Profil
LosFilipos:
Akorát nevím, co to je to:
[chaty] => Array
        (
            [40] => 1
        )

?
LosFilipos
Profil
Tak zkus přepsat všude $_SESSION[$result["id_chatu"]] na $_SESSION["chaty"][$result["id_chatu"]]... Třeba to pomůže...
« 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:

0