Auteur Topic: PDW en Databases  (gelezen 92450 keer)

0 leden (en 1 gast) bekijken dit topic.

Offline daaan

  • Beginnend Lid
  • **
  • Berichten: 40
PDW en Databases
« Gepost op: 10 januari 2007, 16:08:15 »
PDW met MySql

Allereerst:
Ik ben zelf bekend met PHP en SQL. Kennis hiervan is niet vereist maar wel aan te raden. Ik ga geen PHP uitleggen, alleen hoe je de gegevens IN een database krijgt. Hoewel ik me niet te veel bezig wil houden met het uitleggen van PHP, heb ik sinds 13 oktober 2008 een simpel PHP voorbeeldje toegevoegd, je vind hem verderop.

Mijn beginsituatie:
Het PDW werkt prima met mijn flexbox gold, alles kwam netjes binnen, filteren werkte ook. Ik draai windows XP, op een goede stabiele PC.

Wat ik wou:
- melding op mijn website, realtime
- Een filtering van meldingen, alleen meldingen van locale korpsen.

Hoe, in het kort, is het nu?:
- Meldingen worden gefilterd, op capcode.
- De gefilterde berichten worden direct in de mysql database gezet.

Goed, heel leuk, maar hoe doe ik dat?

Je hebt een database nodig, met een tabel waar gegevens in kunnen. Vrijwel elke website heeft een database in het pakket. Gegevens hiervan staan op de papieren van je webhoster. Zo niet, neem dan even contact op met deze. Zorg ook dat je phpmyadmin tot je beschikking hebt.

Ik gebruik een tabel genaamd 'alarmeringen'.
In de tabel heb ik de volgende velden:
Id = Een uniek nummer voor elke melding
timestamp = het tijdstip van de melding
capcode = de capcode van de melding
melding = de text van de melding
label = het label van mijn filter

Het instellen van deze tabel:
Gebruik hiervoor phpmyadmin. Elke redelijke webhost heeft deze. Zo niet, neem dan met je webhoster contact op.
Log in met je database gegevens.
Klik links op de naam van je database.
Kies uit het menu bovenin: "SQL"
en vul in het textveld het volgende in:

Citaat
CREATE TABLE IF NOT EXISTS `alarmeringen` (
  `id` int(11) NOT NULL auto_increment,
  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `capcode` varchar(10) NOT NULL default '',
  `melding` text NOT NULL,
  `label` text NOT NULL,
  PRIMARY KEY  (`id`)
);

Dit is het voorbeeld die ik verder blijf gebruiken.

Offline daaan

  • Beginnend Lid
  • **
  • Berichten: 40
Re: PDW en Databases
« Reactie #1 Gepost op: 10 januari 2007, 16:11:58 »
Invoeren van de data in de database
Omdat direct de mysql.exe aanspreken niet mogelijk is, wegens problemen met te lange regels in DOS, heb ik naar een andere oplossing moeten zoeken.

Via een ODBC koppeling kunnen we wel langere regels meegeven. ODBC staat voor Open DataBase Connectivity, wat zoiets betekend als een standaard manier om databases aan te spreken.

Om de via de ODBC koppeling het spul in de database te krijgen, moeten we eerst nog een kleine tussenstap nemen. Deze stap nemen we d.m.v. een "home-brewn" programma. Hierover later meer.

Voordat je verder gaat, zorg wel dat je administrator rechten hebt op de computer. Heb je geen idee wat dat inhoud, dat is de kans groot dat je het al bent.  Deze oplossing werkt niet zonder administrator rechten.

Om een ODBC koppeling voor Mysql te maken, moet je eerst een database driver installeren. Deze kun je hier: http://dev.mysql.com/downloads/connector/odbc/3.51.html vinden. Kies de Windows Driver Installer (MSI).

Installeer beide, dan gaan we verder.

Klik op start, dan configuratiescherm, dan Systeembeheer, dan Gevensbronnen (ODBC).

