Habs gemacht und es funktioniert.
Allerdings wenn ich ein Befehl ausführe, funktionierts nur nach dem ausführen kommt noch ein Server: Unknown Command hinzu abwohl es funktioniert.
Habs gemacht und es funktioniert.
Allerdings wenn ich ein Befehl ausführe, funktionierts nur nach dem ausführen kommt noch ein Server: Unknown Command hinzu abwohl es funktioniert.
Das habe ich übersehen, danke.
Könnte ich theoretisch OnPlayerCommandText zu OnPlayerCommandReceived ersetzen?
Ich habe mal eine Frage, seit dem ich in meinen Script zCMD includiert habe, gehen alle anderen Befehle nicht die in OnPlayerCommandText geschrieben sind, das sind ALLE Server Befehle. Es funktionieren seit dem nur die zCMD Befehle. Woran liegt es und wie behebe ich es?
Liebe Grüße
Hallo Brotfische,
wie das Thread-Titel schon sagt, wird ein White-Screen angezeigt sobald die Function $this->_readCountyByPlace() mit aufgerufen wird.
Das System ist die erste Version einer neuen GEO-API von mir.
Kompletter Script:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
class GeoApi
{
private $db;
private $get_plz = NULL;
private $get_debug = NULL;
private $get_city_id = NULL;
private $city_id;
private $state_id; //Bundesland
private $county_id; //Kreis
private $lat;
private $lng;
private $plz_exist;
private $o_place;
private $state;
private $county;
function __construct()
{
require_once 'system/classes/db.class.php';
$this->db = new Database;
}
public function input ($get)
{
$this->get_plz = (isset($get['plz'])) ? $get['plz'] : NULL;
$this->get_debug = (isset($get['debug'])) ? $get['debug'] : NULL;
$this->get_city_id = (isset($get['city_id'])) ? $get['city_id'] : NULL;
$this->_readCityByZip();
$this->placeByCityId();
$this->_readStateByPlace();
$this->_readCountyByPlace(); // <== Das ist mein Problemkind!
if($this->get_debug!=NULL) {
if($this->get_plz!=NULL) {
return $this->DebugPLZ();
} elseif($this->get_city_id!=NULL) {
return $this->DebugCity_id();
}
}elseif($this->get_plz!=NULL&&$this->plz_exist==FALSE) {
$array = array("error" => "Die Postleitzahl $this->get_plz existiert nicht");
} else {
$array = array(
"zipcode" => $this->get_plz,
"place" => $this->o_place,
"state" => $this->state,
"county" => $this->county,
"lat" => $this->lat,
"lng" => $this->lng);
}
return json_encode($array);
}
function placeByCityId()
{
try {
$this->db->Query("SELECT * FROM `city` WHERE `id`=:id");
$this->db->bind(':id', $this->city_id);
$this->db->execute();
} catch(PDOException $e) {
die($e->getMessage());
}
$this->o_place = ($this->db->rowCount()==0) ? NULL : $this->db->fetch()->name;
$this->state_id = ($this->db->rowCount()==0) ? NULL : $this->db->fetch()->state_id;
$this->county_id = ($this->db->rowCount()==0) ? NULL : $this->db->fetch()->county_id;
//$this->county_id ($this->db->rowCount()==0) ? NULL : $this->db->fetch()->county_id;
//$this->lat ($this->db->rowCount()==0) ? NULL : $this->db->fetch()->lat;
//$this->lng ($this->db->rowCount()==0) ? NULL : $this->db->fetch()->lng;
//$this->state_id ($this->db->rowCount()==0) ? NULL : $this->db->fetch()->state_id;
}
function _readStateByPlace()
{
if($this->state_id==NULL) {
return false;
} else {
try {
$this->db->Query("SELECT * FROM `state` WHERE `id`=:state");
$this->db->bind(':state', $this->state_id);
$this->db->execute();
} catch(PDOException $e) {
die($e->getMessage());
}
$this->state = ($this->db->rowCount()==0) ? NULL : $this->db->fetch()->name;
}
}
function _readCountyByPlace()
{
if($this->county_id==NULL) {
return false;
} else {
try {
$this->db->Query("SELECT * FROM `county` WHERE `id`=:county");
$this->db->bind(':county', $this->county_id);
$this->db->execute();
}catch(PDOException $e) {
die($e->getMessage());
}
//if($this->db->rowCount()==0) {die('failed');} else(die('okay'));
$this->county = ($this->db->rowCount()==0) ? NULL : $this->db->fetch()->name;
}
}
function _readCityByZip()
{
if($this->get_plz==NULL) {
return false;
} else {
try {
$this->db->Query("SELECT * FROM `zipcode` WHERE `zipcode`=:plz");
$this->db->bind(':plz', $this->get_plz);
$this->db->execute();
}catch(PDOException $e) {
die($e->getMessage());
}
$this->plz_exist = ($this->db->rowCount()==0) ? FALSE : TRUE;
$this->city_id = ($this->db->rowCount()==0) ? 'NULL' : $this->db->fetch()->city_id;
}
}
function DebugPLZ()
{
if($this->get_plz=="") {
$r = array("error" => "Keine Postleitzahl angegeben");
} else {
try
{
$this->db->Query("SELECT * FROM `zipcode` WHERE `zipcode`=:plz");
$this->db->bind(':plz', $this->get_plz);
$this->db->execute();
$r = $this->db->fetch(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
$r = array("error" => $e->getMessage());
}
}
return json_encode($r);
}
function DebugCity_id()
{
if($this->get_city_id=="") {
$r = array("error" => "Keine City_id angegeben");
} else {
try
{
$this->db->Query("SELECT * FROM `city` WHERE `id`=:cityid");
$this->db->bind(':cityid', $this->get_city_id);
$this->db->execute();
$r = ($this->db->rowCount()==0) ? array("error" => "Die City_id $this->get_city_id existiert nicht") : $this->db->fetch(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
$r = array("error" => $e->getMessage());
}
}
return json_encode($r);
}
}
?>
Alles anzeigen
function input wird letztendlich dann in der Index-Datei ausgeführt.
Sobald die function $this->_readCountyByPlace() in der input() auskommentiert wird, funktioniert alles einwandfrei. Ich kann mir den Fehler nicht erklären.
Sofern ich mit die() or echo eine Ausgabe in _readCountyByPlace() erzwinge, wird trotzdem alles andere nicht angezeigt.
Vielleicht habt ihr Fehlerbehebungslösungen die mir weiterhelfen....
array("%". $str ."%")
Danke. Aber jetzt findet er komischerweise KEINE Kunden mehr.
Und ich habe mir selbst eine Datenbank-Klasse geschrieben, bestehend aus PDO. Was ich schon über einen jahr im Einsatz habe. Prepare ist Query() bei mir
Alles anzeigenViel leichter wäre eso so
$login= "SELECT NULL FROM `Accounts` WHERE `Benutzername` = '" . $username . "' AND `Passwort` = '" . $m . "' LIMIT 1";
$res = mysql_query($login);
if(mysql_affected_rows() == 1) {
//Daten richtig
} else {
//Daten falsch
}
Deine Abfrage ist durchaus sinnvoll.
Das macht aber wenig Unterschied.
Da es auch klappen wird wenn @Sean_Caprez statt LIKE, ein = schreiben würde. Weil LIKE findet gern mehrere Accounts die sich vom Namen ähneln.
Moin Brotfische,
hätte nie gedacht das ich wegen einen Simplen LIKE-Befehl in einer Sackgasse stehen würde.
Also ich habe eine Suche in Ajax konzeptiert.
Ausgeführt wird die Methode company().
Script:
<?php
class Ajax
{
public $db;
function __construct()
{
require_once 'db.class.php';
$this->db = new Database;
}
//firma
public function company($str)
{
try
{
$this->db->Query("SELECT * FROM customers WHERE firma LIKE '%$str%'");
$this->db->execute();
if($this->db->rowCount()==0) {return 0;} else {
$f = $this->db->fetchAll();
$r = '';
for($x=1;$x<$this->db->rowCount();$x++) {
$r.= $f[$x]['firma'].'<br />';
}
return $r;
}
} catch(PDOException $e) {
die($e->getMessage());
}
}
}
?>
Alles anzeigen
Problembeschreibung:
Wenn man in der Suche etwas eingibt, gibt MySQL ALLE existierenden Datensätze in der Tabelle aus. Egal welches Zeichen man n der Suche schreibt. Auch Zeichen die in der Datenbank nicht vorhanden sind. Es macht kein Unterschied in welche Anordnung % ist. Es werden immer alle "Kunden" angezeigt.
Laut MySQL was ich nochmal nachgesehen habe denke ich habe ich alles richtig gemacht oder hab ich einen Denkfehler?
Liebe Grüße
Patrick
das ist nicht gefährlich, einfach nur Sinnlos von mir. Was ich nur zu testzwecken was anderen verwendet hatte.
Ich hatte in meiner db.class.php
es jetzt so:
try{
$this->synup = new \PDO($this->dsn, $this->user, $this->pass, $optionen);
$this->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$this->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$this->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
} catch(\PDOException $e)
{
$this->error = $e->getMessage();
die($e->getMessage());
}
Allerdings funktioniert es immernoch nicht
Sorry, total vergessen
[error] [client xx.xxx.xx.xxx] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.' in /var/customers/webs/anzenjo/anzenjo.riows-hosting.net/cc/system/classes/db.class.php:60\nStack trace:\n#0 /var/customers/webs/anzenjo/anzenjo.riows-hosting.net/cc/system/classes/db.class.php(60): PDO->prepare('SELECT * FROM `...')\n#1 /var/customers/webs/anzenjo/anzenjo.riows-hosting.net/cc/system/classes/sessions.class.php(55): Database->Query('SELECT * FROM `...')\n#2 /var/customers/webs/anzenjo/anzenjo.riows-hosting.net/cc/system/classes/PageHandle.class.php(71): Session->UserFetch(37)\n#3 /var/customers/webs/anzenjo/anzenjo.riows-hosting.net/cc/system/classes/PageHandle.class.php(22): PageHandle->PostResponse()\n#4 /var/customers/webs/anzenjo/anzenjo.riows-ho in /var/customers/webs/anzenjo/anzenjo.riows-hosting.net/cc/system/classes/db.class.php on line 60,
Hallo,
ich habe ein dringendes Problem! Also ich schreibe gerade ein System.
PostResponse wird vor dem Template noch ausgeführt
function PostResponse()
{
global $_POST;
if(isset($_POST['LoginResponse'])&&$_POST['LoginResponse']==1) {
$uid = $this->session->AccountExist($_POST['nickname'], $_POST['password']);
if($uid==false) {
$this->page->Assign('response', 'login_not_found');
} else {
exit(var_dump($this->session->UserFetch(37)));
}
}
return;
}
Alles anzeigen
Eine Function in der Session-Klasse
public function UserFetch($userid = 0)
{
$uid = ($userid == 0) ? $this->userid : $userid;
$this->db->Query("SELECT * FROM `accounts` WHERE `userid`=:uid");
$this->db->bind(':uid', $uid);
return var_dump($this->db);
//return $this->db->fetch();
//return ($this->db->rowCount()>0) ? $this->db->fetch() : NULL;
}
Wenn ich es auf dem localhost-Webserver ausführe, geht alles wie es laufen sollte, jedoch wenn es Online ist, bekomme ich ein White-Screen. Es wird wohl immer NULL zurückgegeben.
Ich kann mir den seltsamen Fehler nicht erklären. Kann mir einer Helfen?
Als ich für LyD (Live your Dream) das UCP weiterentwickelt hatte, habe ich ein Control CMD rein geschrieben mit dem man möglichst viele Befehle wie Ingame ausführen kann. Das klappte aus. Nachteil jedoch ist, das der Spieler nicht ingame sein darf.
Bei Bann hatte ich es so geregelt, das ich mit der SAMPQueryAPI den Spieler Kickte und zugleich den Ban verpasste.
Nur mal so am Rande
Dein 2ter MySQL Fehler sagt aus, dass die Spalte hidden in deiner ausgewählen Tabelle nicht existiert.
Gebe einfach mal den Code.
Aber ich rate dir ab, mit PHP MSQL zu arbeiten da es seit glaube PHP5.3 als veraltet gilt und irgendwann von der PHP Liberly entfernt wird. Verwende lieber MySQLi oder PDO
Hallo,
kleines Problem:
Mein Script findet in der Datenbank kein Haus inder Tabelle houses. Abwohl in der Datenbank sich ein haus mit der id 1 befindet.
public mysql_CheckHaus(id)
{
new Query[128], debug4[100];
format(Query, sizeof(Query), "SELECT * FROM houses WHERE id = '%i'", id);
mysql_query(Query);
mysql_store_result();
format(debug4, sizeof(debug4),"Result von %i: %i", id, mysql_num_rows());
print(debug4);
return mysql_num_rows();
}
stock HausLaden()
{
new debug2[400], temp[200];
for(new x=0;x<MAX_HAUS;x++)
{
if(mysql_CheckHaus(x)) {
HausInfo[x][hErstellt] = 1;
/*temp = mysql_GetStr_int("houses", "user", "id", x);
format(HausInfo[x][hUser], 100, "%s", temp);*/
format(HausInfo[x][hUser], 64, "%s", mysql_GetStr_int("houses", "user", "id", x));
format(HausInfo[x][hEnterx], 64, "%f", mysql_GetFloat_int("houses", "enterx", "id", x));
format(HausInfo[x][hEntery], 64, "%f", mysql_GetFloat_int("houses", "entery", "id", x));
format(HausInfo[x][hEnterz], 64, "%f", mysql_GetFloat_int("houses", "enterz", "id", x));
format(HausInfo[x][hIntx], 64, "%f", mysql_GetFloat_int("houses", "intx", "id", x));
format(HausInfo[x][hInty], 64, "%f", mysql_GetFloat_int("houses", "inty", "id", x));
format(HausInfo[x][hIntz], 64, "%f", mysql_GetFloat_int("houses", "intz", "id", x));
HausInfo[x][hInt] = mysql_GetInt_int("houses", "int", "id", x);
HausInfo[x][hMiete] = mysql_GetInt_int("houses", "miete", "id", x);
HausInfo[x][hRent] = mysql_GetInt_int("houses", "rent", "id", x);
HausInfo[x][hGesperrt] = mysql_GetInt_int("houses", "gesperrt", "id", x);
HausInfo[x][hHauskasse] = mysql_GetInt_int("houses", "hauskasse", "id", x);
HausInfo[x][hLevel] = mysql_GetInt_int("houses", "level", "id", x);
HausInfo[x][hMuell] = mysql_GetInt_int("houses", "muell", "id", x);
HausInfo[x][hHaustuer] = mysql_GetInt_int("houses", "haustuer", "id", x);
HausInfo[x][hAddtime] = mysql_GetInt_int("houses", "addtime", "id", x);
HausInfo[x][hVerkauft] = mysql_GetInt_int("houses", "verkauft", "id", x);
format(HausInfo[x][hBeschreibung], 64, "%s", mysql_GetStr_int("houses", "beschreibung", "id", x));
}
if(HausInfo[x][hErstellt]==1)
{
format(debug2, sizeof(debug2), "[Haus] x: %f y: %f z: %f user: %s Müll: %i",HausInfo[x][hEnterx], HausInfo[x][hEntery], HausInfo[x][hEnterz], HausInfo[x][hUser], HausInfo[x][hMuell]);
print(debug2);
} else {
format(debug2, sizeof(debug2), "[Haus] %i LEER",x);
print(debug2);
}
}
print("Häuser geladen!");
return 1;
}
Wo ist da was falsch?
Danke Jeffry, das war das Problem
Hab in angehängt
Deswegen frage ich ja. Was Local geht, sollte auch auf einen Webspace gehen, es seit denn die dateien sind nicht herreichbar oder sonstiges.
Kein geht leider immer noch nicht
Jop alle MySQL-functions von PHP gelten als veraltet, die werden bald auc aus der Libery entfernt.
Ich habe mal eine Datenbank-Klasse in PHP geschrieben was ich zurzeit für mich verwende. Feedback und Änderungsvorschläge gerne!
<?php
class Database
{
private $host = 'localhost';
private $user = 'root';
private $pass = '';
private $dbname = 'palwal';
private $synup;
private $error;
private $stmt;
protected $dsn;
public function viewDB()
{
return $this->dbname;
}
public function close()
{
$this->synup = NULL;
return;
}
public function viewuser() {
return $this->user;
}
public function __deconstruct()
{
$this->close();
}
public function __construct()
{
$this->dsn = 'mysql:host='.$this->host.';dbname='.$this->dbname;
$optionen = array(
\PDO::ATTR_PERSISTENT => false
/*,
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION*/);
try{
$this->synup = new \PDO($this->dsn, $this->user, $this->pass, $optionen);
$this->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$this->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
} catch(\PDOException $e)
{
$this->error = $e->getMessage();
die($e->getMessage());
}
}
public function Query($sql)
{
$this->stmt = $this->synup->prepare($sql);
}
public function errorInfo()
{
$this->stmt = $this->synup->errorInfo();
}
public function errorCode()
{
$this->stmt = $this->synup->errorCode();
}
public function getAttribute($att)
{
$this->stmt = $this->synup->getAttribute($att);
}
public function setAttribute($att, $value)
{
$this->stmt = $this->synup->setAttribute($att, $value);
}
public function bind($param, $value, $type = NULL)
{
if(is_null($type))
{
switch(true)
{
case is_int($value):
$type = \PDO::PARAM_INT;
break;
case is_null($value):
$type = \PDO::PARAM_BOOL;
break;
default:
$type = \PDO::PARAM_STR;
}
}
$this->stmt->bindValue($param, $value, $type);
}
public function execute()
{
return $this->stmt->execute();
}
public function fetchAll()
{
return $this->stmt->fetchAll();
}
public function debug()
{
return $this->stmt->debugDumpParams();
}
public function nextRowset()
{
return $this->stmt->nextRowset();
}
public function resultset()
{
$this->execute();
return $this->stmt->fetchAll(\PDO::FETCH_ASSOC);
}
public function fetch($typ = \PDO::FETCH_OBJ)
{
$this->execute();
return $this->stmt->fetch($typ);
}
public function rowCount()
{
return $this->stmt->rowCount();
}
public function lastInsertId()
{
return $this->synup->lastInsertId();
}
public function columnCount()
{
return $this->stmt->columnCount();
}
public function getColumnMeta($c = 0)
{
return $this->stmt->getColumnMeta($c);
}
public function beginTransaktion()
{
return $this->synup->beginTransaction();
}
public function commit()
{
return $this->synup->commit();
}
public function rollBack()
{
return $this->synup->rollBack();
}
/*public function debug()
{
return $this->stmt->debugDumpParams();
}*/
}
?>
Alles anzeigen
Beispiele
$db = new Database;
$db->Query("SELECT * FROM test WHERE id = 1");
$db->execute();
echo $db->fetch()->testspalte;
$db = new Database;
$testeintrag = 'Ich bin ein Test';
$db->Query("INSERT INTO `test` (`testspalte`) VALUES (:bineinparam)");
$db->bind(':bineinparam', $testeintrag);
$db->execute();
Die Klasse kannst du gern verwenden.
Liebe Grüße
Hast du für Dropdown einen Javascript-Script?