PHP Virtueller "Piepser" - Need Help . . .

david96

Ensign
Dabei seit
März 2007
Beiträge
218
Hey,

ich plane derzeit einen virtuellen "Piepser" (im Reallife verwendet von Feuerwehr etc.)

Zuerst soll man sich einloggen. Man soll in der Leitstelle Einsatzstichwort etc. eingeben und auf Abschicken klicken, der "Piepser" beim Client soll, sobald ein Einsatz da ist die Daten die in der LST eingegeben wurden anzeigen und zusätzlich einen Sound abspielen (immer der selbe). Dieser soll sich wiederholen. Nach einen Klick auf einen Button beim Client soll der ganze Spuk auffhören :evillol:, heißt: Beim User werden die Daten ausgeblendet, der Sound wird nicht mehr abgespielt, und die LST erhält eine Meldung mit dem Usernamen, dass er den Alarm bestätigt hat.

So, ich kann zwar ein ganz kleines bisschen PHP & MySQL, aber zuerst einmal müsste ich ein paar Theorien wissen wie das überhaupt geht (also erstmal noch gar keine Codebeispiele^^)

Greetz und Danke,

David
 

Enigma

Captain
Dabei seit
Apr. 2004
Beiträge
3.169
Ich würds so lösen:


Du hast in der Datenbank eine Tabelle für Benutzer. Folgende Felder hat die Tabelle:
- id: interner eindeutiger name für den benutzer
- benutzername
- passwort

Und noch eine Tabelle für Alarme. Folgende Felder hat die Tabelle:
- id: interner eindeutiger name für den alarm
- datum_erstellt: wann wurde er erstellt
- datum_erledigt (NULL): wann wurde er als erledigt gekennzeichnet
- benutzer_erledigt (NULL): verweis auf benutzer: wer hat den alarm als erledigt gekennzeichnet

Nun baust du eine Anwendung die nur registrierte Benutzer auf eine Seite lässt. Die Seite überprüft, ob in der Tabelle für Alarme ein Eintrag vorhanden ist, der noch nicht als erledigt gekennzeichnet wurde (Anhand des Felds datum_erledigt). Falls ja, lässt du ein MP3 im hintergrund abspielen. Alle 30 Sekunden lädt sich die Seite erneut. Dadurch hast du den Alarm permanent an.
Nun gibt es einen Link, der den Alarm deaktiviert. Dieser Link zeigt auf ein weitere Seite die beim Aufruf Zeitpunkt (datum_erledigt) und Benutzer (benutzer_erledigt) speichert, welcher den Alarm deaktiviert hat. Anschließend wird man auf die Alarm-Seite weitergeleitet.
Auf der Alarmseite wieder angekommen wird erneut in der Datenbank nach einem Alarm gesucht - aber findet keinen. Daher ist der Alarm aus. Alle anderen Benutzer, welche diese Seite haben, sehen spätestens nach dem Reload in 30 Sekunden dass der Alarm erledigt ist-

Plan B: 1€ Jobber ins Rechenzentrum setzen und ne Videokamera und Telefon aufstellen :D
 
Zuletzt bearbeitet:

TchiboMann

Lt. Commander
Dabei seit
Feb. 2006
Beiträge
1.418
@enigma

du vergisst bei deiner Tabelle für Alarme eine Sache: Du hast n-Anzahl an Nutzer. Sobald EINER von ihnen den Alarm als "erledigt" markiert, ist er praktisch für alle markiert. Die Nullmethode sollteste nich nehmen, da denk ich empfiehlt sich eher ein serialisiertes Array mit allen Benutzern, die den Alarm als "erledigt" markiert haben.


@david96

Ich weiss zwar im Groben, worauf du hinaus willst. Du willst einen Alarm an alle in der Datenbank gespeicherten Nutzer eine Alarmmessage senden, die solange Alarm schlägt bis der Nutzer manuell auf "erledigt" klickt.

Soweit so gut.


Aber: Wofür genau brauchst du soetwas? Wie willst du deinen Client erreichen? Sollen die Alarmmeldungen im Browser, auf nem Handy oder wo angezeigt werden?

Das Problem an der Sache ist folgende: Du kannst einen solchen "Piepser" nur "statisch" machen, deine Clienten müssen selbst AKTIV dafür sorgen, dass sie den Alarm enthalten. PHP selbst kann niemanden über irgendetwas informieren, sofern dies nicht "statisch" passieren soll - also beispielsweise per manuellem Seitenaufruf des Users oder eMailversand. Jemanden dynamisch informieren ohne Zeitverzögerung und hinzutun des Clienten selbst ist per PHP nicht realisierbar. Ausnahme: Du zwingst deine Nutzer die ganze Zeit vorm Bildschirm zu hocken, den Browser und die entsprechende Website offen zu haben, die sich alle paar sekunden refresht.

