« 1 2 3 4 5 6 7 8 »
Autor Zpráva
LosFilipos
Profil
perwin:
Mno podle toho, co jsem četl v php manuálu asi nebude, neboť Header refresh není defaultní součátí php... A pro ten předchozí příklad - když porovnáváš, zda se rovná $result["id_kamarada"] a $_SESSION["login"] tak mezi nimi musí být == (dvě rovnáse)
perwin
Profil
LosFilipos:
I když tam dám třeba....
<? else { echo '<meta http-equiv="refresh" content="5; url=trychat.php">'; } ?>
nebo
<? elseif($result["id_kamarada"] != $_SESSION["login"] or $result["id_uzivatele"] != $_SESSION["login"] ) { echo '<meta http-equiv="refresh" content="5; url=trychat.php">'; } ?>

tak to nefunguje - když není to $_SESSION["login"] totožné s id_kamarada nebo id_uzivatele tak se stejně nic nevypíše.
A má to být
<?
elseif { ... } // nebo
else if { ... }
?>
?
Prosím poraď. Dík
LosFilipos
Profil
perwin:
Tak uprav query takto:
<?php
$query = mysql_query("SELECT * FROM `activechats` WHERE `id_kamarada` = '".$_SESSION["login"]."' ")or die(mysql_error());
if($result = mysql_fetch_array($query)) {

} else {
echo '<script type="text/javascript">window.setTimeout(function() {location.reload();},5000);</script>';
}
?>

To ti bohatě stačí, protože, svoje id hledat nemusíš, neboť už otevřené okno chatu máš...
perwin
Profil
LosFilipos:
V tom případě by byl celý kód takto:
<?php
session_start();
require "db.php";
$query = mysql_query("SELECT * FROM `activechats` WHERE `id_kamarada` = '".$_SESSION["login"]."' ")or die(mysql_error());
if($result = mysql_fetch_array($query)) {
 echo "

<script type='text/javascript'>
var div1 = window.parent.document.createElement('DIV');
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', '30');
textarea1.setAttribute('rows', '3');
var input1 = window.parent.document.createElement('INPUT'); 
input1.setAttribute('type', 'submit');
input1.setAttribute('value', 'Odeslat příspěvek');
input1.setAttribute('onclick', \"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>

"; }  

else { echo '<script type="text/javascript">window.setTimeout(function() {location.reload();},5000);</script>'; }


?>
?
LosFilipos
Profil
perwin:
No a funguje to?
perwin
Profil
LosFilipos:
Ne:
1) Musí tam být i otevření nového okna pro mě, protože nikde jinde to napsané není
2) Tím jsme vůbec nevyřešili to opakované refresh, jen jsme přidali problém č.1
perwin
Profil
LosFilipos:
Vyřešil jsem to takto:
<?php
session_start();
require "db.php";
$query = mysql_query("SELECT * FROM `activechats`");
if($result = mysql_fetch_array($query)) {
if($result["id_uzivatele"] == $_SESSION["login"]) { echo "

<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.setAttribute('onclick', \"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>

"; }
elseif($result["id_kamarada"] == $_SESSION["login"]) { echo "

<script type='text/javascript'>
var div1 = window.parent.document.createElement('DIV');
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', '30');
textarea1.setAttribute('rows', '3');
var input1 = window.parent.document.createElement('INPUT'); 
input1.setAttribute('type', 'submit');
input1.setAttribute('value', 'Odeslat příspěvek');
input1.setAttribute('onclick', \"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>

"; }  

}
else { echo '<script type="text/javascript">window.setTimeout(function() {location.reload();},5000);</script>'; } 

?>

- toto funguje!
Problém vyřešen!
LosFilipos
Profil
perwin:
1) Musí tam být i otevření nového okna pro mě, protože nikde jinde to napsané není
Tak snad si otevřeš okno s chatem, když klinkeš na jméno toho kamaráda, se kterým chceš chatovat, ne?

2) Tím jsme vůbec nevyřešili to opakované refresh, jen jsme přidali problém č.1
No to právě že ne. V případě, že se najde v tabulce moje id, tak už to refreshovat nebude...

- jenom malá chybka že se to nechce nahodit v IE.
To je problém, no... Zkus si pustit v IE ladění skriptů, jestli to najde nějakou chybu.
perwin
Profil
LosFilipos:
Promiň, chyba ohledně IE v předchozím příspěvku byla překlep v kódu. Už jsem to opravil, a funguje to.... bohužel vznikl nový problém... ten script funguje jenom pro jedno chatové okno,... když budu chtít vyvolat ještě jedno, to iframe už bude k ničemu, protože už se to nebude refreshovat.
LosFilipos
Profil
Tak si tam udělej podmínku se $_SESSION. Procházej tabulku activechats, když narazíš na svoje id, vypiš / zobraz okno chatu a id_chatu ulož do session ->
$_SESSION[$result["id_chatu"]]=true;
Podmínka bude taková, že v případě, že $_SESSION s daným id chatu již existuje, refreshni stránku znova...
perwin
Profil
LosFilipos:
A je tam další problém, vlastně to tu už zmiňoval Chamurappi.... jak je:
input1.setAttribute('onclick', \"if(document.forms.forml.text.value==''){return false;}\");
- tak to nefunguje, ale nevím, jak to jinak napsat.. Posím poraď, díky
xmark
Profil
Nechtěli byste se s tím bastlením odebrat někam jinam?
LosFilipos
Profil
perwin:
Netuším, tak moc velký kamarád s javascriptem zase nejsem. Zkus google, nebo pročíst diskusi...
perwin
Profil
LosFilipos:
Něco jako:
$query = mysql_query("SELECT * FROM `activechats`");
while($result = mysql_fetch_array($query)) {
if($result["id_uzivatele"] == $_SESSION["login"]) { $_SESSION[$result["id_chatu"]]=true;
echo "
<script type='text/javascript'>
var div1 = window.parent.document.createElement('DIV');
....
</script>
";
}
}

?
LosFilipos
Profil
perwin:
Třeba, to je jedno, jak si to uděláš, když to bude fungovat...

Jo a podívej se na toto vlákno
perwin
Profil
LosFilipos:
Takže přes innerHTML?
LosFilipos
Profil
perwin:
Takže přes innerHTML?
Co přes innerHTML?
perwin
Profil
LosFilipos:
Přes innerHTML tam vložit to <input onclick="...">
Ale něco jsem možná našel:
   input1.onclick = function(){ 
    if(document.forms.forml.text.value=='') 
    return false;
   };
Když jsem tam dal toto, tak se nic nezměnilo... zřejmě bude ta chyba při odesílání v IE jinde...
perwin
Profil
LosFilipos:
Nestačí jenom, když to $_SESSION[$result["id_chatu"]]=true; přidám k původnímu kódu? Jak je třeba to:
<? ...
elseif($result["id_kamarada"] == $_SESSION["login"]) { $_SESSION[$result["id_chatu"]]=true; echo "...
... "; ?>
?
Díky
Chamurappi
Profil
Reaguji na perwina:
něco jsem možná našel
Už je mi jasné, proč má tohle vlákno pět stránek, když odpovědi nacházíš s jednostránkovým zpožděním.
LosFilipos
Profil
perwin:
Přes innerHTML tam vložit to <input onclick="...">
Tak to nejde. Přes innerHTML se dá vkládat jen text, ne html tagy...

Nestačí jenom, když to $_SESSION[$result["id_chatu"]]=true; přidám k původnímu kódu? Jak je třeba to:
Musíš tam mí někde podmínku, že pokud už $_SESSION s tím daným id chatu je, tak že nemá vypisovat onko chatu, ale že má reloadovat stránku...
perwin
Profil
LosFilipos:
Jako
<?
if(unset($_SESSION["nejaky_id_chatu"])) { echo '<script type="text/javascript">window.setTimeout(function() {location.reload();},5000);</script>'; }
 else { $_SESSION[$result["id_chatu"]]=true;
  echo "
<script type='text/javascript'>
var div1 = window.parent.document.createElement('DIV');
....
</script>
"; }
?>
?
LosFilipos
Profil
perwin:
Zamysli se nad tím, jak to má fungovat...

Za 1.) Procházíš tabulku

2.) Najdeš shodu se $_SESSION["login"]

3.) Vypíšeš okno chatu

4.) Id chatu uložíš do $_SESSION

5.) Reloadneš stránku

