Autor | Zpráva | ||
---|---|---|---|
LosFilipos Profil |
#1 · Zasláno: 12. 12. 2010, 12:37:00 · Upravil/a: LosFilipos
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 |
#2 · Zasláno: 12. 12. 2010, 12:46:50 · Upravil/a: perwin
LosFilipos:
I když tam dám třeba.... <? else { echo '<meta http-equiv="refresh" content="5; url=trychat.php">'; } ?> <? 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 |
#3 · Zasláno: 12. 12. 2010, 12:57:17
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 |
#4 · Zasláno: 12. 12. 2010, 13:04:50 · Upravil/a: perwin
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 |
#5 · Zasláno: 12. 12. 2010, 13:07:56
perwin:
No a funguje to? |
||
perwin Profil |
#6 · Zasláno: 12. 12. 2010, 13:10:05
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 |
#7 · Zasláno: 12. 12. 2010, 13:17:47 · Upravil/a: perwin
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 |
#8 · Zasláno: 12. 12. 2010, 13:24:47
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 |
#9 · Zasláno: 12. 12. 2010, 13:29:29
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 |
#10 · Zasláno: 12. 12. 2010, 13:34:37 · Upravil/a: LosFilipos
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; |
||
perwin Profil |
#11 · Zasláno: 12. 12. 2010, 13:36:11
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;}\"); |
||
xmark Profil |
#12 · Zasláno: 12. 12. 2010, 13:38:14
Nechtěli byste se s tím bastlením odebrat někam jinam?
|
||
LosFilipos Profil |
#13 · Zasláno: 12. 12. 2010, 13:40:20
perwin:
Netuším, tak moc velký kamarád s javascriptem zase nejsem. Zkus google, nebo pročíst diskusi... |
||
perwin Profil |
#14 · Zasláno: 12. 12. 2010, 13:47:45
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 |
#15 · Zasláno: 12. 12. 2010, 13:50:02 · Upravil/a: LosFilipos
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 |
#16 · Zasláno: 12. 12. 2010, 13:56:47
LosFilipos:
Takže přes innerHTML? |
||
LosFilipos Profil |
#17 · Zasláno: 12. 12. 2010, 13:58:53
perwin:
„Takže přes innerHTML?“ Co přes innerHTML? |
||
perwin Profil |
#18 · Zasláno: 12. 12. 2010, 14:03:23 · Upravil/a: perwin
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; }; |
||
perwin Profil |
#19 · Zasláno: 12. 12. 2010, 14:15:18
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 |
#20 · Zasláno: 12. 12. 2010, 14:21:35
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 |
#21 · Zasláno: 12. 12. 2010, 14:22:27
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 |
#22 · Zasláno: 12. 12. 2010, 14:29:37 · Upravil/a: perwin
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 |
#23 · Zasláno: 12. 12. 2010, 14:34:09 · Upravil/a: LosFilipos
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 |
#24 · Zasláno: 12. 12. 2010, 14:39:10
LosFilipos:
Takže ten script co jsem vyrobil je blbost? |
||
LosFilipos Profil |
#25 · Zasláno: 12. 12. 2010, 14:43:30
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 |
#26 · Zasláno: 12. 12. 2010, 14:51:32 · Upravil/a: perwin
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 |
#27 · Zasláno: 12. 12. 2010, 14:54:54
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 |
#28 · Zasláno: 12. 12. 2010, 14:55:55 · Upravil/a: perwin
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 |
#29 · Zasláno: 12. 12. 2010, 14:58:10
perwin:
if(!isset($_SESSION[$result["id_chatu"]])) musí být i v druhém případě u $result["id_kamarada"]... |
||
perwin Profil |
#30 · Zasláno: 12. 12. 2010, 15:00:51 · Upravil/a: perwin
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. |
||
Téma pokračuje na další straně.
|
0