mySQL Beispiel

Hier dreht sich alles um die auf der Webseite veröffentlichten Tutorials. // This forum is all about the APF tutorials.
Antworten
Cipo
Beiträge: 1
Registriert: 22.02.2010, 18:13:51

mySQL Beispiel

Beitrag von Cipo » 23.02.2010, 13:56:24

Hallo zusammen,

ich bin eher per Zufall auf apf gestossen und bin glücklich,
die Version 1.11 in meinem xampp 1.7.3 Umfeld installiert zu haben.

Ich möchte das Framework als GUI Komponente einer Neuentwicklung nutzen
und bin als Datenbänkler darauf angewiesen, mit wenig Aufwand
durch das Tal der Tränen zu schreiten und suche eine Beispielanwendung, die

die triviale Mengenfunktionen wie neu, löschen, modifizieren auf den
Records einer eingebundenen mySQL Tabelle auf einer Seite anbietet

den Aufruf von mySQL Prozeduren und Funktionen unterstützt.

Hat jemand eine Idee oder ein Beispiel.

Vielen Dank

Cipo, Karlsruhe

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: mySQL Beispiel

Beitrag von dr.e. » 23.02.2010, 14:29:55

Hallo Cipo,

herzlich willkommen im APF-Forum! :geek:
Ich möchte das Framework als GUI Komponente einer Neuentwicklung nutzen und bin als Datenbänkler darauf angewiesen, mit wenig Aufwand durch das Tal der Tränen zu schreiten und suche eine Beispielanwendung, die die triviale Mengenfunktionen wie neu, löschen, modifizieren auf den Records einer eingebundenen mySQL Tabelle auf einer Seite anbietet den Aufruf von mySQL Prozeduren und Funktionen unterstützt.
Vorneweg: das APF ist ein Application Development Framework und liefert daher keine fertige GUI wie beispielsweise PHPMyAdmin aus. Man muss also durchaus einiges selbst auf seine Bedürfnisse und Anforderungen entwickeln.

Ansonsten kannst du - sofern du das Datenbank-Design selbst bestimmen möchtest - den ConnectionManager nutzen. Dieser ist eine Datenbank-Abstraktion für das APF und bietet ein Standard-Interface gegen eine Datenbank. Mit diesem kannst du Statements sowie Prozeduren ausführen. Die Anwendung gestaltet sich dabei recht einfach. Ein Beispiel findest du z.B. im Tutorial Kommentar-Funktion.

Sofern du auch "damit leben kannst", dass das Datenbank-Design vorgegeben ist, kann ich dir den GenericORMapper ans Herz legen. das ist eine Komponente, die auf Basis eines generischen Datenbank-Designs Objekte und ihre Beziehungen verwalten kann. Für einen Blog beispielsweise definierst du in ini-Dateien die Objekte und Beziehungen und kannst dann über eine generische API alle CRUD-Operationen ohne Code zu schreiben ausführen. Unter Artikel findest du die Reihe Objektorientiertes Design eines Gästebuchs und Objektorientierte Implementierung eines Gästebuchs. Diese beinhalten ein ausführliches Beispiel für die Anwendung des GORM.

Was schon anfällt ist natürlich die Gestaltung und Funktion deiner GUI. Hier kann ich dir folgende Tutotials ans Herz legen:
Nicht erschrecken, als DB-Entwickler ist vielleicht das Gebiet der OOP etwas befremdlich, aber da findest du schnell rein. Das APF bietet eine sehr offene Struktur, sprich wenn du an einer Stelle mal eine Funktion vergisst, lässt sich das schnell einfügen. Vielleicht schaust du auch mal im WIKI vorbei, dort findet sich auch einige Informationen für den Einstieg.
Viele Grüße,
Christian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: mySQL Beispiel

Beitrag von dr.e. » 27.02.2010, 12:39:46

Hallo Cipo,

hat dir mein Post weitergeholfen? Brauchst du noch weitere Info? Wo klemmts vielleicht?
Viele Grüße,
Christian

doc
Beiträge: 6
Registriert: 25.05.2010, 15:41:14

Re: mySQL Beispiel

Beitrag von doc » 25.05.2010, 16:05:26

Hallo habe mal das Tutorials: Erstellen einer Webseite angeschaut http://adventure-php-framework.org/Seit ... -erstellen.

Leider Funktioniert das nicht mit der Version 1.11 nicht, da die Classe 'base_controller' nicht vorhanden ist.

Code: Alles auswählen

Fatal error: Class 'base_controller' not found in /var/www/scripte/frameworks/afm/apps/sites/testwebsite/pres/documentcontroller/content_v1_controller.php 
Fehlt hier ein import oder wird der Controller von einer anderen Klassen abgeleitet?

Bin neu hier und habe heute mti den APF angefangen und das ist auch mein erstes Framework!

Bin für jede Hilfe oder Hinweis dankbar!

gruß DOC

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: mySQL Beispiel

Beitrag von dr.e. » 25.05.2010, 16:23:22

Hallo doc,

zunächst ein Herzliches Willkommen im APF-Forum! 8-) Danke für den Hinweis, die Doku ist online (leider) schon auf dem Stand von 1.12 und es kommt mit 1.11 auf Grund der API-Änderungen zu einem Fehler. Um das Beispiel lauffähig zu halten, einfach die Basis-Klasse von content_v1_controller auf baseController umbenennen. Ich werde beim nächsten Content-Update darauf achten, dass es einen Hinweis für ältere Versionen gibt. Ich hoffe, damit kommst du weiter.

Im Allgemeinen findest du die Dokumentation der 1.11er API unter http://files.adventure-php-framework.or ... index.html.
Viele Grüße,
Christian

doc
Beiträge: 6
Registriert: 25.05.2010, 15:41:14

