Törlés után megáll
2018-02-27T18:56:54+01:00
2018-03-02T17:47:04+01:00
2022-08-11T00:45:32+02:00
sanyika1000
Sziasztok! A problémám annyi lenne hogy van egy törlő script. a törlés lefut,  eltünik az üzenet és én itt meg is szeretnék állni de valamiért egyből egy új üres lapra küld.

Mi okozhatja ezt?
A hiba itt megnézhető: 1siti1.uw.hu/chat.php irj egy üzenetet s töröld.
a kód pedig:

$botneve = "[Admin]"; //Bot neve $botuzenet = "A chat cache tisztítva!"; //bot üzenet $uzenet_hossza = 300; //üzenet hossza $cache = 100; //Ennyi üzenet jelenjen meg $ip = $_SERVER['REMOTE_ADDR']; //ip $nev = "admin"; //felhasználó neve $action = $_POST["action"]; //elküldte $uzenet = substr($_POST["uzenet"],0,$uzenet_hossza);//üzenet $datum = date("Y-m-d H:i:s"); //ekkor küldte el // DL $nev = $GLOBALS['CURUSER']['username']; $userid = $GLOBALS['CURUSER']['userid']; /*********************************** Lekérdezések ***********************************/ $uzenet_LEKER = "SELECT szama,nev,uzenet,datum FROM chat_uzenetek ORDER BY datum desc LIMIT 0,50 "; //Üzenetek lekérése $uzenet_IP = "SELECT ip FROM chat_uzenetek"; //az ip sor kiválasztása $uzenet_LETREHOZ = "INSERT INTO chat_uzenetek (nev,uzenet,datum,ip) VALUES ('$nev','$uzenet','$datum','$ip')"; //üzenet létrehozás $uzenet_BOT = "INSERT INTO chat_uzenetek (nev,uzenet,datum,ip) VALUES ('$botneve','$botuzenet','$datum','$ip')";//bot üzenet létrehozás $uzenet_torles = "TRUNCATE TABLE chat_uzenetek";//üzenetek törlése /*********************************** Üzenetek számának ellenőrzése ha elérte a limitet töröl ***********************************/ function ures_e($uzenet_IP) { global $cache,$uzenet_BOT,$uzenet_torles; $lek_osszes = mysql_query($uzenet_IP); $osszes = mysql_num_rows($lek_osszes); if ($osszes > $cache) { mysql_query($uzenet_torles); mysql_query($uzenet_BOT); } } /*********************************** Üzenet kiírás ***********************************/ function uzenetmutat($uzenet_LEKER) { global $botneve; $lek_mutat = mysql_query($uzenet_LEKER); if(mysql_num_rows($lek_mutat) != 0) { while ($adat = mysql_fetch_assoc($lek_mutat)) { $nev = $adat['nev']; $uzenet = $adat['uzenet']; $datum = $adat['datum']; $uzenet_szama = $adat['szama']; print $uzenet_szama; echo '<form method="post" onsubmit="torles('.$uzenet_szama.');"><input type="submit" name="action" value="Törlés"></form>'; echo '<div title="'.$datum.'">'; echo '<a title="'.$nev.' adatlapja" href="/userdetails.php?id='.$userid.'">'.$nev.'</a>'; echo ":<span>"; echo $uzenet; echo "</span></div><br>"; } } else echo "Nincsenek Chat Üzenetek!"; } /*********************************** JSből visszakapott adatok feldolgozása ***********************************/ if ($_POST) { if ($action == "kuld" && $uzenet) { usleep(25000); ures_e($uzenet_IP); mysql_query($uzenet_LETREHOZ); } if ($action == "mutat") { flush(); uzenetmutat($uzenet_LEKER); } if ($action == "torles" && $ezt) { mysql_query("DELETE FROM chat_uzenetek WHERE szama = '".$ezt."'"); flush(); uzenetmutat($uzenet_LEKER); } exit; } ?> <html> <head> <!-- *********************************** JS *********************************** --> <script type="text/javascript"> /* AJAX rész*/ function bongeszo() { var xmlhttp=false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } /* Smile Beszúró */ function beszur(mit){ document.chat.uzenet.value += mit; } /* Üzenet törlése */ function torles(ezt) { var elfogad=confirm("Valóban törölni szeretné ezt az üzenetet?"); if (elfogad) { c = document.getElementById("chat"); ajax=bongeszo(); ajax.open("POST", "chat.php?action=torles",true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { c.innerHTML = ajax.responseText } } ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); ajax.send("action=torles&ezt="+ezt); } else return false ; } /* Üzenet elküldés */ function kuld() { uzenet=document.chat.uzenet.value; ajax=bongeszo(); ajax.open("POST", "chat.php?action=kuld",true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { } } ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); ajax.send("action=kuld&uzenet="+uzenet) } /* Üzenet kiír */ function mutat() { c = document.getElementById("chat"); ajax=bongeszo(); ajax.open("POST", "chat.php?action=mutat",true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { c.innerHTML = ajax.responseText } } ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); ajax.send("action=mutat"); } /* Ugorjon az utolsó üzenethet */ function ugras() { var scc = document.getElementById("chat"); //scc.scrollTop = scc.scrollHeight + scc.offsetHeight; UGRÁS a lap aljára!!! } /* Küldés Enterrel is*/ function submitenter(myfield,e) { var keycode; if (window.event) keycode = window.event.keyCode; else if (e) keycode = e.which; else return true; if (keycode == 13) { kuld(); document.chat.uzenet.value=''; return false; } else return true; } function ismaxlength(obj) { var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "" if (obj.getAttribute && obj.value.length>mlength) obj.value=obj.value.substring(0,mlength) } setInterval('ugras()',500); setInterval('mutat()',1050); </script> <!-- ************************ CSS *********************************** --> </head> <body> <br /> <div id="chat" onscroll="clearInterval('ugras()');"></div> <a href="javascript:beszur(':beer:');"><img src="http://static.deathlord.eu/pic/smilies/beer.gif"></a> <a href="javascript:beszur(':beer2:');"><img src="http://static.deathlord.eu/pic/smilies/beer2.gif"></img></a> <a href="javascript:beszur(':beer3:');"><img src="http://static.deathlord.eu/pic/smilies/beer3.gif"></a> <a href="javascript:beszur(':angry:');"><img src="http://static.deathlord.eu/pic/smilies/angry.gif"></a> <a href="javascript:beszur(':ax:');"><img src="http://static.deathlord.eu/pic/smilies/ax.gif"></a> <a href="javascript:beszur(':banana3:');"><img src="http://static.deathlord.eu/pic/smilies/banana3.gif"></a> <a href="javascript:beszur(':banana2:');"><img src="http://static.deathlord.eu/pic/smilies/banana2.gif"></a><br> <form method="post" action="" name="chat" onsubmit="kuld();document.chat.uzenet.value='';return false"> <input type="hidden" name="action" value="kuld" /> <table border="0"> <tr> <td class="title"> Üzenet </td> <td> <textarea name="uzenet" maxlength="<?php print $uzenet_hossza?>" autocomplete="off" placeholder="Irj valamit...." onkeyup="return ismaxlength(this)" onkeypress="return submitenter(this,event); return false"></textarea> </td> </tr> </table> <br /> <input type="submit" value="Küldés" /> </form> </body> </html>
Mutasd a teljes hozzászólást!
Mivel eddig nem láttam az eredeti chat-kódod, kerestem egy egyszerű megoldást és beleaplikáltam egy pár éve készült TXT-s login-rendszer-be...
Természetesen a login-rendszert kissé átalakítottam és regisztrálás/belépés után lehet a chat-be lépni, ahol a belépési felhasználónévvel lehet hozzászólni...
Megj: Ha amúgy megfelel, akkor a login-rendszert átírhatod DB-sre, csak ne mysql utasításokat használj!
Mutasd a teljes hozzászólást!
Csatolt állomány

  • Kérdés:
    Lehet, hogy rosszul látom, de akkor most törléskor ajax a háttérben és adott blokk módosítása vagy a fájlod meghívása (oldal újratöltése) GET-változóval?

    ajax.open("POST", "chat.php?action=torles",true);
    Ha én látom rosszul, akkor
    Megj: A "hiba itt" linked meg elszúrtad...
    Mutasd a teljes hozzászólást!
  • H,
    Mi az, hogy megáll?
    Hiszen nem futhat örökké kód alapján.
    Esetleg nem zavarodsz bele, mivel aszinkron?
    B.
    Mutasd a teljes hozzászólást!
  • Hali!
    Nem küld új lapra. Csak csupán az alábbi kód végén van egy exit . Odáig fut le a kód.

    if ($_POST) { if ($action == "kuld" && $uzenet) { usleep(25000); ures_e($uzenet_IP); mysql_query($uzenet_LETREHOZ); } if ($action == "mutat") { flush(); uzenetmutat($uzenet_LEKER); } if ($action == "torles" && $ezt) { mysql_query("DELETE FROM chat_uzenetek WHERE szama = '".$ezt."'"); flush(); uzenetmutat($uzenet_LEKER); } exit; }
    Mutasd a teljes hozzászólást!
  • Ez félig megoldotta a problémámat Már nincs a probléma DE-->



    most maga az üzenet formrészt 2x rakja ki. Az 1. folyamatosan frissül és nem tudz bele gépelni.

    a 2. működik. Valami fut aminek nem kéne!?
    Mutasd a teljes hozzászólást!
  • Nem tudom mire gondolsz. A kódot magát nem én írtam 50% volt azt alakítottam és toldottam meg. :) Minden építőjellegű kritikát és jótanácsot el és megfogadok!!! :)
    Mutasd a teljes hozzászólást!
  • már megfejtettük hogy az exit; a ludas node ha kivezem akkor folyamatoan fut "valami" s 2 chat form van a linken amit adtam meg tudod nézni mire gondolok
    Mutasd a teljes hozzászólást!
  • A törléskor elküldöd az űrlapot is az ajax kérés mellett (nincs return false az onsubmit-ban mint az üzenetküldéskor) így teljesül az if($_POST). Állítsd meg a form elküldését, vagy használj szimplán egy buttont és onclick-kel hívd meg a törlés függvényedet. Az exit-et pedig visszarakhatod.

    Egyébként ilyen intenzív ajaxolás mellett jó eséllyel törlik az oldaladat. Az ingyenes hostingok nem szokták szeretni az ilyeneket.
    Mutasd a teljes hozzászólást!
  • nem fog ingyenes oldalon maradni :)
    Mutasd a teljes hozzászólást!
  • A kódot magát nem én írtam 50% volt azt alakítottam és toldottam meg.

    Arra gondoltam, hogy jó lenne tudni és látni az eredetit, ha már Te 50%-ban megtoldottad...
    Mutasd a teljes hozzászólást!
  • csinálj egy új php-t és abba is tedd bele ezt

    $uzenet_LEKER = "SELECT szama,nev,uzenet,datum FROM chat_uzenetek ORDER BY datum desc LIMIT 0,50 "; //Üzenetek lekérése $lek_mutat = mysql_query($uzenet_LEKER); if(mysql_num_rows($lek_mutat) != 0) { while ($adat = mysql_fetch_assoc($lek_mutat)) { $nev = $adat['nev']; $uzenet = $adat['uzenet']; $datum = $adat['datum']; $uzenet_szama = $adat['szama']; print $uzenet_szama; echo '<form method="post" onsubmit="torles('.$uzenet_szama.');"><input type="submit" name="action" value="Törlés"></form>'; echo '<div title="'.$datum.'">'; echo '<a title="'.$nev.' adatlapja" href="/userdetails.php?id='.$userid.'">'.$nev.'</a>'; echo ":<span>"; echo $uzenet; echo "</span></div><br>"; } } else echo "Nincsenek Chat Üzenetek!"; } A mutat() fügvénybe meg annak a php fájlnak a nevét írd bele.
    Mutasd a teljes hozzászólást!
  • Mivel eddig nem láttam az eredeti chat-kódod, kerestem egy egyszerű megoldást és beleaplikáltam egy pár éve készült TXT-s login-rendszer-be...
    Természetesen a login-rendszert kissé átalakítottam és regisztrálás/belépés után lehet a chat-be lépni, ahol a belépési felhasználónévvel lehet hozzászólni...
    Megj: Ha amúgy megfelel, akkor a login-rendszert átírhatod DB-sre, csak ne mysql utasításokat használj!
    Mutasd a teljes hozzászólást!
    Csatolt állomány
abcd