Autor Zpráva
Neas
Profil
Ahoj.
Z nějakého důvodu mi na stránkách v jednom případě nefunguje funkce $.get() z jquery.
<?php
include_once("mysql_connect.php");
$prispivatel = $_SESSION['hero_jmeno'];
if(isset($_GET['pisi']))
{
  echo "ano";
  $writing = $_GET['pisi'];
  if($writing == "")
    mysql_query("UPDATE forum_users SET chat_writing = '0' WHERE username = '$prispivatel' LIMIT 1");
  else
    mysql_query("UPDATE forum_users SET chat_writing = '1' WHERE username = '$prispivatel' LIMIT 1");
}
else
  echo "ne";
$sql_write = mysql_query("SELECT username FROM forum_users WHERE chat_writing='1' ORDER BY username ASC");
echo "<span class='cas'>Právě píší uživatelé:</span><span class='prispivatel'>";
while($usrpisi = mysql_fetch_array($sql_write))
  echo " ".$usrpisi[0];
echo "</span>";
mysql_close($mysql_connection);
?>

Zvýrazněné části kódu jsem přidal v rámci testování, abych zjistil, kde je chyba. Při vstupu na stránku se mi vypíše:
" nePrávě píší uživatelé: ", z čehož plyne, že proměnná se ani neodešle do souboru. Přikládám ještě kód indexu:
...metadata, různej JS...
function refresh()
  {
      $.get('chat.vyhodnoceni.php', function(vystup){ if(document.getElementById('chatarea').innerHTML != vystup){ $('#chatarea').html(vystup); } } );
      $.get('chat.writing.users.php', { pisi: document.getElementById('textove_pole').value } );          // tahle proměnná se neodešle
      $.get('chat.writing.users.php', function(pisi){$('#writingusers').html(pisi); } );
      scrollDown();
  }
  setInterval("refresh();", 500);
</script>
...html stránky...
<form method="post">
<textarea id="textove_pole"></textarea><br />
<input type="button" value="Odeslat" onclick="odeslat(); reset();" /><br />
</form>
...další html a konec

ostatní $.get() ve funkci refresh() jsou bez problémů.
Prohlížel jsem kódy několikrát, ale nemohu najít chybu, tak píši sem a prosím vás, jestli by ste mi někdo nedokázal pomoci.
Děkuji.
Aichi
Profil
Živá ukázka | jsou chybové hlášky v JS konzoli?
Neas
Profil
žádné chybové hlášky. do souboru chat.writing.users.php se prostě proměnná z nějakého důvodu neodešle.
ninja
Profil
Neas: a je ten php skript vůbec volán?
Chamurappi
Profil
Reaguji na ninju:
Nejspíš je. Předpokládám, že dvakrát — poprvé zapíše do databáze proměnnou „pisi“ (výstup se zahodí) a podruhé pošle „nePrávě píší uživatelé“ (což se strčí do #writingusers).


Reaguji na Nease:
// tahle proměnná se neodešle
O tom pochybuju. Ale dál nad tím nemá smysl přemýšlet, dokud nedodáš tu živou ukázku.

Bombardovat server dvakrát za sekundu třemi HTTP požadavky, které vyvolají minimálně čtyři dotazy na databázi, mi připadá docela hloupé. Jsi neponaučitelný, že?
Neas
Profil
Chamurappi:
0ms, přiznávám, bylo dost hloupé používat, ale myslel jsem, že půl sekunda už je dost - i 4 mysql požadavky dohromady přeci zaberou méně, než 500ms, ne?
Chamurappi
Profil
Reaguji na Nease:
i 4 mysql požadavky dohromady přeci zaberou méně, než 500ms, ne?
Od kolika lidí zároveň? Na jak zatíženém serveru? Na tvém místě bych nikdy nedělal chat přes databázi.

Proč při každém refreshi posíláš na server tři požadavky, když k přenosu všech informací stačí jeden požadavek a jedna odpověď?
__construct
Profil
Neas:
4 mysql požadavky dohromady přeci zaberou méně, než 500ms
To možno áno, ale druhá vec je predať tie dáta PHP .. to už bude iné číslo .. a samozrejme, že to ešte ovplyvňuje to čo Ti písal Chamurappi
Neas
Profil
Chamurappi, __construct:
aha, chápu. A jakým tedy jiným způsobem byste mi doporučovali ten chat udělat, když ne přes databázi?
__construct
Profil
Neas:
Ešte som nič takéto nerobil, ale myslím, že jednoduchšie bude ak budeš dáta ukladať do súboru buď s použitím serialize()/unserialize() alebo json_encode/json_decode - neviem čo bude rýchlejšie a čo sa týka kontroly nových správ tak by som do session/cookie uložil otlačok (md5,sha1.. ) súboru a kotroloval by som cez XHR iba tú hodnotu, ak sa zmenila načítal by som celý súbor a parsoval ho ak nie vrátil by som false ..
Neas
Profil
a můžeš mi prosimtě ve stručnosti popsat, k čemu ty funkce jsou? Moje angličtina je žel bohu vcelku bídná.
Děkuju

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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