Pati klase ($db ir mysqli savienojums)<?php
Brīdī, kad vajag izdrukāt kādu ziņojumu, vai vienalga ko, izmantojam
class Messages
{
function create($errorName)
{
$_SESSION['errors'][$errorName] = true;
}
function show()
{
global $db;
if (isset($_SESSION['errors']))
{
foreach ($_SESSION['errors'] as $errorName => $status)
{
$messageHandler = $db->query("SELECT * FROM errors WHERE textid = '$errorName'");
if ($messageHandler->num_rows === 0)
{
//do nothing
}
else
{
$messagePrint = $messageHandler->fetch_object();
$message = $messagePrint->contents;
}
echo $message;
$this->dismiss();
}
}
}
function dismiss()
{
foreach ($_SESSION['errors'] as $errorName => $status)
{
$_SESSION['errors'] = false;
}
}
}
Messages::create('nosaukums');
Pašu kļūdas tekstu, izvilks no datubāzes. Šis tikai ierakstīs sesijā, ka ziņojumam ir jābūt. Tālāk, lapas daļā, kurā gribam rādīt ziņojumus, liekam
Messages::show();
Ziņojums gan tiks parādīts tikai vienu reload pēc Messages::create(), bet to var atrisināt ieliekot redirect'a headeri.
SQL:
SET NAMES utf8; SET foreign_key_checks = 0; SET time_zone = '-05:00'; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; DROP TABLE IF EXISTS `errors`; CREATE TABLE `errors` ( `textid` text COLLATE utf8_latvian_ci NOT NULL, `contents` text COLLATE utf8_latvian_ci NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_latvian_ci;
Laboja SJohnson, labots 1x
0 #127.12.2013. 06:14
Kāds varētu pārlikt pareizajā sadaļā?
+1 #227.12.2013. 09:57
Manuprāt daudz par sarežģītu. Kāpēc tur vispār vajag iesaistīt datubāzi? Vienkārši raksti sesijā paziņojuma tekstu un pēc tam to parādi.