Avatar billede aslan Nybegynder
03. juni 2002 - 16:24 Der er 29 kommentarer og
2 løsninger

Lave min opdatering ligesom http://www.bioalice.dk/chat/

Hvis der er nogen der kan hjælpe med at lave min chat lige så hurtig og stabil som http://www.bioalice.dk/chat/ ville jeg være yderst taknemmelig.....

Siden der viser beskeder har jeg skåret meget ned så dan ser sådan ud:

<html>
<head>
</head>
<body>
<?
include("../config.php");



$connection = mysql_connect("$server",
                            "$user",
                            "$pass");
mysql_select_db("$db", $connection) or die (mysql_error());

$result = mysql_query("SELECT * FROM chat ORDER BY tid DESC");
while ($row = mysql_fetch_array($result))
{

  echo "<b>$row[isim]</b>  $row[data] <br>";
  echo "<META HTTP-EQUIV='Refresh' CONTENT='2;URL=main.php'>";
}

?>
</body>
</html>



Siden man skriver fra er større den ser sådan ud uden html :


<? include("../config.php");

function smileys($smile) {
$smile = str_replace("(1)", "<img src=\"../sider/forum/smileys/bdaysmile.gif\">", $smile);
$smile = str_replace("(2)", "<img src=\"../sider/forum/smileys/frown.gif\">", $smile);
$smile = str_replace("(3)", "<img src=\"../sider/forum/smileys/mad.gif\">", $smile);
$smile = str_replace("(4)", "<img src=\"../sider/forum/smileys/smile.gif\">", $smile);
$smile = str_replace("(5)", "<img src=\"../sider/forum/smileys/urcool.gif\">", $smile);
$smile = str_replace("(6)", "<img src=\"../sider/forum/smileys/bounce0.gif\">", $smile);
$smile = str_replace("(7)", "<img src=\"../sider/forum/smileys/buck.gif\">", $smile);
$smile = str_replace("(8)", "<img src=\"../sider/forum/smileys/cat.gif\">", $smile);
$smile = str_replace("(9)", "<img src=\"../sider/forum/smileys/couto.gif\">", $smile);
$smile = str_replace("(10)", "<img src=\"../sider/forum/smileys/heks.gif\">", $smile);
$smile = str_replace("(11)", "<img src=\"../sider/forum/smileys/orangehat.gif\">", $smile);
$smile = str_replace("(12)", "<img src=\"../sider/forum/smileys/pinklove2.gif\">", $smile);
$smile = str_replace("(13)", "<img src=\"../sider/forum/smileys/rotwerd.gif\">", $smile);
$smile = str_replace("(14)", "<img src=\"../sider/forum/smileys/rough.gif\">", $smile);
$smile = str_replace("(15)", "<img src=\"../sider/forum/smileys/sagrin.gif\">", $smile);
$smile = str_replace("(16)", "<img src=\"../sider/forum/smileys/sunny.gif\">", $smile);
$smile = str_replace("(17)", "<img src=\"../sider/forum/smileys/confused.gif\">", $smile);
$smile = str_replace("(18)", "<img src=\"../sider/forum/smileys/eek.gif\">", $smile);
$smile = str_replace("(19)", "<img src=\"../sider/forum/smileys/rolleyes.gif\">", $smile);
$smile = str_replace("(20)", "<img src=\"../sider/forum/smileys/wink.gif\">", $smile);
$smile = stripslashes ($smile);
return $smile; }

$nyTekst = smileys($data);

if( $data!=""){

$connection = mysql_connect("$server",
                            "$user",
                            "$pass");
mysql_select_db("$db", $connection) or die (mysql_error());

$del = mysql_query("SELECT id FROM chat ORDER BY id DESC LIMIT 15,1");
$row = mysql_fetch_array($del);
$id  = $row[id]+1;

mysql_query("DELETE FROM chat WHERE id < $id");

$ip = $REMOTE_ADDR;

$insertSQL = "insert into chat(ipNr,isim,data,tid)
              values ('$ip','$adgang','$nyTekst',now())";
mysql_query($insertSQL);
}



?>
Avatar billede martin1000ben Nybegynder
03. juni 2002 - 16:31 #1
$result = mysql_query("SELECT * FROM chat ORDER BY tid DESC");
while ($row = mysql_fetch_array($result))
{

Jeg vil bare sige at det ikke er så smart at bruge * i en SELECT, ALTID skriv hvilke ting du skal bruge og hvis du ska bruge ALLE ting ja så skriv dem alligevel!

Har du lavet index på de forskellige rækker i din database ?
Avatar billede aslan Nybegynder
03. juni 2002 - 16:39 #2
Hvorfor er * ikke smart den fik jeg ikke? og ja jeg har index på alle rækker...
Avatar billede martin1000ben Nybegynder
03. juni 2002 - 16:41 #3
* er simpelthen for langsomt, altså ikke hurtig :-)
Avatar billede aslan Nybegynder
03. juni 2002 - 16:42 #4
ok god point
Avatar billede martin1000ben Nybegynder
03. juni 2002 - 16:48 #5
Ja da, men det står vist også på mysql.com et eller andet sted, det med mindre performance hvis man bruger *
Avatar billede aslan Nybegynder
03. juni 2002 - 16:49 #6
andre gode ideer til hvordan jeg kan gøre som http://www.bioalice.dk/chat/?
Avatar billede martin1000ben Nybegynder
03. juni 2002 - 16:50 #7
$smile = str_replace("(1)", "<img src="../sider/forum/smileys/bdaysmile.gif">", $smile);
$smile = str_replace("(2)", "<img src="../sider/forum/smileys/frown.gif">", $smile);
$smile = str_replace("(3)", "<img src="../sider/forum/smileys/mad.gif">", $smile);
$smile = str_replace("(4)", "<img src="../sider/forum/smileys/smile.gif">", $smile);
[snip]

Har du overvejet at bruge switch() ? jeg vil tro den er hurtigere men ved det slet ikk!
Avatar billede martin1000ben Nybegynder
03. juni 2002 - 16:54 #8
Hov ... jeg kan lige se at du ikke bruger addslashes() og stripslashes() ? - er det korrekt?

Og det med din str_replace, jeg ville nok smide dem ind nå du henter resultaterne UD fra databasen igen, også bruger striphtmltags() *kan ikk huske hva den hedder* for ellers kan du bare smide

<img src="http://minside.dk/billede.jpg" width="500px" height="500px"> og ja så prøv at se hvad der sker!
Avatar billede martin1000ben Nybegynder
03. juni 2002 - 16:55 #9
htmlspecialchars() hedder den striphtmltags ting :)
Avatar billede tipsen Nybegynder
03. juni 2002 - 17:21 #10
I stedet for at bruge:

$smile = str_replace("(1)", "<img src="../sider/forum/smileys/bdaysmile.gif">", $smile);
$smile = str_replace("(2)", "<img src="../sider/forum/smileys/frown.gif">", $smile);
...

Så smid dem i et array og nøjes med ét funktionskald:

$smiliesource = array(
"(1)",
"(2)",
...
);

$smiliedestination = array(
"<img src=\"../sider/forum/smileys/bdaysmile.gif\">",
"<img src=\"../sider/forum/smileys/frown.gif\">",
...
);

$smile = str_replace($smiliesource,$smiliedestination,$smile);
Avatar billede tipsen Nybegynder
03. juni 2002 - 17:22 #11
smid evt. de to array med smilies-tekster i en ekstern fil som include's og dermed nemt kan bruges i andre filer - funktionskaldet er stadig det samme!
Avatar billede aslan Nybegynder
03. juni 2002 - 17:25 #12
Ok det kan jeg godt se og takker ... men nu var det altså den funktion de har brugt inde på http://www.bioalice.dk/chat/ jeg savner? Det er somom chatten derinde kun opdatere sig selv når en bruger skriver noget??? Hvordan kan man gøre det, gå i dvale indtil der bliver skrevet noget. Det ville da være vældig smart...
Avatar billede aslan Nybegynder
03. juni 2002 - 17:29 #13
Hva med en flush funktion? har hørt den skulle være hurtig:

$id = 0;
while(1) {
  $query = mysql_query("SELECT * FROM tabel WHERE id > $id");
  while($vis = mysql_fetch_array($query)) {
    print "$vis[tekst]<br>\n";
  $id = $id+1;
  }
flush;
sleep(2);
}
Avatar billede Slettet bruger
03. juni 2002 - 18:33 #14
Du skal sætte et target="skjulte-frame" og action="skjultframe.php" ind i dit form tag i skrivefeltsframen.php!

derefter skal du indsætte den kode du normalt havde i skrivefeltsframen.php ind i skjultframe.php, for så opdaterer skjultframe.php BÅDE hvergang der skrives + hvert 3 sek!
Avatar billede martin1000ben Nybegynder
03. juni 2002 - 19:59 #15
Måske fordi den der biochat ting der er hurtig fordi der aldrig er nogen ? :)
Avatar billede aslan Nybegynder
03. juni 2002 - 22:55 #16
ehm.. panton dit forslag gør jo ingen forskel andet en at forvirre mig ydermere:)

Og martin1000ben du har fat i en pointe :)
Avatar billede Slettet bruger
03. juni 2002 - 23:02 #17
det var dog utroligt... hmm... jeg orker ikke at forklare det... det ender jo sikkert ingen med at jeg kan få det til at virke, men at det ikke virker for dig
Avatar billede aslan Nybegynder
03. juni 2002 - 23:09 #18
hehe sikkert .... men har du nogen forslag til hvordan serveren kun laver en opdatering når en bruger smider en besked ind??
Avatar billede aslan Nybegynder
03. juni 2002 - 23:10 #19
og jeg har fået den der online bruger opdatering til at virke så du får ihvertfald 50 point når jeg lukker dette spørgsmål.. det har du fortjent:)
Avatar billede Slettet bruger
03. juni 2002 - 23:12 #20
dvs den ikke skal opdatere hvert 3 sek???
Avatar billede aslan Nybegynder
03. juni 2002 - 23:16 #21
nej kun når en bruger smider en besked ind...
Avatar billede Slettet bruger
03. juni 2002 - 23:20 #22
har du msn eller icq??

ok... du har 2 filer... en der gemmer hvad brugern skriver og viser skrive felt og en anden der viser hvad der er skrevet i chatten... am i right??
Avatar billede aslan Nybegynder
03. juni 2002 - 23:21 #23
jep præcis:)
Avatar billede Slettet bruger
03. juni 2002 - 23:29 #24
opret en backup af filerne. for en sikkerhedsskyd!

1. flyt den kode der gemmer hvad brugeren siger  og flyt den over i den der viser chatten.

2. skriv:

if($say == "true"){

//kode
}

uden om den kode du lige har sat ind!

3. vis mig hvad der så står i den fil hvor du fjernde den tidligere kode fra,,,
Avatar billede aslan Nybegynder
03. juni 2002 - 23:37 #25
<?
session_start();
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style/styleForm.css">
<script language="JavaScript">
<!-- Gem koden for gamle browsere

function PopWin(url,h,w) { var ww = 480, wh = 340, leftPos = 100, topPos = 600;

IE=(document.all)?true:false;
var wh = (IE)?document.body.clientHeight : window.innerHeight;
var ww = (IE)?document.body.clientWidth : window.innerWidth;

if (top.screen){
  if (screen.width){
    leftPos = Math.round((ww-w-10)/2);
    topPos = Math.round((wh-h-29)/2);
  } else {
    leftPos = 50
    topPos = 50
  }
}

popupWin = window.open(url, 'popup', 'scrollbars,resizable,height=' + h + ',width=' + w + ',top=' + topPos + ',left=' + leftPos + '')
}
// -->
</script>
</head>
<body>
<div align ="center">
<form name ="message">
<table border="0">
<tr>
<td valign="middle" align="left"><input type="text" name="data" size="85"  maxlength="300" style="font-family: Verdana; font-size: 8 pt"></td>
</tr>
<tr>
<td valign="middle" align="left">
<a href="java script:PopWin('destek.php',400,350);" style="width: 100%;">Destek</a>
</td>
</tr>
</form>
<script language="JavaScript">
<!--
    document.message.data.focus();
// -->
</script>

</tr>

</table>

</div>
<? include("../config.php");

function smileys($smile) {
$smile = str_replace("(1)", "<img src=\"../sider/forum/smileys/bdaysmile.gif\">", $smile);
$smile = str_replace("(2)", "<img src=\"../sider/forum/smileys/frown.gif\">", $smile);
$smile = str_replace("(3)", "<img src=\"../sider/forum/smileys/mad.gif\">", $smile);
$smile = str_replace("(4)", "<img src=\"../sider/forum/smileys/smile.gif\">", $smile);
$smile = str_replace("(5)", "<img src=\"../sider/forum/smileys/urcool.gif\">", $smile);
$smile = str_replace("(6)", "<img src=\"../sider/forum/smileys/bounce0.gif\">", $smile);
$smile = str_replace("(7)", "<img src=\"../sider/forum/smileys/buck.gif\">", $smile);
$smile = str_replace("(8)", "<img src=\"../sider/forum/smileys/cat.gif\">", $smile);
$smile = str_replace("(9)", "<img src=\"../sider/forum/smileys/couto.gif\">", $smile);
$smile = str_replace("(10)", "<img src=\"../sider/forum/smileys/heks.gif\">", $smile);
$smile = str_replace("(11)", "<img src=\"../sider/forum/smileys/orangehat.gif\">", $smile);
$smile = str_replace("(12)", "<img src=\"../sider/forum/smileys/pinklove2.gif\">", $smile);
$smile = str_replace("(13)", "<img src=\"../sider/forum/smileys/rotwerd.gif\">", $smile);
$smile = str_replace("(14)", "<img src=\"../sider/forum/smileys/rough.gif\">", $smile);
$smile = str_replace("(15)", "<img src=\"../sider/forum/smileys/sagrin.gif\">", $smile);
$smile = str_replace("(16)", "<img src=\"../sider/forum/smileys/sunny.gif\">", $smile);
$smile = str_replace("(17)", "<img src=\"../sider/forum/smileys/confused.gif\">", $smile);
$smile = str_replace("(18)", "<img src=\"../sider/forum/smileys/eek.gif\">", $smile);
$smile = str_replace("(19)", "<img src=\"../sider/forum/smileys/rolleyes.gif\">", $smile);
$smile = str_replace("(20)", "<img src=\"../sider/forum/smileys/wink.gif\">", $smile);
$smile = stripslashes ($smile);
return $smile; }

$nyTekst = smileys($data);

if( $data!=""){

$connection = mysql_connect("$server",
                            "$user",
                            "$pass");
mysql_select_db("$db", $connection) or die (mysql_error());

$del = mysql_query("SELECT id FROM chat ORDER BY id DESC LIMIT 16,1");
$row = mysql_fetch_array($del);
$id  = $row[id]+1;

mysql_query("DELETE FROM chat WHERE id < $id");


}



?>

</body>
</html>
Avatar billede Slettet bruger
03. juni 2002 - 23:43 #26
<form name="message">    <<----- her har du dit formtag

<form name="message" action="fil.php">    < ---- fil.php skal være den anden fil, altså, den der viser tingene!
<form name="message" action="fil.php" target="name">  <----- target="name" hvor name er den frame hvori du har fil.php's name="..." værdi

du ændre altså dit formtag til det jeg skrev!
derefter skriver du lige efter formtag'et:

<input type="hidden" name="say" value="true">
Avatar billede tipsen Nybegynder
03. juni 2002 - 23:44 #27
aslan: Du spurgte efter hvordan du kunne gøre din chat hurtig og stabil - det var bare det jeg svarede på :-)

En anden delvist overflødig tidssluger er følgende:

$connection = mysql_connect("$server",
                            "$user",
                            "$pass");
mysql_select_db("$db", $connection) or die (mysql_error());

$del = mysql_query("SELECT id FROM chat ORDER BY id DESC LIMIT 16,1");
$row = mysql_fetch_array($del);
$id  = $row[id]+1;

mysql_query("DELETE FROM chat WHERE id < $id");

-----

Dette behøver du ikke hver gang - gør du?

Gør det evt. betinget af en sandsynlighed, således at du kun med 5% sandsynlighed sletter i db'en - med mindre det er streng nødvendigt at det gøres hver gang!
Avatar billede aslan Nybegynder
03. juni 2002 - 23:56 #28
panton dit forslag har jeg faktisk forsøgt mig med før og det virker heller ikke nu...


tipsen framen hvor brugeren skriver sin besked er ikke problemet den skal kun opdateres hvis en bruger benytter sig af den.. problemet ligger i de to frames der opdatere sig selv hver anden sekund..hvis jeg blot kunne få denne opdatering til så den kun sker når brugeren skriver en besked ville det være perfekt..
Avatar billede tipsen Nybegynder
04. juni 2002 - 00:18 #29
Jeg tænkte bare, at du nok ville være interesseret i at gøre den så hurtig så mulig... - det andet er noget javascript... - det gider jeg ikke...
Avatar billede Slettet bruger
04. juni 2002 - 01:25 #30
har du prøvet igen! det kunne jo være det kom til at virke :D
Avatar billede aslan Nybegynder
04. juni 2002 - 14:17 #31
Ligemeget jeg laver det i java istedet...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester