PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   letzter Eintrag zu 4 verschiedenen Werten (http://www.selfphp.de/forum/showthread.php?t=24647)

urvater 24.04.2012 15:16:22

letzter Eintrag zu 4 verschiedenen Werten
 
Wir haben zur Zeit 4 Brandmeldeanlagen. Wird in den Räumen gearbeitet müssen diese vorübergehend ausgeschaltet werden um einen Fehlalarm zu vermeiden.
Da wir im Schichtdienst arbeiten, kann es sein, dass eine Anlage ausgeschatet ist und diese später von jemand Anderem wieder eingeschaltet werden muss. Damit jeder schnell den Zustand der einzelnen Anlagen erkennen kann, habe ich ein kleines Tool in unsere interne Seite eigearbeitet. Dies zeigt lediglich grafisch den Zustand on(grüner Haken) oder off(rotes X) an.

Zur Zeit frage ich zu jeder Brandmeldeanlage(rz) den letzten Eintrag ab und setze entsprechend die Grafiken.

Ich würde gern die 4 Selects gegen einen austauschen. Allerdings hab ich bislang noch keine Lösung gefunden. Entweder gibt es sie so nicht oder ich komm einfach nicht drauf.

gewünschtes Ergebnis
rz|zustand
1 |on
2 |on
3 |off
4 |on

Hat da jemand für mich den entscheidenen Hinweis zur richtigen Lösung?

Tabelle
PHP-Code:

-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- 
Hostlocalhost
-- Erstellungszeit24. April 2012 um 14:03
-- Server Version5.1.41
-- PHP-Version5.3.1

SET SQL_MODE
="NO_AUTO_VALUE_ON_ZERO";

--
-- 
Datenbank: `1stweb`
--

-- --------------------------------------------------------

--
-- 
Tabellenstruktur für Tabelle `brandmeldeanlage`
--

CREATE TABLE IF NOT EXISTS `brandmeldeanlage` (
  `
idint(15NOT NULL AUTO_INCREMENT,
  `
u_idint(6NOT NULL,
  `
datumdatetime NOT NULL,
  `
angeordnetvarchar(30CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
  `
ausgefuehrtvarchar(30CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
  `
rzset('1','2','3','4'CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
  `
zustandenum('on','off'CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
  `
bemerkungtext CHARACTER SET latin1 COLLATE latin1_german1_ci,
  
PRIMARY KEY (`id`)
ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=118 ;

--
-- 
Daten für Tabelle `brandmeldeanlage`
--

INSERT INTO `brandmeldeanlage` (`id`, `u_id`, `datum`, `angeordnet`, `ausgefuehrt`, `rz`, `zustand`, `bemerkung`) VALUES
(141'2011-04-08 09:20:12''Herrn L''B, I.''1''off'''),
(
241'2011-04-08 09:41:48''L''M U''1''on'''),
(
350'2011-04-11 09:43:30''M''M , U''2''off'''),
(
447'2011-04-11 15:26:46''Hern M''F E''2''on''15:15 Uhr'),
(
544'2011-04-13 09:13:49''H.G''A G''2''off'''),
(
615'2011-04-13 14:23:21''H.G''C. B''2''on'''),
(
715'2011-04-21 09:44:04''V L''C B''1''off'''),
(
815'2011-04-21 10:55:52''V L''U M''1''on'''),
(
950'2011-04-27 08:57:20''Herr G''U. M''2''off'''),
(
1050'2011-04-27 11:28:13''Herr G''U. M''2''on'''),
(
1138'2011-05-05 09:08:53''G''K''2''off'''),
(
1238'2011-05-05 09:56:15''G''K''2''on'''),
(
1350'2011-05-11 09:21:16''G''M''2''off''9:15 Uhr'),
(
1450'2011-05-11 13:38:26''Herr G''M''2''on''13:35 '),
(
1550'2011-05-16 13:45:42''Herr G''M''1''off''abgeschaltet 13:30'),
(
1644'2011-05-16 15:46:13''G''G''1''on'''),
(
1745'2011-05-17 09:26:26''Herr G''Herr A''1''off''Abgeschaltet um 09:15Uhr'),
(
1845'2011-05-17 09:26:26''Herr G''Herr A''2''off''Abgeschaltet um 09:15Uhr'),
(
1937'2011-05-17 14:09:41''Hr. G''Hr. G''1''on'''),
(
2037'2011-05-17 14:09:41''Hr. G''Hr. G''2''on'''),
(
2137'2011-05-17 14:14:02''Hr. G''Hr. W''1''on''um 14:00 Uhr'),
(
2237'2011-05-17 14:14:02''Hr. G''Hr. W''2''on''um 14:00 Uhr'),
(
2354'2011-05-23 09:35:28''M''K''2''off''RZ 2 Ausgeschaltet um 9:25'),
(
2438'2011-05-23 10:53:05''M''K''2''on'''),
(
2515'2011-06-01 08:54:47''H''B''2''off'''),
(
2645'2011-06-01 17:38:15''Herrn G''Herrn A''2''on'''),
(
2747'2011-06-03 12:53:29''Herrn H''Frank E''2''off''Ausgeschaltet um 12:50 Uhr'),
(
2841'2011-06-03 14:18:17''Hrn. H''I. B''2''on''Schleife 2 wieder eingeschaltet'),
(
2924'2011-06-08 14:47:11''Herr P''Herr W''1''off'''),
(
3039'2011-06-08 15:41:29''P''W''1''on'''); 

Ich hab einmal die ersten 30 Einträge mitgenommen. Leider fehlen hierbei Einträge zu rz3 und rz4. Namen wurden auf Buchstaben reduziert. Die Einträge zu den einzelnen Anlagen gehören selten zusammen, da innerhalb der Räume selten gleichzeitig gearbeitet wird. Es können Tage, Wochen oder auch Monate keine Einträge zu einer Anlage gemacht werden.

vt1816 24.04.2012 17:36:33

AW: letzter Eintrag zu 4 verschiedenen Werten
 
Tipp: UNION

meikel (†) 24.04.2012 18:44:03

AW: letzter Eintrag zu 4 verschiedenen Werten
 
Zitat:

Zitat von urvater (Beitrag 143309)
Hat da jemand für mich den entscheidenen Hinweis zur richtigen Lösung?

Deine Tabelle ist ein Tagebuch, Du suchst aber die aktuelle Stellung von vier Schaltern. Natürlich kannste mit einigen Klimmzügen (4* SELECT oder ein SELECT mit subselects) aus dem Tagebuch die jünsten Schalterstellungen rausfischen - ich vertrete allerdings die Auffassung, daß Daten, die häufig nur gelesen werden, schnell verfügbar sein sollten/könnten.

Ansatzpunk ist das Script, welches das "Schalter an/aus" Formular auswertet. Dieses Script könnte die sich daraus ergebende aktuelle Lage separat speichern. Geeignete Kandidaten wären:
http://www.php.net/var_export

PHP-Code:

<?php
# Auswertung des Formulars und schreiben des Tagebuchs

include 'schalter.php';
for (
$nummer 1$nummer <= 4$nummer++)
  
$schalter[$nummer] = empty($_POST['schalter_' $nummer]) 
    ? 
false
    
true;

file_put_contents('schalter.php''<?php' "\n" '$schalter = ' var_export($schalter) . ";\n" '?>');

echo 
fettich;
?>

Einfacher wäre
http://www.php.net/serialize
http://www.php.net/unserialize

PHP-Code:

<?php
#lesen:
$schalter unserialize(file_get_contents('schalter.dat'));
# bearbeiten

# schreiben
file_put_contents(serialize($schalter));
?>


urvater 24.04.2012 20:27:52

AW: letzter Eintrag zu 4 verschiedenen Werten
 
@vt1816 Muß ich mal schauen ob ich damit mein gewünschtes Ergebnis bekomme.

@meikel
Wenn ich dich richtig verstanden habe, würdest du die Nutzung einer einfachen Datei vorziehen, in der lediglich die einzelnen RZ mit dem aktuellen Zustand hinterlegt sind.

Sprich ich hätte eine einfache und schnelle Ausgabe bei der permanent, vorhandenen Übersicht über die Anlagen ohne eine DB Verbindung mit dem/den entsprechenden Select/s nutzen zu müssen.
Müsste dafür aber nach einem Eintrag in die DB dies auch in die Datei schreiben.

Da innerhalb von ca. einem Jahr gerade einmal 111 Einträge gemacht wurden und die Seite selbst pro Tag mehrmals von unterschiedlichen Personen aufgerufen wird, scheint dies dann wohl doch der leichtere Weg zu sein.

Ich danke euch beiden.

meikel (†) 25.04.2012 03:56:11

AW: letzter Eintrag zu 4 verschiedenen Werten
 
Zitat:

Zitat von urvater (Beitrag 143314)
Wenn ich dich richtig verstanden habe, würdest du die Nutzung einer einfachen Datei vorziehen, in der lediglich die einzelnen RZ mit dem aktuellen Zustand hinterlegt sind.

Ja. Noch schneller wären nur noch semphor files:
on -> file erzeugen
off -> file löschen

Zitat:

Müsste dafür aber nach einem Eintrag in die DB dies auch in die Datei schreiben.
Korrekt. Ein
PHP-Code:

ignore_user_abort(true); 

verhindert den vorzeitigen Scripttod bevor das file komplettiert wurde.

urvater 25.04.2012 15:07:53

AW: letzter Eintrag zu 4 verschiedenen Werten
 
Zitat:

Zitat von meikel (Beitrag 143317)
Ein
PHP-Code:

ignore_user_abort(true); 

verhindert den vorzeitigen Scripttod bevor das file komplettiert wurde.

Guter Hinweis. Das Risiko ist zwar in meinem Fall recht gering, dass so etwas vorkommt aber es existiert.


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:30:59 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.