Grundsätzlich kannst du Sound z.B. per verstecktem Flashplayer oder einem Mediaplayer Objekt einbinden. Das zwingt den User allerdings auch gleichzeitig entsprechende Browserplugins zu installieren.
 

david96

Ensign
Ersteller dieses Themas
Dabei seit
März 2007
Beiträge
218
Es geht hier um ein "Funkspiel". Hierbei wird übers Internet (Teamspeak) das Funken von Feuerwehr etc. für die Realität geübt.

Das ganze soll im Browser laufen. Ich hatte schon mal so ein Teil in PHP, da wurde allerdings nur der Sound abgespielt. Dass die User die mitmachen Plugins installieren müssen ist kein Problem. Damals wurde die Seite einfach alle 15 Sekunden per HTML refresht. Die Page muss dann halt in einem extra Fenster oder Tab offen bleiben, dass ist schon ok.
 
C

carom

Gast
Per XMLHTTPRequest kann er doch alle X Sekunden den Piepser aktualisieren, und zwar ohne die Seite refreshen zu müssen. Der ruft das serverseitige PHP-Script auf, welches den SQL-Query durchführt und die Parameter zurückliefert. Das abschalten des Pieptons ist dann Clientsache.

Schau dir mal jQuery an. Kein selbst aktiv sein, kein aktualisieren der Seite, kein Flash, einfach nur die Seite im Browser offen haben.
 

te one

Lt. Commander
Dabei seit
Apr. 2009
Beiträge
1.102
hab auch schonmal über genau des gleiche für die feuerwehr/jugendfeuerwehr nachgedacht!

ich würds auch so ähnlich wie Enigma machen, aber:
in der users-Tabelle würd ich noch was mit deactivation_time odda so machen, wo dann ein timestamp eingefügt wird, wenn der user auf nen bestimmt link klickt (zum deaktivieren)
Der alarm braucht dann natürlich auch nen timestamp!

Somit sucht er dann (wenn er eingeloggt ist) in der alarm-tabelle ob es einen alarm gibt, wo der timestamp höher ist, als der deactivation-timestamp des users! wenns nen neueren alarm gibt, dann den ton ausgeben und nen link der den deactivation-timestamp erneuert! ansonst einfach nur halt anzeigen dass es keinen alarm gibt!

(1€-jobbler ist natürlich auch ne methode, abba schon n bissl blöde idee^^)

Abba mal zum feuerwehrtechnischen part:
Also ich weiß nicht wies bei euch mit sirene etc. ist, abba bei uns geht die sirene bei jedem einsatz der feuerwehr! problem ist nur dass man se nur sehr schlecht hört!

Feuerwehr sollte 10 mins nach der alarmierung am einsatzort eintreffen:

-Auslösen des Alarms
-Alarm geht durch Zentrale
-Sirene ertönt (sind geschätzte 30 sekunden)
-Kommandant oda so mit richtigem piepser geht auf die seite zum versenden eines alarms und hämmert das dann da rein etc. (dauert ca. 45 sekunden)
-Da der, der des geschrieben hat ja auch zum fw-haus will, fährt er jetzt hin (anfahrtszeit sind mal so ca. 2mins)
-hüft in seine klamotten (zwischen 30 sek und 1 min)
-fährt zum einsatzort!

Das ganze wird aber noch sehr stark dann verzögert, dadurch, dass die feuerwehrleute sagen wir mal (je nachdem wie oft refresht wird) erst nach 15sekunden den alarm hören! dann schließen die ihr game des se grad zocken....

worauf ich hinaus will:
n richtiger piepser ist da schon besser!
aba wenn mehrere aus feuerwehr (oda halt andere organisation) öfter am pc sind und keinen piepser haben und die sirene net hören würden, is es eigentlich schon ne gute idee!


ps: wenns fertig ist, wärs schön wenn du mir mal nen link geben könntest, würds mir gern mal anschauen, da ich auch schon überlegt habe sowas zu machen

achja noch ne frage: wie oft habt ihr denn nen einsatz? denn wenns nur so 2mal im jahr ist oda so sind die meisten eh zu faul jedesmal den "virtuellen piepser" zu öffnen
Ergänzung ()

hab sowas ähnliches für übungen bei meiner jugendfeuerwehr gemacht!
übungen schreibe ich in eine DB und dann wird automatisch immer die aktuelle übung genommen angezeigt, und ein countdown erstellt! würde man da noch nen ton dazu machen, hätte man schon sowas ähnliches wie du willst (natürlich muss noch refresh etc. rein)
 
Top