a zase odznova...
1.) Procházíš tabulku

2.) Najdeš shodu se $_SESSION["login"]
Ale jelikož existuje $_SESSION s daným id_chatu formulář už nevypíšeš...

3.) Reloadneš stránku

a takto to půje pořád dokola...
perwin
Profil
LosFilipos:
Takže ten script co jsem vyrobil je blbost?
LosFilipos
Profil
perwin:
Takže ten script co jsem vyrobil je blbost?
Ne uplně... Stačí tam jen přidat to s tím session a ten reload vytáhnout z podmínky... Tzn.:
$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;
 } // konec podmínky se session
} // konec podmínky s id_uzivatele
} // konec while
echo '<script>... reload</script>
perwin
Profil
LosFilipos:
Takže takto to bude vypadat celé:
<?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"]) { $_SESSION[$result["id_chatu"]]=true; 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>'; 

?>
?
LosFilipos
Profil
perwin:
Ne, musí tam být while($result = mysql_fetch_array($query)) a reloadovací skript nemá být v žádné podmínce ani cyklu...
perwin
Profil
LosFilipos:
Takže tak, jak jsem to teďka pozměnil?
Nojo ale když tam nedám tu podmínku if a else, tak se mi to zase pořád refreshuje.
LosFilipos
Profil
perwin:
if(!isset($_SESSION[$result["id_chatu"]])) musí být i v druhém případě u $result["id_kamarada"]...
perwin
Profil
LosFilipos:
Ale už vím, proč mi nešlo odesílat ten formulář z IE... to bylo kvůli tomu, že tam bylo místo while tamto if.
Jenže k while nelze použít else, takže se mi to zase neustále refreshuje.
« 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