Klik nu op toevoegen.
-   Kies "Mysql ODBC x.xx Driver" uit de lijst (onderaan)
-   Bij data source name voer je "pdw_db" in. Niet iets anders aub
-   Bij description hoef je niets in te vullen.
-   Bij server vul je je database server in
-   Bij user vul je je gebruikersnaam in
-   Bij password vul je je password in.
-   Bij database klik je op het pijltje, nu verschijnen je mogelijkheden. Dit zal bij 99% maar 1 optie zijn, kies deze. Krijg je een error, kijk dan of alles goed is ingevuld, en neem desnoods contact op met de webhoster.
-   Druk op Test. Krijg je een error, kijk dan of alles goed is ingevuld, en neem desnoods contact op met de webhoster.
-   Druk op OK, en sluit alle schermen.

Dus zo:


We hebben een database koppeling gemaakt, nu moeten we die nog gebruiken.
Het programma waar we het eerder over hadden, doet niets meer of minder dan de data van PDW in een SQL query stoppen, en sturen naar de ODBC Koppeling.
Je hebt voor dit programma het .NET 2 framework nodig. Download die hier: http://www.microsoft.com/downloads/deta ... b15c5e04f5

Het programma is geen technisch hoogstandje, maar het doet wat het moet doen.
Het programma download je hier: http://www.zoutkamp.net/pdw_db.zip
Pak het programma uit, en zorg dat het op de root van de c: schijf staat.
"c:pdw_db.exe" dus.

Dat is dat, nu PDW instellen
Nu het instellen van PDW.
Open het filter scherm, en kies voor opties, je zal dan dit scherm zien:


Vink hier de optie 'Enable command file aan'. In het eerste textveld vul je 'c:pdw_db.exe' in.
In het tweede veld komen je gegevens voor in de database.
Dit staat er bij mij:
"%1" "%7" "%8"
Belangrijk is dat deze gegevens exact overgenomen worden. Anders werkt mijn programmatje niet.

Ik zal het even ontleden voor jullie:
De drie waarden zijn opties van PDW zelf:
%1 geeft de capcode
%7 geeft de melding
%8 geeft de label van het filter

Offline daaan

  • Beginnend Lid
  • **
  • Berichten: 40
Re: PDW en Databases
« Reactie #2 Gepost op: 10 januari 2007, 16:12:12 »
PDW filters

