php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.03.2007, 13:13  
Kein Genie
Gast
 
Beiträge: n/a
Standard OOP => MySQL Klasse

Hi,

ich habe gerade mti OOP angefangen und würde mir gerne eine eigene MySQL Klasse schreiben.
Ok bis jetzt habe ich mal so angefangen:

PHP-Code:
<?php

include('../juca/config.inc.php');

class 
mysql {
    
    function 
get_numbers ($sql) {
        
$result mysql_query($sql);
        
$return mysql_num_rows($result);
    
        return 
$return;
    }
}
$sql "SELECT topic_id FROM board_topics";

$numbers = new mysql();

echo 
'Es gibt ';
$numbers -> get_numbers($sql);
echo 
' Topics.';
?>
Ich denke es ist mal total alles falsch.
Es klappt auch nicht wirklich, mir wird keine Zahl ausgeben.
Da ich aber von OOP noch nicht wirklich viel verstehe, brauche ich bitte eure Hilfe.
Danke
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.03.2007, 13:21  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Kein Genie,

Zitat:
ich habe gerade mti OOP angefangen und würde mir gerne eine eigene MySQL Klasse schreiben.
Das ist grundsätzlich löblich. Nur
- hast du dich damit auseinandergesetzt was OOP ist?
- hast du bereits Literatur gelesen?


Zitat:
Ich denke es ist mal total alles falsch.
Wie kommst du auf so eine Aussage? Syntaktisch ist das sicher erst mal alles richtig.


Zitat:
Es klappt auch nicht wirklich, mir wird keine Zahl ausgeben.
Das kann auch nicht funktionieren, da du vorher kein mysql_connect() ausführst. Man kann keine Query schicken ohne eine Verbindung zu einem MySQL-Server zu haben. Das solltest du aber auch alleine herausgefunden haben, denn du wirst sicher Fehlermeldungen bekommen haben. Ein Blick ins Manual verrät dann, dass keine Verbindung besteht.


Zitat:
Da ich aber von OOP noch nicht wirklich viel verstehe, brauche ich bitte eure Hilfe.
Das hat rein garnichts mit OOP zu tun, sondern kann dir in prozeduraler Schreibweise auch passieren.