Re: mySQL Beispiel

Beitrag von doc » 25.05.2010, 16:36:57

Hallo dr.e

WoW das ging schnell und vielen dank!
Aber ein Hinweis steht ja oben und auch das man sich an das Forum wenden soll ;)

Würdest du mir empfehlen gleich auf die 1.12 zu gehen, oder dauert die Final 1.12 noch lange.
Will erst mal ein wenig spielen und mich mit den Thema Framework auseinandersetzen, und mich in das Thema OOP einarbeiten.


Nochmals vielen Dank!

gruß DOC

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: mySQL Beispiel

Beitrag von Screeze » 25.05.2010, 16:42:59

Hi,
aus meiner Sicht spricht nichts GEGEN verwendung der 1.12 beta. Das meiste ist bereits enthalten, und Fehlermäßig dürfte in den Grundfunktionen auch nichts gravierendes sein. Ich denke es ist besser direkt mit der neuen API zu "lernen", als sich später nochmal umzugewöhnen und evtl. schon geschriebenes nochmal zu überarbeiten.

Grüße,
Screeze

doc
Beiträge: 6
Registriert: 25.05.2010, 15:41:14

Re: mySQL Beispiel

Beitrag von doc » 25.05.2010, 16:47:50

Hallo Screeze,

Hatte ich mir auch gedacht ;) aber danke für die Bestätigung.

Die nächste frage wird kommen :D

Aber das man so schnell hilfe hier bekommt ist absolut SUPER !!!!!

gruß Alex

doc
Beiträge: 6
Registriert: 25.05.2010, 15:41:14

Re: mySQL Beispiel

Beitrag von doc » 25.05.2010, 23:46:10

Zu den Tutorial:

1. Habe nur über den ConnectionManager eine verbindung aufbauen können:

Code: Alles auswählen

        
$cm = $this->__getServiceObject('core::database','ConnectionManager');
$conn = $cm->getConnection('MySQL'); // Section MySQL
Was ich nicht ganz verstehe ist das die Konfigurationsdatei unter:

Code: Alles auswählen

apps/config/core/database/sites/testwebsite/pres/templates/DEFAULT_connections.ini
stehen muss, bin davon ausgegangen das Sie unter:

Code: Alles auswählen

apps/config/core/database/sites/testwebsite/DEFAULT_connections.ini
Kann mir einer sagen warum?

2. Tippfehler bei $page

Code: Alles auswählen

$page = $SQL->escapeValue($Page);
sollte:

Code: Alles auswählen

$page = $SQL->escapeValue($page);
3. import nicht notwendig

Mein Code sieht dann so aus:

Code: Alles auswählen

class content_v1_controller extends base_controller {

    function content_v1_controller()
    {
    }

    function transformContent()
    {
        // Instanz der Datenbank-Abstraktionsklasse holen        
        $cm = $this->__getServiceObject('core::database','ConnectionManager');
        $conn = $cm->getConnection('MySQL');
        
        // URL-Parameter beziehen
        $page = RequestHandler::getValue('Seite','Startseite');

        // Parameter gegen SQL-Injections absichern
        $page = $conn->escapeValue($page);
        // Inhalt der Seite auslesen
        $select = 'SELECT PageContent FROM demopage_content WHERE PageURLName = \''.$page.'\' LIMIT 1';
        $result = $conn->executeTextStatement($select);
        $data = $conn->fetchData($result);

        // Inhalt der Seite ausgeben
        $this->__Content = $data['PageContent'];
    }
}

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: mySQL Beispiel

Beitrag von Screeze » 26.05.2010, 10:29:40

Du scheinst den Context in der index.php nicht explizit gesetzt zu haben, deshalb wird "testwebsite/pres/templates" als context verwendet.
einfach in der bootstrab datei

Code: Alles auswählen

$page->setContext('testwebsite');
einfügen.
Falls du das doch gemacht hast, poste bitte mal deine index.php

doc
Beiträge: 6
Registriert: 25.05.2010, 15:41:14

Re: mySQL Beispiel

Beitrag von doc » 26.05.2010, 19:14:09

Danke Screeze,

Das explizite setzen des Context hatte ich natürlich nicht gemacht :cry:

Code: Alles auswählen

$page->setContext('sites::testwebsite'); 
Das war das ich wollte steht ja auch in der Doku das der Context von loadDesign() genommen wird wenn man kein explizites setzen macht.

Sorry, man überliest sehr schnell was.

Also auch hier ein dickes Lob an die Doku, man muss nur richtig lesen können ;)


gruß Alex

Benutzeravatar
dr.e.
Administrator
Beiträge: 4538
Registriert: 04.11.2007, 16:13:53

Re: mySQL Beispiel

Beitrag von dr.e. » 26.05.2010, 22:29:33

Hallo Alex,

danke für den Hinweis mit dem Tipp-Fehler, diesen habe ich sofort behoben. Leider ist das Tutorial etwas veraltet, aber ich plane für Release 1.12 noch ein ausführlicheres Tutorial, wie man eine dynamische Webseite auf Basis einer Datenbank erstellen kann. Solltest du in der Zwischenzeit noch weitere Anregungen brauchen, einfach das Forum oder das Wiki nutzen. Wir helfen natürlich immer gerne. :)
Viele Grüße,
Christian

doc
Beiträge: 6
Registriert: 25.05.2010, 15:41:14

Re: mySQL Beispiel

Beitrag von doc » 27.05.2010, 00:27:49

Hallo dr.e.

Wenn ich mal was durchtesten soll, also als noob und das hilft manchmal (andere blickwinkel), sag bescheid.
Würde mich freuen etwas zurück zugeben.

Denn für die schnelle und gute Hilfestellung bin ich hier echt froh!

gruß Alex

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast