19 oktober, 2007

Databas: PHP och Access 2007

Artikeln tillägnad mig själv och alla ni som håller fast vid Access
istället för MySQL eller någon annan databaslösning.


Förord
I denna artikeln ska jag gå igenom hur man ansluter till en Microsoft Access 2007 databas av typen "accdb". Varför? För att det nästan inte finns några guider om hur man åstadkommer detta på Internet. Häng med när vi kopplar ihop ett öppen källkods projekt med en Microsoft produkt, som jag i fortsättningen hänvisar till namnet Access 2007.

Introduktion
För inte så länge sedan släpptes nya Microsoft Office 2007 och i Enterprise paketet följer Access 2007 med. Om du är utvecklare inom PHP och vill använda en databas skapad i det programmet så kan du stöta på problem. Den här artikeln hoppas jag ska lösa era problem så ni slipper få ont i huvudet för att ni inte får det att fungera. Annars kan ni ju alltid använda MySQL som ju är gratis och så mycket smidigare att använda med PHP (sök på LAMP på Google om ni vill veta mer om det).

Formatet
Tidigare har Microsoft använt MDB som filtyp för sina Access databaser men i senaste versionen används ACCDB. Några förbättringar har gjorts och säkerheten har blivit bättre än tidigare.

Installera stöd för ACCDB
Om ni vill ha stöd för ACCDB på databasservern måste den ha Office 2007 installerat eller ett smidigt litet paket som går att ladda ner gratis från Microsofts hemsida. Det är inte så vanligt att en server har Office 2007 installerat så därför ska vi hämta paketet. Navigera till nerladdningssida för Access Database Engine och klicka på Download högre upp på sidan. En stor nackdel är att det ligger på ungefär 25MB så det kan vara besvärligt att lägga till det i ett komplett installationspaket för enklare distribution.

Installera paketet på någon av Windows versionerna som stöds (exv. Windows XP) och kontrollera sedan om allt fungerar genom att öppna "Data Sources (ODBC)" i administrationsverktyg på kontrollpanelen. På fliken "Drivers" letar ni upp "Microsoft Access Driver (*.mdb, *.accdb)". Hittar ni den kan ni starta om datorn för att försäkra er om att det har installerats korrekt i registret.

Testa anslutning till ACCDB med PHP
Nu kommer vi till testning av systemet. Jag har skrivit några enkla rader i PHP som ansluter till en simpel databas skapad i Access 2007.

Kod (simple_odbc.php):

<?php
/**
* Get all tables and return them in an array
*
* @param resource $conn
* @return array $tables
*/
function odbc_get_tables(&$conn)
{
$tables = array();
$result = odbc_tables($conn) or die('Kan inte hämta tabeller!');

// Hämta alla tabeller och lagra i vektorn $tables
while (odbc_fetch_row($result)) {
if(odbc_result($result,'TABLE_TYPE')=='TABLE') {
$tables[] = odbc_result($result,'TABLE_NAME');
}
}

return $tables;
}

define('DB_PATH', 'D:/wwwroot/project/xxx');
define('DB_NAME', 'projekt_xxx.accdb');
define('DB_PASSWORD', '');

$db_conn = odbc_connect(
'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};
DBQ='. DB_PATH . DB_NAME,
'DODB.Connection',
DB_PASSWORD,
'SQL_CUR_USE_ODBC'
) or die('Kan inte ansluta till databasen!');

// Visa alla tabeller i databasen
$tabeller = odbc_get_tables($db_conn);
print_r($tabeller);

// Stäng anslutningen
odbc_close($db_conn);
?>


Inspiration till koden kommer från NinethSense där man ansluter till en vanlig MDB databas.

Slutord
Det var allt för den här gången. Hoppas ni får det att fungera utan problem.

Källor
http://www.phpbuilder.com/board/showthread.php?t=10316318
http://www.thescripts.com/forum/thread594515.html
http://blog.ninethsense.com/php/microsof-access-database-mdb-from-php/
http://aspn.activestate.com/ASPN/Cookbook/PHP/Recipe/123709
http://www.connectionstrings.com/?carrier=access2007 -- Mycket bra sida om ni har glömt hur man skapar en anslutning på någon typ av databas. Funkade dock inte för mig när jag försökte få ACCDB att fungera. Skriv gärna en kommentar till artikeln om ni får det att fungera med exemplen i källan.

Cisco: CCNA2 Lathund inför praktiskt prov

Jag har bestämt att dela med mig av en lathund skriven av mig själv som kan användas om man vill kunna de vanligaste kommandona för det praktiska provet i CCNA termin 2. Lathunden är inte komplett utan är bara grundläggande kommandon som kan eller borde förekomma på provet.

Lathund CCNA2
I lathunden används bara kommandon på en router och i routing protokollet RIPv1 används två påhittade nätverk. Alla IP-adresser är påhittade klass C. En annan router Lab_B refereras i lathunden men används bara som exempel med två interface. Alla lösenord som används är "class" och "cisco". Efter vissa kommandon skriver jag en förkortning inom parantes som kan användas istället för att göra det enklare att komma ihåg.


! Logga in
Router> enable (ena)

! Gå till prompt för globala ändringar
Router# configure terminal (conf t)

! Ändra routerns namn
Router(config)# hostname Lab_A (host ...)

! Lägg till Lab_B i hosttabellen
Lab_A(config)# ip host Lab_B 192.168.2.2 192.168.5.1

! Sätt krypterat lösenord med stark MD5 för privilege mode
Lab_A(config)# enable secret class (ena sec ...)

! Om routerns hårdvara inte klarar stark MD5 kan man
! använda följande som är okrypterat
Lab_A(config)# enable password cisco (ena pass)

! Kryptera alla okrypterade lösenord med en svag algoritm
Lab_A(config)# service password-encryption (serv pass)

! Sätt lösenord på konsol 0
Lab_A(config)# line console 0 (line con0)
Lab_A(config-line)# password cisco (pass ...)
Lab_A(config-line)# login
Lab_A(config-line)# exit

! Sätt lösenord på alla virtuella telnet anslutningar
Lab_A(config)# line vty 0 4
Lab_A(config-line)# password cisco (pass ...)
Lab_A(config-line)# login
Lab_A(config-line)# exit

! Hoppar över AUX

! Lab_A har ett FastEthernet 0/1 och en seriell 0/0 DCE länk
! Seriella har IP: 192.168.2.1 och subnätmask 255.255.255.0
! FastEthernet har IP: 192.168.1.1 och subnätmask 255.255.255.0

! Konfigurera FastEthernet interface
Lab_A(config)# interface fastethernet 0/1 (int fa0/1)
Lab_A(config-int)# ip address 192.168.1.1 255.255.255.0 (ip addr ...)
Lab_A(config-int)# no shutdown (no sh)
Lab_A(config-int)# exit

! Konfigurera Seriella interface
Lab_A(config)# interface serial 0/0 (int s0/0)
Lab_A(config-int)# ip address 192.168.2.1 255.255.255.0 (ip addr ...)
Lab_A(config-int)# description Connection to Lab_B, Bldg13 (desc ...)
Lab_A(config-int)# clock rate 56000
Lab_A(config-int)# no shutdown (no sh)
Lab_A(config-int)# exit

! Konfigurera RIP version 1
Lab_A(config)# router rip
Lab_A(config-router)# network 192.168.1.0 (net ...)
Lab_A(config-router)# network 192.168.2.0 (net ...)

! Konfigurera en loopback - finns inte alltid med på provet
Lab_A(config)# interface loopback 0 (int loop0)
Lab_A(config-int)# ip address 172.16.3.1 255.255.255.0 (ip addr ...)
Lab_A(config-int)# exit

! Gå tillbaks till början
Lab_A(config)# CTRL+Z

! Kontrollera routing tabellen och se efter om routern har
! fått några uppdateringar via RIP
Lab_A# show ip route

! Kontrollera den aktiva konfigurationen
Lab_A# show running-config (sh run)

! Kontrollera att interfacen är korrekta och uppe
! Om routern har ett interface BRI måste andra alternativet användas
Lab_A# show ip interfaces brief (sh ip int bri) eller (sh ip int brief)

! Spara aktiv konfiguration till NVRAM
Lab_A# copy running-config startup-config (copy run start)

! Sätt en Access Control List
! Tänker jag inte gå igenom men kan förekomma på provet.
! Glöm inte att först skapa den i (config)# och sedan sätta
! den på ett interface (config-int)# med respektive kommando;
! access-list, access-group.

! Starta om routern
Lab_A# reload

!
! Färdigt
!


En sak ni ska komma ihåg är att ni måste kunna koppla rätt kablar och koppla nätverket rätt. Annars är det ingen idé att försöka göra provet. Fick faktiskt höra av min Cisco instruktör att hon har varit med om elever som kommit till det praktiska provet och inte ens vet var de ska koppla konsolkabeln (RJ45-DB9, rollover). Ha ha, vet man inte det kan man inte konfigurera en router och då borde man inte gå Cisco kursen överhuvudtaget.

Cisco CCNA är enkel i början men går fort in på mer avancerade detaljer om nätverk och routing protokoll. Väljer man kursen vill man verkligen lära sig mer om nätverk eller bli en nätverkstekniker. Men det finns faktiskt många där ute som inte ens känner till vad Cisco är för något. Jag tycker inte synd om dem för man måste studera mycket om man ska klara kursen. Tro inte att det går att plugga mycket sista veckan eller veckorna. Cisco kräver djupare studier under längre tid för det är så mycket information hjärnan måste ta in.

Nu ska jag inte skriva om Cisco kursen och om elever som inte vill studera nätverk. Jag gissar att om ni kommer hit till denna artikeln så är ni troligtvis intresserade av Cisco eller så vill ni fuska och lära er alla kommandon inför det praktiska.

Lycka till!

