Datenbank automatisch durchsuchen

themonk

Erfahrenes Mitglied
Hallo
kennt jemand ein Script was die Datenbank automatsich nach neuen einträgen durchsucht?
Also ich wollte das meine Seite 2 Frams hat einmal einen Input und Output, wenn jetzt mehrer User auf die Seite X.php mit den Frames gehen und einer in die Input Hallo schreibt soll bei allen Usern im Output fenster Hallo stehen .

Ich habe mal nach sowas gesucht und bei einem Chat eine Output gesehen nur ich konnte damit nicht viel anfangen da da noch mehr sachen drin warn hier ist mal der Quelltext.

PHP:
<? 
ob_end_flush(); 
$starttime=time(); 
INCLUDE "./include/configuration.inc.php"; 
$header = new EasyTemplate("$basepath/templates/outputheader.tpl"); 
$header -> assign("OUTPUTCOL","$defoutputcol"); 
$header -> assign("OUTPUTTEXTCOL","$defoutputtextcol"); 
$header -> assign("OUTPUTLINKCOL","$defoutputlinkcol"); 
$header -> assign("OUTPUTALINKCOL","$defoutputalinkcol"); 
$header -> assign("OUTPUTVLINKCOL","$defoutputvlinkcol"); 
if($autoscroll == "nein"){ 
$header -> assign("SCROLLING","onmouseover=\"scrolling=false\" onmouseout=\"scrolling=true\"");} 
if($autoscroll == "ja"){ 
$header -> assign("SCROLLING","");} 
$header -> assign("BGURL","$defoutputbgpic"); 
$header -> assign("BGFIX","$outputbgfixed"); 
$header -> assign("TITLE",$title); 
$header -> easy_print(); 
$db10=new db_local; 
$db10->query("UPDATE ".$chatprefix."chatusers SET lastaction='".time()."',away='0' WHERE nick='$chatuser'"); 
usleep(50000); 
//$db11=new db_local; 
$db10->query("SELECT maxaway,maxnoaway,maxposts,greeting,werbe_news,werbe_news_col FROM ".$chatprefix."chat_options"); 
$db10->next_record(); 
$maxaway2 = $db10->record[maxaway]; 
$maxnoaway2 = $db10->record[maxnoaway]; 
$maxposts2 = $db10->record[maxposts]; 
$greeting = $db10->record[greeting]; 
$chatnews = $db10->record[werbe_news]; 
$chatnews_col = $db10->record[werbe_news_col]; 
echo "<script language=\javascript\"> 
         function oefnefenster(lol) 
        { 
        window.open(lol, 'fenster', 'toolbar=no,location=no,scrollbars=yes,resizable=yes'); 
        } 
        </script>"; 
        function Stream($chatuser,$chatroom) { 
global $host,$database,$user,$password,$stoolonginactive,$maxaway,$maxnoaway,$awayschutz,$chatprefix; 
if($chatuser) { 
  ignore_user_abort(1); 
  $PingTime=1; 
  $Ping=0; 
  $query3="SELECT lastaction,away,ignorelist2,streamabort FROM ".$chatprefix."chatusers where nick='$chatuser'"; 
  $db = new db_local; 
  $db2 = new db_local; 
  // Aktueller Stand wird einmalig ausgelesen 
  $db->query("SELECT id from ".$chatprefix."chatmessages_$chatroom order by id desc limit 1"); 
  $lastpos=$db->result(); 
  while(!connection_aborted()) { 
   $db5= new db_local; 
   $db5 -> query("UPDATE ".$chatprefix."chatusers SET streamabort='0' WHERE nick='$chatuser'"); // stream ist da 
   // Autokick 
   $db->query("SELECT lastaction,away,ignorelist2,streamabort,clockview,mode FROM ".$chatprefix."chatusers where nick='$chatuser'"); 
   $db->next_record(); 
   $clockview = $db->record[clockview]; 
   $time = time(); 
   $onl = $time - $db->record[lastaction]; 
   $min = $onl/60; 
   $min = sprintf("%.0lf",$min); 
   $away = $db->record[away]; 
   $active1 = $db->record[active]; 
   //$db5->query("SELECT lastaction,away,ignorelist2,streamabort,clockview,mode FROM ".$chatprefix."chatusers where nick='$chatuser'"); 
   //$db5->next_record(); 
   $mode = $db->record[mode]; 
   $gastmins=$time-$starttime; 
   $gastmins=$gastmins/180; 
   $ignorelist = $db->record[ignorelist2]; 
   $streamabort =  $db->record[streamabort]; 
   $clockview =  $db->record[clockview]; 
   $streamchk = mktime() - $streamabort; 
   if ($active1 == '0') { 
    ?> 
    <script language="javascript">top.window.location.href="index.php?logout=autokick";</script> 
    <? 
    exit; 
   } 
   else 
   { 
        if(is_int($gastmins) && $mode == '-1') 
        { 
        $db_guest_mins=new db_local; 
        $db_guest_mins->query("INSERT INTO ".$chatprefix."chatmessages_$chatroom VALUES ('','privatemessagestring $chatuser <font color=#ff0000>Nachricht vom Chatbot: $chatuser bitte regestriere Dich, damit Du alle Funktionen des Chats benutzen kannst.(Klicke <a href=index.php target=_top>hier</a>.)</font><br>','$chatuser','$date','$usersip','$usersxforwarded')"); 
        sleep(1); 
        } 
   } 
   if(($min >= "$maxnoaway2" && $away == "0") || $min >= "$maxaway2") { 
    if ($mode >= '2' && $awayschutz=="ja") { 
    } else { 
     if ($active1 >= '1') { 
      $db5=new db_local; 
      $db6=new db_local; 
      $db5->query("UPDATE ".$chatprefix."chatusers SET active='0', away='0', id='0', streamabort='0' WHERE nick = '$chatuser'"); 
      $db6->query("INSERT INTO ".$chatprefix."chatmessages_$chatroom VALUES ('','<font color=#ff0000>$schatbotmessage $chatuser $sautokick</font><br>','$chatuser','$date','$usersip','$usersxforwarded')"); 
      $db5->query("DELETE FROM ".$chatprefix."security WHERE nick = '$chatuser'"); 
      ?> 
      Du warst zulange Inaktiv ! <script language="javascript">top.window.location.href="index.php?logout=autokick";</script> 
      <? 
      exit; 
     } 
    } 
   } 
   // Ende Autokick 
   // MSGs anzeigen 
   // Aktuelle Position auslesen 
   $db->query("SELECT id from ".$chatprefix."chatmessages_$chatroom order by id desc limit 1"); 
   $pos=$db->result(); 
   // Mit alter Position vergleichen 
   if($lastpos < $pos) { 
    $query2="SELECT message,user,datum FROM ".$chatprefix."chatmessages_$chatroom WHERE id > $lastpos"; 
    $db->query($query2); 
    // Alle hinzugekommenen MSGs durchlaufen 
    while ($db->next_record()) { 
     $text=stripslashes($db->record[message]); 
     $schreiber=$db->record[user]; 
     #$Text=$text; 
     #INCLUDE"./include/bbcode.php"; 
     #$text=$Text; 
     // Normale MSGs 
     #Hier ignore Script einfügen/by Kaio 
     if($schreiber=="") { 
      $schreiber="drecksverdammel"; 
     } 
     if(eregi($schreiber,$ignorelist)) { 
     } else { 
      if(!eregi("privatemessagestring",$text)) { 
       echo "$text"; 
      } 
      // Private MSGs 
       else if(eregi("privatemessagestring $chatuser ",$text)) { 
        $text=eregi_replace("privatemessagestring $chatuser ","",$text); 
        echo" $text"; 
       } 
      } 
     #Hier ende Ignore Script 
     } 
     $lastpos=$pos; 
    } else { 
     echo " "; 
    } 
    // Neue Zeilen oder Leerzeichen an den Browser schicken 
    flush(); 
    usleep(500000); 
   } // while connection 
   $db->close(); 
  } //if user 
} // Function 

//Autodel by progressive 
$db10->query("SELECT count(id) from ".$chatprefix."chatmessages_$chatroom"); 
$anzposting=$db10->result(); 
$delposting = $maxposts2; 
  if ($anzposting>=$delposting) { 
  $db10->query("SELECT id from ".$chatprefix."chatmessages_$chatroom ORDER BY id DESC LIMIT 1"); 
  $db10->next_record(); 
  $id=$db10->record[id]; 
  $id = $id - 2; //die letzten zeile stehen lassen 
  $db10->query("DELETE LOW_PRIORITY FROM ".$chatprefix."chatmessages_$chatroom WHERE id<'$id'"); 
  $db10->query("OPTIMIZE TABLE ".$chatprefix."chatmessages_$chatroom"); 
} 
//Center Welcome Msg by Kaio 
if($welcomecenter=="ja") 
{ 
echo "<center>"; 
} 




//Autodel by progressive 
if (!isset($clear) || $clear!=1 || !eregi("sep_",$chatroom)) { // Zeigt die Meldungen nicht bei einem /clear-Befehl an 
if($greeting=="1") { 
  echo $welcomemsg2; 
} else { 
?> 
<SCRIPT language=JavaScript><!-- 
// begin script 
function display_title() { 
date = new Date(); 
var hours = date.getHours(); 
var message = ''; 
if (hours >= 0) { time_of_day = '<? echo $morningmsg1 ?>,'; message='Morning Message';} 
if (hours >= 6) { time_of_day = '<? echo $morningmsg2 ?>,'; message='Morning Message';} 
if ((hours >= 12) && (hours < 17)) { time_of_day = '<? echo $daymsg2 ?>,'; message='Afternoon Message'} 
if (hours >= 17) { time_of_day = '<? echo $eveningmsg1 ?>,'; message='Evening Message';} 
if (hours >= 22) { time_of_day = '<? echo $eveningmsg2 ?>,'; message='Evening Message';} 
document.write('' + time_of_day + ''); 
} 
// document.write('' + message + ''); 
//end display title 
// --></SCRIPT> 
<SCRIPT language=javascript> 
<!-- begin script 
display_title(); 
//--></SCRIPT> 
<? 
echo $welcomemsg; 
} 
$jetztip=getenv("REMOTE_ADDR"); 
//Was für user sind Online anzeige// 
$db = new db_local; 
$db2 = new db_local; 
$db2->query("SELECT count(nick) FROM ".$chatprefix."chatusers WHERE mode like '3' AND active='1'"); 
$webbie_online=$db2->result(); 
$db2->query("SELECT count(nick) FROM ".$chatprefix."chatusers WHERE active='1'"); 
$usersonline=$db2->result(); 
if($db2->result == 1) 
{$oneormoreusers="ist";} 
else{$oneormoreusers="sind";} 
if ($webbie_online=='0') { 
$webbie_online="0"; 
} 
echo "Zurzeit $oneormoreusers <font color=red>$webbie_online</font> Webmaster, "; 
$db2->query("SELECT count(nick) FROM ".$chatprefix."chatusers WHERE mode like '2' AND active='1'"); 
$admins_online=$db2->result(); 
if ($admins_online=='0'){ 
$admins_online="0"; 
} 
if ($admins_online=='1') { 
$adminbit="Admin"; 
} else { 
$adminbit="Admins"; 
} 
echo "<font color=red>$admins_online</font> $adminbit, "; 
$db2->query("SELECT count(nick) FROM ".$chatprefix."chatusers WHERE mode like '1' AND active='1'"); 
$vip_online=$db2->result(); 
if ($vip_online=='0') { 
$vip_online="0"; 
} 
if ($vip_online=='1') { 
$vipbit="VIP"; 
} else { 
$vipbit="VIPs"; 
} 
echo "<font color=red>$vip_online</font> $vipbit, "; 
$db2->query("SELECT count(nick) FROM ".$chatprefix."chatusers WHERE mode like '0' AND active='1'"); 
$user_online=$db2->result(); 
if ($user_online=='0') { 
$user_online="0"; 
} 
if ($user_online=='1') { 
$userbit="Normaler"; 
} else { 
$userbit="Normale"; 
} 
echo " <font color=red>$user_online</font> $userbit User "; 
$db2->query("SELECT count(nick) FROM ".$chatprefix."chatusers WHERE mode like '-1' AND active='1'"); 
$gast_online=$db2->result(); 
if ($gast_online=='0') { 
$gast_online="0"; 
} 
if ($gast_online=='1') { 
$gastbit="Gast"; 
} else { 
$gastbit="Gäste"; 
} 
echo "und <font color=red>$gast_online</font> $gastbit Online.<br><b><font color=$chatnews_col>$chatnews</font></b><br>"; 
//noch Welcome Center adon by kaio 
if($welcomecenter=="ja") 
{ 
echo "</center>"; 
} 

// Gespeicherte Msgs anzeigen 
$db = new db_local; 
$db2 = new db_local; 
$db->query("SELECT message,id FROM ".$chatprefix."msgs where sentto='$chatuser' ORDER BY datum asc,uhrzeit asc"); 
$num = $db->num_rows(); 
if($num > 0) { 
echo "$fontprefixa Es wurden $num ungelesene Nachrichten an dich geschickt während du nicht da warst :</font><br><br>"; 
while ($db->next_record()) { 
  $message = $db->record[message]; 
  $id = $db->record[id]; 
  print $message; 
  $db2->query("delete from ".$chatprefix."msgs where id='$id'"); 
} 
} 
} // von clear 
$jetztip=$HTTP_SERVER_VARS["REMOTE_ADDR"]; 
$db = new db_local; 
$db->query("SELECT pass,lastip,id FROM ".$chatprefix."chatusers WHERE nick = '$chatuser'"); 
$db->next_record(); 
$dbid=$db->record[id]; 
$lastip=$db->record[lastip]; 
if ($lastip==$jetztip && $chatid==$dbid) { 
ignore_user_abort(1); 
$db -> query("UPDATE ".$chatprefix."chatusers SET streamabort='0' WHERE nick='$chatuser'"); // stream ist da 
if($last_ten=="ja") // die letzten 10 Zeilen Addon 
{ 
####before stream 
echo "<font size=-2><b><u>Die letzten 10 Zeilen:</u></b></font><br>"; 
$db_ten=new db_local; 
  $db_readten=new db_local; 
$db_ten->query("SELECT id from ".$chatprefix."chatmessages_$chatroom order by id desc limit 1"); 
  $lastpos=$db_ten->result()-"11"; 
  $db_readten->query("SELECT * FROM ".$chatprefix."chatmessages_$chatroom WHERE id > '$lastpos' "); 
  $zaehler="0"; 
  while($db_readten->next_record() && $zaehler <= '10') 
  { 
  $text=$db_readten->record[message]; 
  if(!eregi("privatemessagestring",$text) && !eregi("<script language=\"javascript\">",$text)) 
  { 
  $text=stripslashes($text); 
  echo "$text"; 
  } 
  else { } 
  $zaehler++; 
  } 
  echo "<font color=ff0000>-----------------------------------------------------------------------------------------------------------------------------------</font><br>"; 
  ######## 
} 
Stream($chatuser,$chatroom); //stream starten 
//stream beendet.. 
sleep(5); 
if (connection_aborted()) { 
  $db->query("SELECT active FROM ".$chatprefix."chatusers WHERE nick = '$chatuser'"); 
  $db->next_record(); 
  $aktiv=$db->record[active]; 
  if ($aktiv == 1) { 
   $jetzt = mktime(); 
   $db -> query("UPDATE ".$chatprefix."chatusers SET streamabort='$jetzt' WHERE nick='$chatuser'"); 
  } 
} 
$db10->close(); 
$db_guest_mins->close(); 
$db5->close(); 
$db6->close(); 
$db2->close(); 
$db->close(); 
} else { 
echo "Fehler, Chatid Stimmt nicht mit der Userid überein.<br>Möglicherweise wurde Ihre Verbindung zum Server Unterbrochen, Loggen sie sich Bitte Erneut ein!"; 
} 
?> 
quelle mymazenphp
ich glaube das dies die entscheidenen Zeieln sind

PHP:
$db->query("SELECT id from ".$chatprefix."chatmessages_$chatroom order by id desc limit 1"); 
   $pos=$db->result(); 
   // Mit alter Position vergleichen 
   if($lastpos < $pos) { 
    $query2="SELECT message,user,datum FROM ".$chatprefix."chatmessages_$chatroom WHERE id > $lastpos"; 
    $db->query($query2); 
    // Alle hinzugekommenen MSGs durchlaufen 
    while ($db->next_record()) { 
     $text=stripslashes($db->record[message]); 
     $schreiber=$db->record[user]; 
     #$Text=$text; 
     #INCLUDE"./include/bbcode.php"; 
     #$text=$Text; 
     // Normale MSGs 
     #Hier ignore Script einfügen/by Kaio 
     if($schreiber=="") { 
      $schreiber="drecksverdammel"; 
     } 
     if(eregi($schreiber,$ignorelist)) { 
     } else { 
      if(!eregi("privatemessagestring",$text)) { 
       echo "$text"; 
      } 
      // Private ?>

und das müsste auch noch dazu gehörn

PHP:
<?Stream($chatuser,$chatroom); //stream starten 
//stream beendet.. 
sleep(5); 
if (connection_aborted()) { 
  $db->query("SELECT active FROM ".$chatprefix."chatusers WHERE nick = '$chatuser'"); 
  $db->next_record(); 
  $aktiv=$db->record[active]; 
  if ($aktiv == 1) { 
   $jetzt = mktime(); 
   $db -> query("UPDATE ".$chatprefix."chatusers SET streamabort='$jetzt' WHERE nick='$chatuser'"); 
  } ?>
sorry das ich hier jetzt soviele code gepostet habe wusste aber nicht wei ich das sonst beschreiben soll.
 
370 Zeilen Code hier ein zu klatschen, der noch nicht einmal von Dir stammt, ist einfach nur frech!

Du kannst serverseitig nicht festlegen, dass ein Client-Fenster genau zu einem bestimmten Zeitpunkt aktualisiert werden soll. Entweder lädt sich die Seite selbständig neu, beispielsweise durch ein JavaScript oder Meta-Refresh, oder die Seite lädt ständlig die neuen Daten vom Server.

Von allen Möglichkeiten rate ich Dir aufgrund der zu hohen Serverlastigkeit ab. Einen interessanten Thread zu dem Thema findest Du hier: http://forum.de.selfhtml.org/archiv/2003/3/40634/

snuu
 
aber mit Meta-Refresh kommen die Daten ja 1. nicht dann an wenn sie geschickt werden also erst in 2-3 sek je nach dem wies eingestellt ist und bei dem Chat sieht man nicht das das Fenster neu geladen wird.
Das ganze müsste eigendlich mit Java Script gehen nur ich finde im I-Net nichts dazu
 
Zurück