Suchst du ein Beispiel für eine MySQL-Klasse dann kannst du mal in meinem Beispiel-Webseite (http://media.adventure-php-framework...l_webseite.zip) im Ordner apps/core/database nachsehen, sort ist ein - wie ich meine - ganz gutes Beispiel.

Ich würde dir empfehlen, erst mal das Manual zum Thema MySQL zu lesen und danach Literatur zu OOP. es geht bei OOP nämlich im wesentlichen nicht darum einfach nur Klassen zu haben, sondern es geht um das DESIGN dahinter.
Danke
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Geändert von dr.e. (13.06.2009 um 17:05 Uhr).
dr.e. ist offline  
Alt 15.03.2007, 13:26  
Kein Genie
Gast
 
Beiträge: n/a
Standard

Also, ich habe eine Verbindung zu DB, das hätte ich vielleicht noch erwähnen sollen. Ich habe in der config.inc.php die ich am anfang einbinde eine DB Verbindung aufgeaut.

Und ich arbeite mit folgendem Tutorial http://www.selfphpfriend.de/praxisbu...h.php?group=37

Also dort habe ich angefangen über OOP zu lesen und ws es eigentlich ist.
Daher will ich jetzt mein Forum in Version 2 mit OOP bestücken.
 
Alt 15.03.2007, 13:56  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Kein Genie,

Zitat:
Also, ich habe eine Verbindung zu DB, das hätte ich vielleicht noch erwähnen sollen. Ich habe in der config.inc.php die ich am anfang einbinde eine DB Verbindung aufgeaut.
Das hat aber definitely nicht mit OOP zu tun. Im Rahmen der OOp geht man davon aus, die Software in verschiedene Schichten zu unterteilen. Das könnte so aussehen:


1. Präsentation
2. Business-Schicht
3. Datenschicht
4. MySQL-Klasse


Wenn man das weiterdenkt, so MUSS es direkte Aufgabe der MySQL-Klasse sein, die Verbindung herzustellen und die Datenschicht darf sich nicht um das Thema kümmern dürfen.


Zitat:
Also dort habe ich angefangen über OOP zu lesen und ws es eigentlich ist.
Daher will ich jetzt mein Forum in Version 2 mit OOP bestücken.
Da es bei OOP auch darum geht nach dem Paradigma "think before you code" z uleben, solltest du dir erst mal Gedanken machen, was die Klasse, bzw. eigentlich Schicht können/leisten soll.
Ich würde sagen, so soll eine abstrahierte Möglichkeit bieten, auf eine Datenquelle "MySQL" zuzugreifen. Damit muss die Datenschicht (öffentliche) Methoden kennen, die sowas zulassen. From the scratch:

Ich würde erwarten, dass ich Methoden mit dem Namen

- executeSQL()
- getNumRows()
- getLastID()
- setConnection()

hat.

Und jetzt kommst du!
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 15.03.2007, 14:05  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

[klugscheiß]
Zitat:
Zitat von dr.e.
Das hat aber definitely nicht mit OOP zu tun. Im Rahmen der OOp geht man davon aus, die Software in verschiedene Schichten zu unterteilen. Das könnte so aussehen:


1. Präsentation
2. Business-Schicht
3. Datenschicht
4. MySQL-Klasse
Das ist so nicht richtig. OOP unerteilt Anwendungsgebiete nur in Objekte. Das MVC-Pattern ist eine Ausprägung von OOP, nicht eine Folge
[/klugscheiß]

Pack die Verbindungsdaten einfach in den Konstruktor.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 15.03.2007, 14:45  
Kein Genie
Gast
 
Beiträge: n/a
Standard

ok.
Ich habe jetzt mal weiter gemacht udn alles klappt

PHP-Code:
<?php
error_reporting 
(E_ALL);

include(
'../juca/config.inc.php');

class 
mysql {

    public function 
__construct() {
        
$mysql_config_host             'localhost';
        
$mysql_config_user              'root';
        
$mysql_config_password           '';
        
$mysql_config_database        'juca';

        if (!((
$dblink mysql_connect($mysql_config_host,$mysql_config_user,$mysql_config_password)) && (mysql_select_db($mysql_config_database,$dblink)))) die(mysql_error());
    }
    
    public function 
get_numbers ($sql) {
        
$result mysql_query($sql);
        
$return mysql_num_rows($result);
    
        echo 
$return;
    }
    
    public function 
select ($sql) {
        
$return mysql_query($sql);
    
        return 
$return;
    }
}

$sql2 "SELECT board_name FROM board_boards";
$numbers = new mysql($sql2);

echo 
'Es gibt ';
$numbers -> get_numbers($sql2);
echo 
' Boards

'
;

$k $numbers -> select($sql2);

while(
$ke mysql_fetch_assoc($k))
{
    echo 
$ke['board_name'];
}

?>
 
Alt 15.03.2007, 15:23  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

vieleicht mal hier vorbeischauen:
http://tut.php-q.net/mysql-class.html
__________________
Wie man Fragen richtig stellt
dsmcg ist offline  
Alt 15.03.2007, 16:03  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von KingCrunch
[klugscheiß]
Zitat:
Zitat von dr.e.
Das hat aber definitely nicht mit OOP zu tun. Im Rahmen der OOp geht man davon aus, die Software in verschiedene Schichten zu unterteilen. Das könnte so aussehen:


1. Präsentation
2. Business-Schicht
3. Datenschicht
4. MySQL-Klasse
Das ist so nicht richtig. OOP unerteilt Anwendungsgebiete nur in Objekte. Das MVC-Pattern ist eine Ausprägung von OOP, nicht eine Folge
[/klugscheiß]

Pack die Verbindungsdaten einfach in den Konstruktor.
Hallo KingCrunch,

du musst dir meinen beitrag auch mal genau durchlesen. ich sprach von "Im Rahmen der OOp geht man davon aus, [..]" und nicht dass OOP-Philosophie Schichten sind.
Aber Gegenfrage: macht OOP in deiner Definition Sinn, wenn man keine Patterns einsetzt?
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 15.03.2007, 16:23  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Joa, klar. Wenn man einfach ne MySQL-Klasse schreibt, dann ist die ohne Pattern Und ja: Klar, kann man das per factory-Pattern auch machen. Aber wenn man NUR MySQL-Klasse braucht, lohnt sich das eher weniger
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 15.03.2007, 16:32  
Kein Genie
Gast
 
Beiträge: n/a
Standard

Ok, auch mal ne Frage stellen wollen, das war ein Punkt den ich auch noch nicht ganz verstanden habe, wofür braucht man diese Patterns eigentlich genau?
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
eigene Klasse für mySql PW und UN Reen_Sc Datenbanken 4 09.07.2008 16:15
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
PHP + MySQL zwei Instanzen vertragen sich nicht Leisurelarry PHP Tipps 2008 11 04.10.2007 16:45
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
tutorial mysql klassen im oop projekt phpdummi Beitragsarchiv 4 17.01.2007 20:17
Funktionsweise der Klasse => Verständnisprüfung... Canni PHP Tipps 2007 2 18.12.2006 11:42
MySQL - Klasse: Wie da mysql_close benutzen Igäl PHP Tipps 2006 5 01.10.2006 23:09
mysql klasse - handling mehrerer connections mrSpok PHP Tipps 2006 5 14.04.2006 01:05
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
mysqli_multi_query() => MySQL server has gone away bicpi PHP-Fortgeschrittene 10 16.09.2005 03:02
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
Habe Mysql KLasse geschrieben, aber... Spike_php PHP-Fortgeschrittene 10 27.03.2005 09:15
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47
MySQL => Excel mit PHP PHP Tipps 2004 4 31.07.2004 12:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php oop mysql, php mysql oop, mysql klasse php5, mysql oop, oop php mysql, oop mysql, php5 mysql klasse, mysql class php5, php oop mysql klasse, mysql php oop, php5 mysql class, http://www.php.de/php-tipps-2007/43690-oop-mysql-klasse.html, php5 oop mysql, oop mysql php, oop mysql klasse, oop php5 mysql, mysql klasse, php mysql class, objektorientierte programmierung php mysql, objektorientierte programmierung mysql

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.