PHP-Gtk2: Nytt Glade v3.3.4

Verktyget Glade som används vid utveckling av GTK-program i Linux och Windows har släppts i en ny version, speciellt för Windows.

Verktyget (även kallat Rapid Application Delevopment - RAD) är perfekt för utvecklare som vill se hur deras applikation kommer se ut när det är färdigt. Det är enkelt att skapa ett nytt program - man bara klickar på det man vill lägga till och sedan dra det på plats. Givetvis finns det regler för hur detta fungerar men det är oviktigt.

En viktigt egenskap är att Glade sparar designen av programmet i XML formatet. Det gör att samma design kan användas i olika anpassade programmeringsspråk. Ett exempel på det är PHP-Gtk2 som i dagens läge mestadels skrivs för hand, men även ibland i verktyget Glade. Det gör det mer effektivt att skapa program och man slipper tänka på designen när man kodar, något som är viktigt att separera när man programmerar i de flesta programmeringsspråken.

Det finns många exempel på Internet om hur man använder verktyget och jag kommer även skriva mer om hur man använder det i min framtida artikelserie om PHP-Gtk2. Serien har varit planerad väldigt länge men jag har ont om tid, samt att jag studerar på högskola nu. Istället sätter jag mig ner ibland om antecknar på papper om vad jag vill ta med i serien och hur man enklast kommer igång.

Vill du testa verktyget och kanske testa PHP-Gtk2 samtidigt. I så fall rekommenderar jag följande länkar:

http://canzoniere.ilbello.com/php-gtk/glade3-3.4.0-win32-1.zip -- De binära filerna
http://www.kksou.com/php-gtk2/articles/install-glade3-for-PHP-GTK2-on-windows.php -- Kom igång med Glade 3 på Windows. Ett måste om ni vill veta hur ni får den nya versionen 3.x.x att fungera.

Länge leve Glade 3 och dess efterföljare. Hoppas ni kommer tycka om Glade lika mycket som jag när jag först stötte på det.

03 oktober, 2007

Cisco: Egen Cisco router för labb hemma

Jag är student på högskolan i Halmstad och går programmet Nätverksdesign- och Datordrift 60 HP första året. I programmet ingår kursen Cisco som behandlar datorkommunikation från grunden till expertnivå.

I dagsläget läser jag CCNA 2 och har fått höra att det kommer bli mycket praktiskt framöver i kursen, plus att tentan är ett praktiskt prov. Nu är det så att jag inte har labbsalarna på skolan lättillgänglia eftersom jag bor hemma (fanns inga lägenheter kvar) så jag tänkte att jag kanske skulle skaffa egen labbutrustning som jag kan öva på hemma när jag är ledig från skolan.

Jag frågade lärarna om de kände till någon hemsida eller företag som sålde begangnade nätverksenheter, i detta fallet Cisco routrar av typen 16xx, 25xx, 26xx, som är ungefär likadana som de vi använder på skolan. De kände till att det fanns några som kunde erbjuda detta men kom inte ihåg vem eller vilka. De sade att jag fick kolla upp det när jag kom hem. En sökning på Google på ett relevant ämne gjorde att en Google AdWord annons visades som ledde till en sida som sålde just begangnade nätverksenheter och tillbehör. Precis vad jag hade letat efter.

Så om du är ute efter en Cisco router eller switch av något slag att ha som labbutrustning utöver utrustningen i skolan, eller om du frågar runt på forum och auktionssajter om att du vill köpa en router, kan jag rekommera hemsidan http://www.stril.com/ som ägs av företaget Stril Networks. Företaget är både svenskt och engelskt så kommunikationen med deras support eller vanliga frågor via epost eller telefon ska nog inte vara några problem.

Om du vill söka på labbutrustning kan du använda menyn till vänster och gå till kategorin Product Pages. Gå vidare via länken Lab / Education för att komma till avdelningen för olika sorters nätverkspaket (labb-kit för exempelvis studenter). För närvarande har de Cisco 2501 och Cisco 2503 och switchar som verkar ganska hyffsat. Det finns även Cisco 1005 men den verkar inte så användbar för just detta ändamålet; kanske för just dig, men inte för mig.

Jag mejlade dem och frågade om priset för Cisco 2501 paketet som innehåller tre av varje. Fick höra att priset låg på ungefär 3700kr. Jag behöver bara minst två av varje så fick ett pris på ungefär 2500kr. Helt okej pris för mig eftersom jag har tjänat ihop lite extra pengar under det senaste året.

Så om du vill köpa begangnad nätverksutrustning rekommenderar jag er till Stril Networks.

Att tänka på
Det finns program på Internet som kan simulera en Cisco router eller switch. De flesta tillåter även design av nätverket.

Välkomna till bloggen

Välkomna ska ni vara kära besökare. Jag skriver om IT för att det är kul och för att jag vill dela med mig av information och kunskap. Jag försöker hålla bloggen så kategoriserad som möjligt för att ni enklare ska hitta intressanta länkar och artiklar.