Aliens in der Matrix: PHP und JQuery

Pragmatismus wohin man schaut. Wiederverwendung ohne Vererbung und sogar  PHP Unterstützung. Das alles und noch viel mehr ist WebMatrix.  Im folgenden werde ich versuchen PIWIK in Betrieb nehmen. Damit kann man WebTraffic analysieren, ähnlich wie Google Analytics. Allerdings bleibt man Herr seiner Daten.

Dafür muss PHP und MySQL installiert werden. Das alles kann man direkt aus WebMatrix heraus tun.

image

Die fehlenden Bestandteile PHP und WebMatrix werden automatisch mit installiert. Auf einem echten IIS 7.5 kann man das per WebPlatform Installer genauso einfach erledigen.

image

image

image

Max Knor beschreibt (etwas knapp)  auf Codefest wie man dann Piwik konfiguriert. Neben den Passwort sollte man sich merken  das der Admin Benutzer root heißt.

Soweit so gut. Mit Webmatrix ist wirklich binnen Minuten eine komplette Web Anwendung installiert und in Betrieb genommen. Hier beginnt allerdings erst die Challenge für mich. Die PHP Anwendung soll umprogrammiert werden, so das sie mit SQL Server als Datenbank funktioniert. Zwei Datenbank Server auf einer Maschine halte ich einfach nicht für sinnvoll.

Zunächst erst mal baue ich einen Prototypen, um die SQL Funktionalität zu prüfen. Es gibt mindestens zwei Datenbank API’s (MSSQL und SQLSRV) für den Microsoft SQL Server.  Ein Vergleich findet sich im Blog von Brian Swan. Um den MSSQL Treiber als Modul verwenden zu können muss in der php.ini am Ende folgende Zeile eingefügt werden.

extension=php_mssql.dll

Diese Datei befindet sich bei mir im Verzeichnis C:\Program Files (x86)\IIS Express\PHP\v5.2. Um zu prüfen welche PHP Version installiert ist kann man in eine PHP Datei folgenden Code einfügen.

   <?php phpinfo(); ?>    

Als nächstes der Code um eine Datenbank Abfrage auf die Nordwind Datenbank auszuführen.

    <?php
$conn = mssql_connect('LOCALHOST', 'sa', 'passwort');
mssql_select_db('northwind');
$data = mssql_query('select * from customers', $conn);        
$result = array();    
echo '&lt;ul>';
 while ($row = mssql_fetch_object($data) )
 {
        echo '<li>'.$row->CompanyName.'</li>';
    }
echo '</ul>';
mssql_close($conn); 
?> 

Nun bin ich schon fast stolz. Mein erstes PHP Programm mit Webmatrix und ich kann Daten anzeigen. Ganz so reibungslos war es allerdings nicht. Kein Debugger! Fehlermeldungen werden bei mir  in C:\Windows\Temp\php52_errors.log ausgegeben. Und - ich habe mich reichlich oft vertippt.

Doch optisch geht definitiv noch mehr. Dazu verwendet ich JQuery, das mittlerweile als Standard JScript Bibliothek anzusehen ist. Auch Microsoft setzt auf Jquery und bietet in seinem CDN ( Content Delievery Network) auch die die aktuelle Version an. IN Webmatrix wird im Head Bereich dann die Script Referenz gesetzt.

<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.1.js" type="text/javascript">
</script>

Natürlich kann die js Datei auch in die Website Struktur kopiert werden. CDN’s bieten aber Vorteile in Punkto caching und beschleunigen damit Web Anwendungen in der Regel.

Im HTML Bereich packe ich die Liste in ein DIV das Anfangs unsichtbar ist und dann mit einem JQuery Befehl langsam von oben nach unten eingeblendet wird (slide effekt)

 <div id="div1" style="display:none;">
...  some pho code</div>
 <script>  
$("#div1").slideToggle(10000);

Als nächstes versuche ich die Piwik Anwendung für Microsoft SQL Server zu konfigurieren. Dazu muss man wissen welche API und ob die PDO Objekte verwendet werden sollen. Kurze einführende Literatur dazu

http://blogs.msdn.com/b/brian_swan/archive/2010/04/20/comparing-the-sqlsrv-and-pdo-apis.aspx

Dann muss die php.ini um die beiden Microsoft PHP SQLSrv Treiber erweitert werden. Als nächstes noch in der Datei Adadpter.php den ausdokumentierten MSSQL in Betrieb nehmen

public static function getAdapters()
    {
    static $adapterNames = array(
       'Pdo_Mssql',
       'Pdo_Mysql',
    'Mysqli',

Dann erscheint auch in der Tat bei der Web Konfiguration in Schritt 3 der MSSQL Treiber als Auswahloption. Aber im nächsten Schritt ist dann leider Schluss.

image

Offensichtlich wird noch immer Mysql Syntax verwendet um zu prüfen ob Tabellen vorhanden sind. Leider musste ich auch noch Fehler im Code korrigieren z.B. in  mssql.php

$this->_connection = 
new PDO( "sqlsrv:server=$serverName", $uid, $pwd, array( 'Database' => $database ));

Weitere Recherchen im Source Code von Piwik und in den Piwik Foren lassen darauf schließen, das die MSSQL bzw. SQLSrv Unterstützung nicht fertig ausprogrammiert ist. Schade eigentlich. An dieser Stelle breche ich das Experiment ab. Open Source ist eben oft nicht für die eigenen Zwecke 100% tig geeignet und durch den fehlenden Support am Ende oft doch ganz schön teuer.

Schlussendlich  muss dich Anwendung noch verteilt werden. Das funktioniert aus WebMatrix per FTP oder mit WebDeploy. Letzteres kann selbst Datenbanken oder Websites anlegen, wenn der Webserver entsprechend konfiguriert ist.

Wieder zeigt sich das die Redmonder Softwareentwickler mit Webmatrix einen neuen Weg der Offenheit beschreiten. Alles ist möglich. Weiter so.

Kommentar schreiben