231 lines
5.8 KiB
PHP
231 lines
5.8 KiB
PHP
<?php
|
||
|
||
require_once("shoppingListConfig.php");
|
||
|
||
class DBLink
|
||
{
|
||
static $sqlLink = null;
|
||
|
||
public static function getDbLink()
|
||
{
|
||
if(DBLink::$sqlLink == null)
|
||
{
|
||
DBLink::$sqlLink = new mysqli(Configuration::$mysqlserver, Configuration::$mysqluser, Configuration::$mysqlpw, Configuration::$mysqldb, Configuration::$mysqlPort);
|
||
|
||
// Verbindung überprüfen
|
||
if (mysqli_connect_errno())
|
||
{
|
||
printf("Database connection error:%s\n", mysqli_connect_error());
|
||
exit();
|
||
}
|
||
}
|
||
|
||
return DBLink::$sqlLink;
|
||
}
|
||
}
|
||
|
||
if(isset($_GET['command']) && $_GET['command'] == "printProductList")
|
||
{
|
||
displayProductList();
|
||
exit(0);
|
||
}
|
||
|
||
echo "<html>
|
||
<head>
|
||
<title>Shopping list</title>
|
||
<style type=\"text/css\">
|
||
table
|
||
{
|
||
border-collapse:separate;
|
||
border-spacing:10px 10px;
|
||
}
|
||
|
||
.smallButton
|
||
{
|
||
font-size:10px;;
|
||
height:5000em;
|
||
width:5000em;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>";
|
||
|
||
$command = $_POST['command'];
|
||
|
||
if(isset($command))
|
||
{
|
||
switch($command)
|
||
{
|
||
case "addToList":
|
||
$productId = $_POST['productToAdd'];
|
||
addToList($productId);
|
||
break;
|
||
case "removeFromList":
|
||
$productId = $_POST['productToRemove'];
|
||
removeFromList($productId);
|
||
break;
|
||
case "displayShoppingList":
|
||
displayShoppingList();
|
||
break;
|
||
case "createNewShoppingList":
|
||
createNewShoppingList();
|
||
break;
|
||
}
|
||
}
|
||
|
||
displayShoppingList();
|
||
|
||
echo "</body></html>";
|
||
|
||
mysqli_close(DBLink::getDbLink());
|
||
|
||
|
||
|
||
function addToList($productId)
|
||
{
|
||
if($productId > 0)
|
||
{
|
||
$SQL_command;
|
||
|
||
if(oneListExists())
|
||
$SQL_command = "INSERT IGNORE INTO listEntries (listId, productId) VALUES ((SELECT id FROM `lists` ORDER BY creationTime DESC LIMIT 1), ".$productId.")";
|
||
else
|
||
$SQL_command = "INSERT IGNORE INTO listEntries (listId, productId) VALUES ((INSERT INTO `lists` (creationTime) VALUES (".round(microtime(true) * 1000).") RETURN @id, ".$productId."))";
|
||
|
||
if (DBLink::getDbLink()->query($SQL_command))
|
||
echo "Product added to list.<br>";
|
||
else
|
||
echo "Product could not be added to list.<br>";
|
||
}
|
||
else
|
||
echo "Select a product.";
|
||
}
|
||
|
||
|
||
function removeFromList($productId)
|
||
{
|
||
if($productId > 0)
|
||
{
|
||
if(oneListExists())
|
||
{
|
||
$SQL_command = "DELETE FROM listEntries WHERE listId=(SELECT id FROM `lists` ORDER BY creationTime DESC LIMIT 1) AND productId=".$productId;
|
||
|
||
if (DBLink::getDbLink()->query($SQL_command))
|
||
echo "Product removed from list.<br>";
|
||
else
|
||
echo "Product could not be removed from list.<br>";
|
||
}
|
||
}
|
||
else
|
||
echo "Select a product.";
|
||
}
|
||
|
||
|
||
function oneListExists()
|
||
{
|
||
$SQL_command = "SELECT COUNT(id) as listAmount FROM lists";
|
||
$mysqli_result = DBLink::getDbLink()->query($SQL_command);
|
||
if ($row = mysqli_fetch_object($mysqli_result))
|
||
{
|
||
if($row->listAmount > 0)
|
||
return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
|
||
function displayShoppingList()
|
||
{
|
||
echo " <form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\" onSubmit=\"if(!confirm('Are you sure you want to create a new list?')){return false;}\">
|
||
<input type=\"hidden\" id=\"command\" name=\"command\" value=\"createNewShoppingList\" />
|
||
<input type=\"submit\" value=\"Create new list\" />
|
||
</form>";
|
||
|
||
|
||
echo " <form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">
|
||
<input type=\"hidden\" id=\"command\" name=\"command\" value=\"addToList\" />
|
||
<select name=\"productToAdd\" id=\"productToAdd\">
|
||
<option value=\"0\">Select product to add</option>
|
||
";
|
||
|
||
$SQL_command = "SELECT id, name FROM `products` ORDER BY name ASC";
|
||
$mysqli_result = DBLink::getDbLink()->query($SQL_command);
|
||
while ($row = mysqli_fetch_object($mysqli_result))
|
||
{
|
||
echo "<option value=\"".$row->id."\">".$row->name."</option>";
|
||
}
|
||
|
||
echo " </select>
|
||
<input type=\"submit\" value=\"add\" />
|
||
</form>";
|
||
|
||
if(oneListExists())
|
||
{
|
||
$SQL_command = "SELECT * FROM listEntries INNER JOIN products ON listEntries.productId=products.id INNER JOIN storeTypes ON products.storeTypeId = storeTypes.id WHERE listEntries.listId=(SELECT id FROM `lists` ORDER BY creationTime DESC LIMIT 1) ORDER BY storeTypes.name, products.name ASC";
|
||
|
||
$mysqli_result = DBLink::getDbLink()->query($SQL_command);
|
||
|
||
$lastShop="";
|
||
|
||
while ($row = mysqli_fetch_array($mysqli_result))
|
||
{
|
||
if(isset($lastShop) && $lastShop != "" && $row[7] != $lastShop)
|
||
echo "</table>";
|
||
|
||
if(!isset($lastShop) || $row[7] != $lastShop)
|
||
{
|
||
$lastShop = $row[7];
|
||
echo $lastShop."<br>================";
|
||
echo "<table border=\"0\">";
|
||
}
|
||
|
||
echo "<tr>
|
||
<td style=\"vertical-align:top;\">".$row[3]."</td>
|
||
<td style=\"vertical-align:top;\">
|
||
<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">
|
||
<input type=\"hidden\" id=\"command\" name=\"command\" value=\"removeFromList\" />
|
||
<input type=\"hidden\" id=\"productToRemove\" name=\"productToRemove\" value=\"".$row[1]."\" />
|
||
<input class=\"smallButton\" type=\"submit\" value=\"remove\" />
|
||
</form>
|
||
</td>
|
||
</tr>";
|
||
}
|
||
echo "</table>";
|
||
}
|
||
else
|
||
echo "No list exists, yet.";
|
||
}
|
||
|
||
|
||
function displayProductList()
|
||
{
|
||
$SQL_Befehl = "SELECT name, synonyms FROM products ORDER BY products.name ASC";
|
||
|
||
$mysqli_result = DBLink::getDbLink()->query($SQL_Befehl);
|
||
|
||
$lastShop="";
|
||
|
||
while ($row = mysqli_fetch_array($mysqli_result))
|
||
{
|
||
if(is_null($row[1]))
|
||
echo $row[0]."\n";
|
||
else
|
||
echo "(".str_replace(";", "|", $row[1])."|".$row[0]."):".$row[0]."\n";
|
||
}
|
||
}
|
||
|
||
|
||
function createNewShoppingList()
|
||
{
|
||
$date = new DateTime();
|
||
|
||
$SQL_command = "INSERT INTO lists (creationTime) VALUES (".($date->getTimestamp() * 1000).")";
|
||
|
||
if (DBLink::getDbLink()->query($SQL_command))
|
||
echo "New list has been created.<br>";
|
||
else
|
||
echo "Error creating new list.<br>";
|
||
}
|
||
|
||
?>
|