BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren! |
 |

11-09-2003, 20:30
|
lordsepp
Newbie
|
|
Registriert seit: Aug 2003
Beiträge: 11
|
|
MySQL Datenbank Klasse
Hi Leude...
ich arbeite schon lange mit php habe ich aber erst vor nem monat oder so an klassen rangetraut...
hier meine erste funktionierende klasse
PHP-Code:
<?
// Benötigt: MySQL Zugangsdaten als Array -> $MySQL['host'], user, pass, base
class db_class
{
function db_class($sql) // Konstruktor
{
$this->MySQL = $GLOBALS['MySQL'];
$this->sql = $sql;
$this->my_connect();
$this->db_select();
} // Ende Konstrukor
function my_connect() // Verbindungsaufbau zum Datenbankserver
{
if (!$this->conn_id = mysql_connect($this->MySQL['host'],$this->MySQL['user'],$this->MySQL['pass']))
{ echo "Die Verbindung zum Datenbankserver konnte nicht hergestellt werden.<br>"; }
return $this->conn_id;
}
function db_select() // Wählt die Datenbank aus
{
if (!$this->select = mysql_select_db($this->MySQL['base'],$this->conn_id))
{ echo "Datenbankanfrage Fehlgeschlagen.<br>"; }
return $this->select;
}
function query() // Sendet einen sql befehl zur Datenbank
{
if (!$this->result = mysql_query("$this->sql"))
{ echo "Zugriff Daten Fehlgeschlagen.<br>"; }
return $this->result;
$this->my_close();
}
function my_close() // Beendet die Verbindung zur Datenbank
{
mysql_close($this->conn_id);
}
}
?>
Die Klasse wird folgendermassen aufgerufen:
PHP-Code:
$db = new db_class("SELECT * FROM $table");
$row = mysql_fetch_array($db->query())
und dann wie gewohnt die spalten auslesen...
Ich wäre sehr dankbar über verbesserungsvorschläge bzw. hatte ich vor eine Error funktion mit einzubauen...
habe aber keinen plan wie ich das anstellen soll
Viel spass beim Code klaun 
(dafür poste ich es ja...  )
Geändert von lordsepp (12-09-2003 um 00:40 Uhr)
|

11-09-2003, 21:52
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.625
|
|
wo ist jetzt der vorteil in deiner class?
- für jede query machst du einen neuen connect zur db auf.
- du hast keine fehlerbehandlung. (ok, das wolltest du ja noch machen.  )
- der php-code ist dennoch nicht weniger und besser geworden.
im endeffekt ist es nur als ein umständlicher alias für mysql_query() anzusehen.
daher musst du da wohl noch einmal ran...
|

11-09-2003, 22:12
|
lordsepp
Newbie
|
|
Registriert seit: Aug 2003
Beiträge: 11
|
|
im prinzip haste recht
aber wie bau ichs am besten auf damit deine punkte erfüllt werden...
das mit dem neuen connect bei jedem aufruf könnte ich ja umgehen wenn ich den connect in den konstruktor reinhaue und den sql befehl an der query funktion ranbaue....
so brauch ich die klasse nur einma aufrufen und kann dann mit
$db->query($sql)
nen neuen befehl senden...
dann muss ich aber trotzdem am ende jeder seite die datenbank schliessen...
langsam blick ich nichmehr durch 
wäre schon für denkantsösse sehr dankbar
|

11-09-2003, 22:17
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.625
|
|
als erstes kommst du jetzt aus den CS zum BS rein.... *VERSCHIEB*
Zitat:
so brauch ich die klasse nur einma aufrufen und kann dann mit
$db->query($sql)
nen neuen befehl senden...
|
schlaues kerlchen...  dann mache das doch schon einmal.
Zitat:
wäre schon für denkantsösse sehr dankbar
|
deswegen bist du nun hier im BS....
aber hier schonmal die WICHTIGSTEN fkts einer db-class
PHP-Code:
<?php
class database
{
function database() {}
function connect() {}
function close() {}
function select_database() {}
function sql() {}
function fetch() {}
function get_field() {}
}
?>
Zitat:
dann muss ich aber trotzdem am ende jeder seite die datenbank schliessen...
|
das macht php für dich.
|

11-09-2003, 23:04
|
Hopka
PHP Expert
|
|
Registriert seit: May 2003
Ort: Köln
Beiträge: 2.172
|
|
Zitat:
Original geschrieben von Abraxax
das macht php für dich.
|
Womit wir die Methode close schonmal weglassen können.
Eine Methode select_db find ich auch nur bedingt nützlich, weil man sowieso immer die gleiche DB verwendet, und das ganze somit besser in den Konstruktor packt (is aber Geschmackssache).
|

11-09-2003, 23:07
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.625
|
|
Zitat:
Original geschrieben von Hopka
[...] weil man sowieso immer die gleiche DB verwendet, und das ganze somit besser in den Konstruktor packt (is aber Geschmackssache).
|
im prinzip hast du recht.
wenn du aber bei deinem hoster mehrere DBs nutzen kannst, so kannst du bequem wechseln...  ausserdem rufe ich den db-selector eh im contructor auf.
|

12-09-2003, 00:25
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.279
|
|
Zitat:
Original geschrieben von Abraxax
das macht php für dich.
|
Den Blödsinn hört man auch immer wieder ... natürlich macht PHP das ... allerdings gehört es zu einem sauberer Programmierstil so etwas selbst zu machen ... !
Ihr quakt euch hier im Forum einen zurecht wie man seine Scripte optimieren kann ... schon mal darüber nachgedacht Das eine Manuell geschlossene Datenbankverbindung eventuell anderen Scripten eher wieder zur Verfügung steht ... ?? ... Scheinbar hast Du noch nie ein System entwickelt das richtig Last macht ... !
Natürlich gehört eine close()-Methode ... ein eine richtige DB Klasse ... allerdings ist das Grundgerüst schon so zurechtgestümpert, das Du die getrost auch noch weglassen kannst ... !
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
|

12-09-2003, 00:37
|
lordsepp
Newbie
|
|
Registriert seit: Aug 2003
Beiträge: 11
|
|
jo... hack doch auf mir rum!!! 
Zitat:
Natürlich gehört eine close()-Methode ... ein eine richtige DB Klasse ... allerdings ist das Grundgerüst schon so zurechtgestümpert, das Du die getrost auch noch weglassen kannst ... !
|
falls du lesen kannst lies das:
Zitat:
hier meine erste funktionierende klasse
|
ich habe das nicht umsonst hier gepostet...
sondern um konstruktive tipps zu bekommen die mir weiterhelfen einen von dir sogenannten "sauberen Programmierstil" zu bekommen!!!
ansonsten...
|

12-09-2003, 00:39
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.279
|
|
Zitat:
Original geschrieben von lordsepp
jo... hack doch auf mir rum!!!
|
Ehrlich gesagt ging es mir nicht um Dein Konzept ... das dieses Dein erster Versuch war hatte ich durchaus verstanden ... !
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
|

12-09-2003, 00:43
|
lordsepp
Newbie
|
|
Registriert seit: Aug 2003
Beiträge: 11
|
|
Naja möchte nicht gleich als Forenneuling stress anfangen!
hatte mich aber schon etwas angegriffen gefühlt...
|

12-09-2003, 00:51
|
goth
 Moderator
|
|
Registriert seit: Mar 2002
Ort: Erde
Beiträge: 7.279
|
|
Entspann Dich wieder ...
__________________
carpe noctem
Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!
|

12-09-2003, 06:50
|
BloodReaver
Master
|
|
Registriert seit: Feb 2003
Ort: Rechts der Pegniz
Beiträge: 884
|
|
OffTopic: das war kein angriff!
das war eine normale goth-meinungsäuserung 
__________________
Man lernt nie aus...
...und wenn man's doch tut braucht man sich auch nicht schämen!
|

12-09-2003, 09:19
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.625
|
|
Zitat:
Original geschrieben von goth
Natürlich gehört eine close()-Methode ... ein eine richtige DB Klasse ... allerdings ist das Grundgerüst schon so zurechtgestümpert, das Du die getrost auch noch weglassen kannst ... !
|
@goth.
ich gehe mal davon aus, dass du mich meinst?
wenn du genau siehst, gibt es die close() auch bei mir!
ansonsten hast du recht. nur wenn es noch nicht sauber unter php4 funktioniert einen destruktor (oder wie es richtig heisst) zu haben, musst du es manuell machen. und da meine scripte i.d.r. nicht ewig laufen, lasse ich das close() von php machen.
somit wird seitens php die verbindung getrennt und gut ist.
|

14-09-2003, 17:34
|
lordsepp
Newbie
|
|
Registriert seit: Aug 2003
Beiträge: 11
|
|
@goth
wenn du Abraxax beispiel zurechtgestümpert findest...
wie würdest du es denn machen?
|

23-09-2003, 02:36
|
lordsepp
Newbie
|
|
Registriert seit: Aug 2003
Beiträge: 11
|
|
mein verbesserungsversuch... :)
Habe mich vor ein paar tagen mal wieder ernsthaft mich damit beschäftigt
und bin auf ein recht ansehnliches ergebnis gekommen (also denke ich jetzt mal  )
war wirklich sehr viel arbeit *angeb* 
bin aber immer noch für verbesserungsvorschläge und tipps offen
ist ein bisschen kommentarlos... die bin ich grade am einfügen ich hoffe ihr blickt trotzdem durch!
PHP-Code:
<?
// Benötigt: MySQL Zugangsdaten als Array -> $MySQL['host'], $MySQL['user'], $MySQL['pass'], $MySQL['base']
class db_class
{
var $MySQL;
var $status = 0;
var $conn_id;
var $select;
var $sql;
var $result;
var $result_rows;
var $while_str;
var $row;
var $errornum;
var $errormsg;
function db_class()
{
$this->MySQL = $GLOBALS['MySQL'];
$this->connect();
$this->select_db();
}
function connect()
{
if ($this->status != 1)
{
if (!$this->conn_id = mysql_connect($this->MySQL['host'],$this->MySQL['user'],$this->MySQL['pass']))
{
$this->errormsg = mysql_error();
$this->errornum = mysql_errno();
return 0;
} else { $this->status = 1; return 1; }
} else { return 0; }
}
function select_db()
{
if ($this->status == 1)
{
if (!$this->select = mysql_select_db($this->MySQL['base'],$this->conn_id))
{
$this->errormsg = mysql_error();
$this->errornum = mysql_errno();
return 0;
} else { return 1; }
} else { return 0; }
}
function query($sql)
{
if ($this->status == 1)
{
if (!$this->result = mysql_query($sql))
{
$this->errormsg = mysql_error();
$this->errornum = mysql_errno();
return 0;
}
else
{
if(substr($sql, 0, 6) == "SELECT")
{
$this->result_rows = mysql_num_rows($this->result);
return 1;
}
}
} else { return 0; }
}
function fetch_array()
{
if(!$this->result)
{
$this->errormsg = 'Result is empty.';
$this->errornum = '----';
return 0;
}
else
{
return mysql_fetch_array($this->result);
}
}
function print_for($while_str)
{
while($row = $this->fetch_array())
{
eval('echo "'.addslashes($while_str).'";');
}
}
function error()
{
return ($this->errornum . " : " . $this->errormsg);
}
}
?>
Aufruf durch zB:
PHP-Code:
$db = new db_class();
$db->query("SELECT * FROM menue ORDER BY rang");
$db->print_for('<a href="$row[link]">$row[title]</a><br>');
Geändert von lordsepp (23-09-2003 um 12:11 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
Aktuelle PHP Scripte
Homepagetools 2022
Kostenloses Gästebuch und Homepagetools für die eigene Homepage.
Bei GuxDu kann man sich kostenlos die Websitetools auf die vorhandene Website einbauen. Zudem kann man bei GuxDU auch eine eigene Homepage mit 3D Effekten erstellen. GuxDu ist kostenlos.
29.04.2022
freepler | Kategorie: PHP/ Gaestebuch
|
SF-Shopsystem V1.0
Hier haben wir ein einzigartiges Shopsystem in PHP.
Die Anzahl der Artikel ist unbegrenzt, einfach zu bedienen und erklärt sich.
Ausführliche Beschreibung weiter unten.
28.04.2022
Speedcrawler | Kategorie: PHP/ Shops
|
Anzeigen Markt mit PayPal Bezahl System
Anzeigen Markt Script
mit PayPal Bezahl System
Der Benutzer hat die Möglichkeit sofort nach Bezahlung mit PayPal
seine Anzeigen zu schalten, je nach seinem Guthaben.
27.04.2022
Webace_de | Kategorie: PHP/ Anzeigenmarkt
|
Alle PHP Scripte anzeigen
|