von Frank S. » Mi 31. Jul 2024, 04:05
Hallo Stefan,
ich selbst verwende die Funktion zwar nicht, als ich aber gerade dabei war Alex in einem anderem Post die Funktion zu erklären ist mir ein Bug aufgefallen:
Setzen der Nachricht funktioniert, Löschen der Nachricht funktioniert, Überschreiben einer Nachricht funktioniert nicht:
Original Code:
Bei UPDATE %work&% anstatt %work%
Irgendwie stimmt was mit intval und dem fetched result nicht. "$res['msgnumber'] == 0" ist so immer 0 auch wenn bereits eine Nachricht gesetzt wurde.
Code: Alles auswählen
private function setWaiterMessage($waiterMessage) {
try {
$msg = trim($waiterMessage);
$pdo = DbUtils::openDbAndReturnPdoStatic();
if ($msg == "") {
CommonUtils::execSql($pdo, 'DELETE FROM %work% WHERE item=?', array('waitermessage'));
} else {
$sql = "SELECT COUNT(item) as msgnumber from %work% where item=?";
$res = intval(CommonUtils::fetchSqlAll($pdo, $sql, array('waitermessage')));
if ($res['msgnumber'] == 0) {
CommonUtils::execSql($pdo, 'INSERT INTO %work% (item,value) VALUES(?,?)', array('waitermessage',$msg));
} else {
CommonUtils::execSql($pdo, "UPDATE %work&% SET value=? WHERE item=?", array($msg,'waitermessage'));
}
}
echo json_encode(array("status" => "OK","msg" => $waiterMessage));
} catch (Exception $e) {
echo json_encode(array("status" => "ERROR","msg" => "Error: " . $e->getMessage()));
return;
}
}
Verbesserter Code (keine Garantie, bei mir geht es so aber):
Code: Alles auswählen
private function setWaiterMessage($waiterMessage) {
try {
$msg = trim($waiterMessage);
$pdo = DbUtils::openDbAndReturnPdoStatic();
if ($msg == "") {
CommonUtils::execSql($pdo, 'DELETE FROM %work% WHERE item=?', array('waitermessage'));
} else {
$sql = "SELECT COUNT(item) as msgnumber from %work% where item=?";
$res = CommonUtils::fetchSqlAll($pdo, $sql, array('waitermessage'));
$msgnumber = intval($res[0]['msgnumber']);
if ($msgnumber == 0) {
CommonUtils::execSql($pdo, 'INSERT INTO %work% (item,value) VALUES(?,?)', array('waitermessage',$msg));
} else {
CommonUtils::execSql($pdo, "UPDATE %work% SET value=? WHERE item=?", array($msg,'waitermessage'));
}
}
echo json_encode(array("status" => "OK","msg" => $waiterMessage));
} catch (Exception $e) {
echo json_encode(array("status" => "ERROR","msg" => "Error: " . $e->getMessage()));
return;
}
}
Gruß Frank
Hallo Stefan,
ich selbst verwende die Funktion zwar nicht, als ich aber gerade dabei war Alex in einem anderem Post die Funktion zu erklären ist mir ein Bug aufgefallen:
Setzen der Nachricht funktioniert, Löschen der Nachricht funktioniert, Überschreiben einer Nachricht funktioniert nicht:
[color=#FF0000]Original Code:[/color]
[color=#FF0000]Bei UPDATE %work&% anstatt %work%[/color]
[color=#FF0000]Irgendwie stimmt was mit intval und dem fetched result nicht. "$res['msgnumber'] == 0" ist so immer 0 auch wenn bereits eine Nachricht gesetzt wurde.[/color]
[code]
private function setWaiterMessage($waiterMessage) {
try {
$msg = trim($waiterMessage);
$pdo = DbUtils::openDbAndReturnPdoStatic();
if ($msg == "") {
CommonUtils::execSql($pdo, 'DELETE FROM %work% WHERE item=?', array('waitermessage'));
} else {
$sql = "SELECT COUNT(item) as msgnumber from %work% where item=?";
$res = intval(CommonUtils::fetchSqlAll($pdo, $sql, array('waitermessage')));
if ($res['msgnumber'] == 0) {
CommonUtils::execSql($pdo, 'INSERT INTO %work% (item,value) VALUES(?,?)', array('waitermessage',$msg));
} else {
CommonUtils::execSql($pdo, "UPDATE %work&% SET value=? WHERE item=?", array($msg,'waitermessage'));
}
}
echo json_encode(array("status" => "OK","msg" => $waiterMessage));
} catch (Exception $e) {
echo json_encode(array("status" => "ERROR","msg" => "Error: " . $e->getMessage()));
return;
}
}
[/code]
[color=#00BF00]Verbesserter Code (keine Garantie, bei mir geht es so aber):[/color]
[code]
private function setWaiterMessage($waiterMessage) {
try {
$msg = trim($waiterMessage);
$pdo = DbUtils::openDbAndReturnPdoStatic();
if ($msg == "") {
CommonUtils::execSql($pdo, 'DELETE FROM %work% WHERE item=?', array('waitermessage'));
} else {
$sql = "SELECT COUNT(item) as msgnumber from %work% where item=?";
$res = CommonUtils::fetchSqlAll($pdo, $sql, array('waitermessage'));
$msgnumber = intval($res[0]['msgnumber']);
if ($msgnumber == 0) {
CommonUtils::execSql($pdo, 'INSERT INTO %work% (item,value) VALUES(?,?)', array('waitermessage',$msg));
} else {
CommonUtils::execSql($pdo, "UPDATE %work% SET value=? WHERE item=?", array($msg,'waitermessage'));
}
}
echo json_encode(array("status" => "OK","msg" => $waiterMessage));
} catch (Exception $e) {
echo json_encode(array("status" => "ERROR","msg" => "Error: " . $e->getMessage()));
return;
}
}
[/code]
Gruß Frank