• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit PHP-Counter

Status
Für weitere Antworten geschlossen.

Dixn

Neues Mitglied
Hi,

weiss nicht ob ich hier rein posten sollte oder in Datenbanken.
Betrifft nämlich beides!
Also,folgendes Problem:
Hab nen php-counter bei mir auf der Page!Hat auch immer wunderbar funktioniert!Doch seit 2 Tagen steht da wo der Counter sonst war nur noch folgendes "MySQL-Query failed".
Ich bin jetzt nicht so der Fachman und hab auch keine Ahnung was das bedeutet.Ich hab aber nix verändert oder so,nur zum Hinweis!

Weiss jmd woran das liegen könnte?
 
das ist eine fehlermeldung des programms mit der man nichts anfangen kann wenn man das programm nicht kennt

vielleicht zeigst du uns mal den php quellcode dann werden wir dir gerne weiterhelfen
 
Code:
@ include_once (dirname(__FILE__)."/config.php");
@ include_once (dirname(__FILE__)."/classes/mysql.php");
@ include_once (dirname(__FILE__)."/classes/template.php");

/**
 * Erstelle zentrale Objekte.
 */
$mysql = new DatenbankVerbindung;
$templ = new Template;

/**
 * Beginne CounterquellCode
 */
$aktuelle_zeit     = time();
$loeschzeit        = $aktuelle_zeit -43200;
$loeschzeit_online = $aktuelle_zeit -300;
$ip_adresse        = $_SERVER["REMOTE_ADDR"];
$zeit_gestern      = $aktuelle_zeit -86400;
$stunde_frueher    = $aktuelle_zeit-3600;

/**
 * Raeume Datenbank auf.
 */
$delete_old_entries = $mysql->sql_qry("DELETE FROM ".LOGGINGTABLE."
									    WHERE deletestamp<".$loeschzeit);
									    
$delete_user_offline = $mysql->sql_qry("DELETE FROM ".ONLINETABLE."
										WHERE datum <".$loeschzeit_online);

/**
 * Beginne Selektion fuer die Ausgabe
 */
$ip_query = $mysql->sql_qry("SELECT COUNT(ip)
								FROM ".LOGGINGTABLE."
								WHERE ip='$ip_adresse' AND deletestamp>".$stunde_frueher );


$ip_existent = mysql_result($ip_query, 0);

$daten = $mysql->sql_fetch("SELECT * FROM ".HITTABLE);


if ($ip_existent == 0) {
	if (isset ($_SERVER['REMOTE_HOST'])) {
		
		$host = $_SERVER['REMOTE_HOST'];
	} else {
		
		$host = gethostbyaddr($ip_adresse);
	}

	$browseragent = $_SERVER['HTTP_USER_AGENT'];

	$insert_user = mysql_query("INSERT INTO ".LOGGINGTABLE." (deletestamp, ip, host, agent)
								VALUES ('$aktuelle_zeit', '$ip_adresse', '$host','$browseragent')");
								
								
	$datum_aktuell = date("d.m", $aktuelle_zeit);
	$datum_letzter_user = date("d.m", $daten['datumheute']);
	
	
	if ($datum_aktuell != $datum_letzter_user) {

		$datum_gestern = date("d.m", $zeit_gestern);


		if ($datum_letzter_user == $datum_gestern) {
			
			$update_neuer_tag = $mysql->sql_qry("UPDATE ".HITTABLE." 
														  SET besucher=besucher+1,
														  	gestern='".$daten['heute']."', 
														  	heute='1', 
														  	datumheute='$aktuelle_zeit'");
		} else {
			
			$update_neuer_tag_alternativ = $mysql->sql_qry("UPDATE ".HITTABLE." 
																SET besucher=besucher+1, 
																	gestern='0',
																	heute='1',
																	datumheute='$aktuelle_zeit'");
		}
		
		
	} else {
		
		$update_neuer_user = $mysql->sql_qry("UPDATE ".HITTABLE." 
												SET besucher=besucher+1,heute=heute+1");
	}
}

$stand_heute = $daten['heute'];


if ($daten['gestern'] > $daten['maxaday']) {

	$updatemaxaday = $mysql->sql_qry("UPDATE ".HITTABLE."
									  	  SET maxaday='".$daten['gestern']."',
									  	  maxadaydate='$zeit_gestern'");
}

$user_online = mysql_result($mysql->sql_qry("SELECT COUNT(id) 
												FROM ".ONLINETABLE."
												WHERE  ip='$ip_adresse'"), 0);

if ($user_online == 0) {
	
	$insert_user = $mysql->sql_qry("INSERT INTO ".ONLINETABLE." (ip,datum) 
									 	VALUES('$ip_adresse','$aktuelle_zeit')");
}

$user_gesamt_online = mysql_result($mysql->sql_qry("SELECT COUNT(id) 
														FROM ".ONLINETABLE.""), 0);

if ($user_gesamt_online > $daten['maxon']) {
	
	$updatemaxon = mysql_query("UPDATE ".HITTABLE."
									SET maxon='$user_gesamt_online'");
}

$datum_tages_maximum = date("d.m.Y",$daten['maxadaydate']);

/**
 * Binde Template ein.
 */
  eval($templ->tmp_compile(dirname(__FILE__)."/counterstyle.html",0));


$mysql->sql_close();
?>
 
sorry,hoffe jetzt hab ich alles :D

Code:
class DatenbankVerbindung {

	var $countqry = 0;
	var $conn;

	function DatenbankVerbindung() {
		$this->conn = @ mysql_connect(MYSQL_HOST, MYSQL_LOGIN, MYSQL_PASSWORD) or die("<center>[b]ERROR[/b]: <span style=\"color: #FF0000;\">MySQL - Connect fehlgeschlagen</span>");
		@ mysql_select_db(MYSQL_DATABASE, $this->conn) or die("<center>[b]ERROR[/b]: <span style=\"color: #FF0000;\">Datenbank konnte nicht ausgewählt werden</span>");
	}

	function sql_qry($sql, $error = true) {
		$query = @ mysql_query($sql);
		if (!$query && $error)
			die($this->error($sql));
		$this->countqry++;
		return $query;
	}

	function sql_fetch($sql, $error = true) {
		$query = @ mysql_query($sql, $this->conn);
		if (!$query && $error)
			die($this->error($sql));
		$this->countqry++;
		return mysql_fetch_array($query);
	}
	function get_qrys() {
		return $this->countqry;
	}

	function sql_close() {
		mysql_close($this->conn);
	}

	function error($sql) {
		return "[b]<span style=\"color: #FF0000;\">MySQL - Query failed[/b]</span>";
	}
}
?>
 
Code:
   function error($sql) {
      return "[b]<span style=\"color: #FF0000;\">MySQL - Query failed[/b]</span>";
   }

ersetz das mal duch
Code:
   function error($sql) {
      return "[b]$sql[/b]";
   }
 
Also hab das abgeändert und dann steht da folgendes:

DELETE FROM cs_onlinetable WHERE datum <1145194325

Also auch noch nicht korrekt...
Mal ne Frage:Kann das vielleicht auch was mit dem Websever zutun haben?Weil die haben mir irgendwas von routing issues geschrieben.Verstehe aber nicht alles weil das englisch ist und da bin ich nicht so fit!
 
ja die mail kannst du ja auch mal hier reintuen. und die funtion error machst du mal so :
hat es etwas mit PHP 5 zu tuen? dann ist das problem klar ;)

ansonsten mach mal
Code:
 return mysql_error($this->conn);

in der function error ()
 
@ niklasboelter

Also,habs mal Probiert aber dann kommt folgendes:

Can't open file: 'cs_onlinetable.MYI'. (errno: 145)

Der labert immer was von dieser onlinetable.....hmmm!

Hier mal die Mail vom Webhoster:


We have been made aware of a routing issue in Europe. This causes slow transfer speeds for approximately 5% of users in United Kingdom, the Netherlands and a small number of users in other European countries.

This is a problem that is not related directly to Servage but is a routing problem on the Internet. We are however working hard with the ISPs to get the issue resolved.

Most of customers and Internet users are not affected by this we just felt that informing you was the right thing to do. No work is required on your part.


We apologize for the inconvenience!


Also was alles komisch ist,dass ich wirklich im Quellcoder des Counters oder an der datenbanken geändert habe!Eigentlich kann das doch nur am Webserver liegen oder?[/quote]
 
Die Datenbank Datei ist nicht lesbar. [== Kaputt?] ich denke du solltest deinen Provider informieren damit er mal mit myisamchk über deine tabellendatei "cs_onlinetable.MYI" in deinem Datenbank Verzeichnis geht.

mit PHP ist da wohl kaum was zu machen.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben