SELFPHP: Version 5.6.9 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



iOS DevCon 2013



Software Architecture Summit 2013


Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 

CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 


Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.02.2007, 14:08:54
clockwork clockwork ist offline
Anfänger
 
Registriert seit: Feb 2007
Beiträge: 5
clockwork befindet sich auf einem aufstrebenden Ast
Klassenproblem

Hi erstmal, bin neu hier im Forum weil ich ein Problem habe :)

Ich habe seit kurzem mit OOP PHP begonnen und möchte mir zum erlernen der Klassen eine kleine MySQL Funktion basteln. Dies klappt aber nur halbwegs so wie ich das gerne möchte ;)

Irgendwie werden die Daten unendlich oft hitereinander ausgegeben ;) bzw. der Datensatz, da ich ja die DB auch nur testweise erstellt habe :)

index.php
PHP-Code:
<?php
include 'lib/class.MySQL.php';

$MySQL = new MySQL;

$connection $MySQL->connect_db('localhost','news_admin','asdf');
$MySQL->select_db('news_system');

while(
$array $MySQL->sql_select_array('SELECT * FROM `t_user`'))
{
    echo 
$array['username'];
}
?>
class.MySQL.php
PHP-Code:
<?php

class mySQL {
    var 
$connected;
    var 
$issue FALSE;
    var 
$select FALSE;

    
//MySQL connection data
    
var $host;
    var 
$user;
    var 
$password;
    var 
$db;
    
    function 
connect_db($host,$user,$password)
    {
        if(!
$this->connected mysql_connect($host,$user,$password))
        {
            echo 
"Fehler beim Verbinden der Datenbank ...";
        }
        return 
$this->connected;
    }
    
    function 
close_db()
    {
        
mysql_close($this->connected);
    }
    
    function 
select_db($db)
    {
        if(!
mysql_select_db($db,$this->connected))
        {
            echo 
"Fehler beim Auswaehlen der Datenbank ...";
        }
    }
    
    function 
sql_select($sql)
    {
        if(!
$this->select mysql_query($sql))
        {
            echo 
"Fehler beim Auslesen der SQL-Datensaetze ...";
        }
        return 
$this->select;
    }
    
    function 
sql_select_array($sql)
    {
        if(!
$this->issue mysql_fetch_array($this->sql_select($sql)))
        {
            echo 
"Fehler beim erstellen des Array ...";
        }
        return 
$this->issue;
    }
    
    function 
sql_select_assoc($sql)
    {
        if(!
$this->issue mysql_fetch_assoc($this->sql_select($sql)))
        {
            echo 
"Fehler beim erstellen des Array ...";
        }
        return 
$this->issue;
    }
    
    function 
sql_fetch_row($sql)
    {
        if(!
$this->issue mysql_fetch_row($this->sql_select($sql)))
        {
            echo 
"Fehler beim erstellen des Array ...";
        }
        return 
$this->issue;
    }
}
?>
Mit Zitat antworten
  #2  
Alt 21.02.2007, 14:16:21
lars68
Guest
 
Beiträge: n/a
AW: Klassenproblem

hi,

erstmal muss ich dich enttäuschen!

der datenbankzugriff wie du ihn hier verwendet ist nicht mehr lange in dieser art in den neuesten PHP releases verfügbar....

die 'mysql' funktionen fallen raus!

deshalb sollte ab jetzt nur noch der nachfolger, die alleseits beliebte, mitgelieferte PDO klasse regeln!

die vorteile der PDO-klasse liegen hauptsächlich darin, dass statements für versch. arten von datenbanken verwendet werden können!

also --> http://www.php.net --> suche: PDO

aber kein grund zur sorge! du entscheidest ja selbst welches PHP release auf deinem server läuft....
wollte nur mal erwähnen dass es einen nachfolger gibt *schäm*


hf & gl :D

Geändert von lars68 (21.02.2007 um 14:18:06 Uhr)
Mit Zitat antworten
  #3  
Alt 21.02.2007, 14:20:14
clockwork clockwork ist offline
Anfänger
 
Registriert seit: Feb 2007
Beiträge: 5
clockwork befindet sich auf einem aufstrebenden Ast
AW: Klassenproblem

oha xD

das heisst dan wohl, neu schreiben :D
Mit Zitat antworten
  #4  
Alt 21.02.2007, 14:23:49
lars68
Guest
 
Beiträge: n/a
AW: Klassenproblem

hey ne musst du nich =)

nur bei den neuesten php releases dann....

bin mir aba ehrlich gesagt net mal mehr sicher ab welcher VER das sein wird !

also kein stress!!
lehn dich zurück und benutz die mysql fkt =)

war nur dumme klugscheißerei weil mir langweilig is *g*
sorry


wenn ich dir die handhabung von PDO erklärn soll kann ich das schnell mache...sieht komplizierter aus als es ist !

gruß

Geändert von lars68 (21.02.2007 um 14:25:08 Uhr)
Mit Zitat antworten
  #5  
Alt 21.02.2007, 15:49:07
clockwork clockwork ist offline
Anfänger
 
Registriert seit: Feb 2007
Beiträge: 5
clockwork befindet sich auf einem aufstrebenden Ast
AW: Klassenproblem

jo, wäre ich eh froh wenn mir einer das ganze noch erklären könnte, blicke wirklich nicht durch, was denn da oben nicht stimmt :D
Mit Zitat antworten
  #6  
Alt 22.02.2007, 11:27:04
cyan.ide cyan.ide ist offline
Anfänger
 
Registriert seit: Feb 2007
Beiträge: 32
cyan.ide befindet sich auf einem aufstrebenden Ast
AW: Klassenproblem

Zitat:
Zitat von lars68 Beitrag anzeigen
der datenbankzugriff wie du ihn hier verwendet ist nicht mehr lange in dieser art in den neuesten PHP releases verfügbar....

die 'mysql' funktionen fallen raus!
Wo steht das? Und wo steht, das statt dessen PDO zum Einsatz kommt?
Sicher ist PDO die best practice, aber wozu wurde dann MySQLi eingefuehrt?

Zur Ermutigung:
Eine Klasse - wie oben vorgestellt - ist eigentlich eine tolle Sache, wenn sich diese Klasse als Wrapper fuer die direkten Datenbankfunktionen versteht.

Zumal sich dadurch auch Konstrukte realisieren lassen wie:

PHP-Code:
[...]
function 
sqlstr$str )
{
    if ( 
get_magic_quotes_gpc() ) $str stripslashes$str );
    return 
mysql_real_escape_string$str$this->res );
}

[...]

function 
insert$table$vars$file$line )
{
    
$names ""$values "";
    
mysql_ping$this->res );
    if( 
$vars ) foreach( $vars as $n => $v )
    {
        if(
$names$names .= ", "$names .= "`".$n."`";
        if(
$values$values .= ", "$values .= "\"".$this->sqlstr$v )."\"";
    }
    
$query "INSERT INTO ".$this->prefix.$table." ( ".$names." ) VALUES ( ".$values." );";
    
$this->do_query$query );
    
$last_insert_id 0;
    
$last_insert_id_res mysql_query"SELECT LAST_INSERT_ID();"$this->res );
    if( 
$last_insert_id_res $last_insert_id mysql_result$last_insert_id_res);
    
$this->catcherror$query$file$line );
    
$this->affected mysql_affected_rows$this->res );
    return 
mysql_insert_id$this->res );
}
[...] 
PHP-Code:
[...]
unset( 
$var );
$var["feld1"] = "abc";
$var["feld2"] = 123;
$var["feld3"] = $unquoted_variable;
$db->insert"mytable"$var__FILE____LINE__ );
[...] 
Das ganze ist dann im schlimmsten Fall komplett durch PDO / MySQLi oder andere Funktionen anpassbar, ohne dass man alles umschreiben muss.

Geändert von cyan.ide (22.02.2007 um 11:28:30 Uhr)
Mit Zitat antworten
  #7  
Alt 22.02.2007, 20:10:39
Opendix Opendix ist offline
Senior Member
 
Registriert seit: Oct 2004
Ort: Werdenberg / Schweiz
Alter: 25
Beiträge: 1.474
Opendix befindet sich auf einem aufstrebenden Ast
Opendix eine Nachricht über MSN schicken
AW: Klassenproblem

Zitat:
die 'mysql' funktionen fallen raus!
dies halte ich definitiv für ein Witz!
Ich denke dann würde der grösste Teil der PHP-Applikationen nicht mehr funktionieren!
Und die Entwickler machen ja schon ein drum rum wenn man ein einzelnen Funktionen die Parameter-Reihenfolge ändern sollte (damit über gleich) da werden sie kaum eine sooo wichtige Komponente standardmässig entfernen!

btw. schau dir doch mal die PEAR-Klassen zu diesem Thema an!
Oder Proepel (oder so) find eich auch noch interessant :)
__________________
Opendix lehnt jegliche Haftung für evtl. vorhandene Fehler in der Grammatik sowie der Satzstellung ab! Bitte wenden Sie sich an die Tastatur!

Betatester gesucht:
Skiclub Gams / CEVI Grabs

Geändert von Opendix (22.02.2007 um 20:11:32 Uhr)
Mit Zitat antworten
  #8  
Alt 22.02.2007, 20:26:22
cyan.ide cyan.ide ist offline
Anfänger
 
Registriert seit: Feb 2007
Beiträge: 32
cyan.ide befindet sich auf einem aufstrebenden Ast
AW: Klassenproblem

Sag(t) mal, kann man PEAR eigentlich bei Kommerz-PHP5-Hosting-Paketen voraussetzen?
Kein Hoster schreibt dazu was (...ob dafuer oder dagegen)
Mit Zitat antworten
  #9  
Alt 22.02.2007, 20:44:50
Opendix Opendix ist offline
Senior Member
 
Registriert seit: Oct 2004
Ort: Werdenberg / Schweiz
Alter: 25
Beiträge: 1.474
Opendix befindet sich auf einem aufstrebenden Ast
Opendix eine Nachricht über MSN schicken
AW: Klassenproblem

Nein ich denke nicht. zumindest bei hostpoint.ch muss man für sämtliche PEAR-Klassen selbst sorgen.

Aber das ja kein Problem....
__________________
Opendix lehnt jegliche Haftung für evtl. vorhandene Fehler in der Grammatik sowie der Satzstellung ab! Bitte wenden Sie sich an die Tastatur!

Betatester gesucht:
Skiclub Gams / CEVI Grabs
Mit Zitat antworten
  #10  
Alt 23.02.2007, 07:59:30
BenniG. BenniG. ist offline
Member
 
Registriert seit: Oct 2006
Beiträge: 610
BenniG. befindet sich auf einem aufstrebenden Ast
AW: Klassenproblem

Vielleicht sollte man mal wieder back to topic kommen..
Das Problem ist diese Zeile:
PHP-Code:
while($array $MySQL->sql_select_array('SELECT * FROM `t_user`')) 
Damit wird die Abfrage unendlich oft ausgeführt..
Du musst deine Klasse so machen, dass du erst die Abfrage ausführst und dann die einzelnen Zeilen durchgehst..
Also so wie es mysql_query und mysql_fetch_xxx machen. kannst dir ja mal anschauen, wie das in MySQLi gemacht ist http://www.php.net/mysqli
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
einfaches Klassenproblem DanielLorbach PHP Grundlagen 2 27.01.2003 14:18:37


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:03:23 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.


© 2001-2013 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt