Autor Zpráva
Alegor
Profil
Dobrý den,
mám tu takový problém. Chtěl bych udělat, že po kliknutí na tlačítko Odeslat se reloadne DIV #chat_zpravy, ve kterém je vložen soubor chat_vypis.php, ale zároveň by bylo dobré, kdyby se zachoval PHP script, který by to po kliknutí taktéž vykonávalo. Už jsem tu něco takového viděl, ale nefungovalo mi to. v jQuery se absolutně neorientuji, takže se předem omlouvám za drobné chyby, které tady budu dělat. Jinak soubor chat.php vypadá takto:
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
setInterval(function() {
  $("#chat_zpravy").load(location.pathname + location.search + " #chat_zpravy > *");
}, 10000); 
</script>
</head>
<noscript>Chat ti nebude fungovat, protože ve tvém prohlížeči není zaplý JavaScript!</noscript>
<?php
  if(isset($_POST["odeslat"])){
    if($_POST["zprava"]){
    $string_zprava = strlen($_POST["zprava"]);
      if($string_zprava <= 5000){
        $zapis = mysql_query("INSERT INTO chat SET id_jmena='".$_SESSION["id"]."', zprava='".$_POST["zprava"]."', datum='".date("d. m. Y v H:i")."', ip='".$_SERVER["REMOTE_ADDR"]."', smazano='0';");
      } else { echo "<script>alert('Zpráva může mít maximálně 5000 znaků!');</script>"; }
    } else { echo "<script>alert('Zadej zprávu!');</script>"; }
  }
?>
<div class="chat_box">
  <div id="chat_zpravy">
    <?php include("chat_vypis.php"); ?>
  </div>
  <div class="chat_sys">
    <form action="<?php $PHP_SELF; ?>" method="POST" name="formular">
      <input type="text" name="zprava" id="chat_policko" /><br><br><button name="odeslat" value="Odeslat" id="tlacitko1">Odeslat</button>
    </form> 
  </div>
</div>

A subor chat_vypis.php takto:
<?php
  if(isset($_GET["smazat"])){
    mysql_query("UPDATE chat SET smazano='1' WHERE id='".$_GET["smazat"]."';");  
  }
  $dotaz = mysql_query("SELECT * FROM chat WHERE smazano='0' ORDER BY `chat`.`id` DESC LIMIT 0 , 15 ;");
  while($vypis = mysql_fetch_array($dotaz)):
    $id = $vypis["id"];
    $id_jmena = $vypis["id_jmena"];
    $zprava = $vypis["zprava"];
    $datum = $vypis["datum"];
    $ip = $vypis["ip"];
      $dotaz_autor = mysql_query("SELECT * FROM uzivatele WHERE id='$id_jmena';");
      $vypis_autor = mysql_fetch_array($dotaz_autor);
      $autor = $vypis_autor["jmeno"];
    if($id&1){ $trida = "chat_prvni"; } else { $trida = "chat_druhy"; }
?>
<div class="<?php echo $trida; ?>">
  <span id="chat_jmeno"><a href="index.php?s=profil&id=<?php echo $id_jmena; ?>"><?php echo $autor; ?></a></span> - <?php echo $datum; ?><br>
    <?php echo $zprava; ?>
  <div class="chat_panel">
    <?php if($_SESSION["opravneni"] == "ADMIN"){ echo "$ip<br><a href='index.php?s=uzivatel&u=chat&smazat=$id'><input type='submit' value='Smazat' id='tlacitko1' /></a>"; } ?>
  </div>
</div>
<?php endwhile; ?>
Předem Vám všem děkuji za pomoc.
Keeehi
Profil
    <form method="POST" name="formular">
      <input type="text" name="zprava" id="chat_policko" /><br><br><input type="submit" name="odeslat" value="Odeslat" id="tlacitko1">Odeslat</button>
    </form> 
Alegor
Profil
Keeehi:
To jsem nějak nepochopil :-D Vždyť to žádný reload neudělá, je to jen formulář. Mohl by jste to ptosím podrobněji vysvětlit? Předem děkuji. :-)
Keeehi
Profil
Při odeslání formuláře se znovunačtení stránky provádí automaticky. To je normální věc.
Alegor
Profil
Keeehi:
No jo, ale já chci načíst pouze DIV #chat_zpravy, ne celou stránku.
_es
Profil
Alegor:
$("#chat_zpravy").load(location.pathname + location.search + " #chat_zpravy > *");
To tuším nejako vyberá zo stiahnutých dát nejaký fragment. Prečo nesťahuješ len to, čo treba?
Keeehi
Profil
Alegor:
V tom případě budete muset formulář ajaxem odeslat a až přijde odpověď, znovu načíst #chat_zpravy.
Alegor
Profil
Keeehi:
Já se v Ajaxu a JavaScriptu absolutně nevyznám, mohl by jste mi sem zadat přesný script prosím? Předem děkuji.
pcmanik
Profil
Alegor:
Na zadanie presneho scriptu je tu sekcia prace a zakazky. Toto je len cesta ako ti poradit, nasmerovat ta spravnou cestou a nie ti napisat kompletny script.
Lukáš Knápek
Profil *
Ahoj, zkus se podívat na tento článek: http://www.nullpointer.cz/refresh-reload-ajaxoveho-obsahu-nacteneho-pomoci-jquery
Alegor
Profil
Lukáš Knápek:
Ahoj, mockrát ti děkuji. Momentálně s tím chatem moc nedělám, ale určitě se na to podívám. :-)

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:

0