We gaan filteren op capcodes.  Even zoeken bracht mij op deze website: (http://www.dibraned.nl/Capcodes.html) hier staan alle capcodes op.

Start PDW op, open het filters scherm en klik op add, je ziet dan dit scherm:


Vul bij adres de capcode in
Vul bij description de naam van het korps in. Bijvoorbeeld Brandweer Amsterdam.
Vink display/log filter description aan
Vink enable command file aan
De velden 'Address' (capcode) en 'Description' kunnen natuurlijk verschillen van dit voorbeeld. Voor het laatste veld geld dat je kunt invullen wat je wilt, meestal de naam van het korps, maar maak hem niet te lang.

(tip: gebruik capcode 0005000 om te testen, deze word elke x aantal minuten gebruikt)
(tip: wil je veel filters gebruiken? Kijk dan op p2000live.nl bij downloads)

Als alles is goed gegaan, werkt het nu. Ik weet uit ervaring hoe veel haken en ogen er aan dit soort dingen zitten. Ik sta dan ook open voor commentaar, of vragen.

--update 04-09-2007

Updates

Er is een nieuwe update voor het pdw_db.exe programma. Deze kan ook single-qoutes aan ('). De oude versie is vervangen door de nieuwe, en is via de zelfde link te verkrijgen.

nb. Deze update is geschreven door Nol van der Velden, credits hiervoor naar hem dus.
nb2. De huidige versie (vanaf 13 oktober 2008) is herschreven door mijzelf. Credits naar mezelf dus i guess ;)

Ik wil iedereen die deze tutorial gebruikt, toch nog even bewust maken van de gevaren van het publiceren van dit soort data.
Niet iedereen is even blij met het feit dat burgers meldingen bijna eerder op internet kunnen lezen dan dat de brandweer/politie/ambulance mensen ze op hun pagers ontvangen. Daarnaast, is het ook nog eens illegaal.
Dat 'iedereen' het doet/kan betekend niet dat het correct is.

Er zijn al meerdere malen problemen geweest met mensen die zo snel bij een incident zijn, en hun auto pontificaal in de weg zetten, dat de hulpdiensten hinder ondervinden. Dit kan niet de bedoeling zijn.
Ook voor de fotografen onder ons; ik zie steeds vaker foto's van slachtoffers, of foto's waar alleen het gezicht van een slachtoffer is geblurred. Doe dat gewoon niet. Fotografeer geen slachtoffers. Denk eens aan de nabestaanden.

(hier zou een etiquette voor moeten komen)

Offline GSteven

  • Gevorderd Lid
  • ***
  • Berichten: 141
Re: PDW en Databases
« Reactie #3 Gepost op: 10 januari 2007, 17:16:15 »
Mijn oplossing is een tikkeltje anders.

Ik werk via de HTTP GET methode. Dewelke een zeer mooie performance biedt.

Ik heb een tabel (tblPaging) waar alle meldingen inkomen.
Ik heb een programmatje geschreven in .NET dewelke een URL aanroept met als GET variabele de verschillende parameters. Het PHP scriptje voert het bericht in me de nodige capcode en tijd in de MySQL database.

Ik had ook de mogelijkheid om MySQL via ODBC aan te roepen in mijn stukje .NET Software. Deze optie gaf mij echt wel een zwaar performance verlies (opladen van database enz...). Terwijl nu het grote werk (zeer beperkt) gebeurd door het PHP scriptje.

Verder haal ik nog de meldingen binnen in m'n Outlook via een RSS-feed (RSS Popper). Met de komst van Office 2007 zal die plugin zelfs niet mer nodig zijn.

Volgende stap is dat mijn PHP scriptje filtert op bepaalde code's en het bericht achter die bepaalde codes doorstuurt naar een SMS Gateway (XML) bij één of andere provider (http://www.mobileweb.be bijvoorbeeld). Op die manier krijg ik de meldingen op m'n GSM.

Hier in de streek wordt nog niet sterk gebruik gemaakt van ASTRID. Maar voor de toekomst is dit een heel mooie optie denk ik om op de hoogte te blijven van wat er gebeurd in de streek.

Offline daaan

  • Beginnend Lid
  • **
  • Berichten: 40
Re: PDW en Databases
« Reactie #4 Gepost op: 10 januari 2007, 20:50:40 »
Ja, over deze optie heb ik ook nagedacht. Maar ik wil niet een mogelijkheid creeren dat anderen informatie in mijn database gaan zetten.
Natuurlijk kun je dit met een wachtwoord beveiligen. Misschien kan je jou optie hier ook beschrijven.

lennartb

  • Gast
Re: PDW en Databases
« Reactie #5 Gepost op: 10 januari 2007, 21:04:06 »
ik ga hem zekr even doorlezen want nu doe ik het heel omslachtig =)

lennartb

  • Gast
Re: PDW en Databases
« Reactie #6 Gepost op: 11 januari 2007, 07:45:27 »
optie 2 gebruik ik en dan krijg ik in mijn database:

 id        timestamp        capcode        text                               label
3991    2007-01-11 08:26:34    â€œ2029568â€

Offline daaan

  • Beginnend Lid
  • **
  • Berichten: 40
Re: PDW en Databases
« Reactie #7 Gepost op: 11 januari 2007, 09:27:01 »
Dat alleen het eerste woord in de database komt lijkt er op dat je iets fout doet met de quotes.

Ik zal het even uitleggen :)

Als je doet:

Citaat
pdw_db.exe 0005000 105-C2000 Testpage Test capcode brandweer

Dan roep je pdw_db aan met 6 opties. Elke woord is een optie. Het programma kan echter maar 3 aan, dus pakt hij de eerste drie. capcode word dan goed ingevuld, text maar deels, en label niet.

Wat je dus moet doen, is pdw_db.exe wijsmaken dat je echt maar drie dingen stuurt. Dat kan op deze manier:

Citaat
pdw_db.exe "0005000" "105-C2000 Testpage" "Test capcode brandweer"

Nu zal het goed gaan.

Vertaald naar het PDW programma, roep je in het commandfile veld pdw_db.exe aan, en in het arguments veld:

Citaat
"%1" "%7" "%8"

Dat moet goed gaan.
Let wel dat de laatste (%8) alleen word meegegeven wanneer je in de filter instellingen een description invuld, en dat vinkje aan vinkt, dat hij dat mee moet sturen.

-edit-
Ik zie net dat ik “ gebruikte ipv " . Klein verschil, maar misschien wel de oorzaak van je probleem. “ is een ander character als ", mijn Word had er “ van gemaakt.

lennartb

  • Gast
Re: PDW en Databases
« Reactie #8 Gepost op: 11 januari 2007, 14:08:41 »
Citaat van: "daaan"
Dat alleen het eerste woord in de database komt lijkt er op dat je iets fout doet met de quotes.

Ik zal het even uitleggen :)

Als je doet:

Citaat
pdw_db.exe 0005000 105-C2000 Testpage Test capcode brandweer

Dan roep je pdw_db aan met 6 opties. Elke woord is een optie. Het programma kan echter maar 3 aan, dus pakt hij de eerste drie. capcode word dan goed ingevuld, text maar deels, en label niet.

Wat je dus moet doen, is pdw_db.exe wijsmaken dat je echt maar drie dingen stuurt. Dat kan op deze manier:

Citaat
pdw_db.exe "0005000" "105-C2000 Testpage" "Test capcode brandweer"

Nu zal het goed gaan.

Vertaald naar het PDW programma, roep je in het commandfile veld pdw_db.exe aan, en in het arguments veld:

Citaat
"%1" "%7" "%8"

Dat moet goed gaan.
Let wel dat de laatste (%8) alleen word meegegeven wanneer je in de filter instellingen een description invuld, en dat vinkje aan vinkt, dat hij dat mee moet sturen.

-edit-
Ik zie net dat ik “ gebruikte ipv " . Klein verschil, maar misschien wel de oorzaak van je probleem. “ is een ander character als ", mijn Word had er “ van gemaakt.

nu doety hjij het, ben erg blij met deze oplossing en bedankt  :)

Offline daaan

  • Beginnend Lid
  • **
  • Berichten: 40
Re: PDW en Databases
« Reactie #9 Gepost op: 11 januari 2007, 14:11:13 »
Geen probleem, ben blij dat ik kan helpen.

Offline daaan

  • Beginnend Lid
  • **
  • Berichten: 40
Re: PDW en Databases
« Reactie #10 Gepost op: 12 januari 2007, 13:58:25 »
Het zou trouwens niet zo heel erg veel programmeerwerk moeten kosten om via een ODBC koppeling vanuit PDW zelf databases te kunnen aanroepen. *hint* ;)

lennartb

  • Gast
Re: PDW en Databases
« Reactie #11 Gepost op: 12 januari 2007, 15:42:22 »
Citaat van: "daaan"
Het zou trouwens niet zo heel erg veel programmeerwerk moeten kosten om via een ODBC koppeling vanuit PDW zelf databases te kunnen aanroepen. *hint* ;)

ze zouden beter gewoon zonder OBCD kunnen doen ofzoiets, dat je je gegevens in pdw intypt etc.

alleen is er ook een manier die net zo makkelijk is als manier 2 om ALLE berichten in de database te zetten?

Offline kleineump

  • Beginnend Lid
  • **
  • Berichten: 19
Re: PDW en Databases
« Reactie #12 Gepost op: 15 januari 2007, 00:54:11 »
Bij mij wil hij niet in de database schrijven.

Ik heb het zoals hierboven gedaan maar als er een gefilterd bericht binnen komt
dan komt er een dosbox maar hij voegt niks toe in mijn database

Wat doe ik fout

lennartb

  • Gast
Re: PDW en Databases
« Reactie #13 Gepost op: 15 januari 2007, 13:20:00 »
Citaat van: "kleineump"
Bij mij wil hij niet in de database schrijven.

Ik heb het zoals hierboven gedaan maar als er een gefilterd bericht binnen komt
dan komt er een dosbox maar hij voegt niks toe in mijn database

Wat doe ik fout

zie je wel af en toe een dos-schermpje komen, zoja: verzeker je ervan dat je inlog gegevens van je database goedzijn.
zonee: check eens of je wel het goede path naar het programaatje hebt opgegeven

Offline kleineump

  • Beginnend Lid
  • **
  • Berichten: 19
Re: PDW en Databases
« Reactie #14 Gepost op: 15 januari 2007, 13:41:12 »
Dat heb ik gedaan.

Als ik het programma'tje draai dan komt het ook niet in de database

Ik zie wel een dos scherm voorbij komen.

Ik weet zeker dat ik de goeie pad op gegeven.

Wat kan ik nog meer bekijken.

Ik heb voor mijn server root rechten gegeven aan mijn eigen account