php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 04-03-2004, 20:09
Àchtim
 Junior Member
Links : Onlinestatus : Àchtim ist offline
Registriert seit: Sep 2003
Beiträge: 104
Àchtim ist zur Zeit noch ein unbeschriebenes Blatt
Standard Datenbank-Klasse => Verbesserungen?

Hi Leutz,

ich habe mal eine Klasse für den Datenbankzugriff geproggt, allerdings würd mich mal interessieren, was Ihr noch verbessern würdet. Jegliche Ideen willkommen!
Ich habe auf php-resouce natürlich auch einige ähnliche Klassen gefunden, aber so richtig praktisch find ich die alle nicht... also postet mal ;-)

PHP-Code:
<?php
class Database {    
var 
$mySQLconnection;
var 
$db;
var 
$table;
var 
$host;
var 
$user;
var 
$password;
var 
$fields;
var 
$where;
var 
$sqlHandle;    
var 
$records;

function 
Database() {
    
$this->setHost();
    
$this->setUser();
    
$this->setPassword();
    
$this->setDB('usr_web101_2');    //lokale "Testdatenbank"
    
$this->fields '';
    
$this->where '';
    
$this->record 0;
}

function 
setTable($table) {
    
$this->table $table;
}

function 
setDB($database){
    
$this->db $database;
}

function 
setPassword($pass "") {
    
$this->password $pass;
}

function 
setUser($user "root") {
    
$this->user $user;
}

function 
setHost($host "localhost") {
    
$this->host $host;
}

function 
connect() {
    
$this->mySQLconnection mysql_connect($this->host,$this->user,$this->password);
    
//Keine Verbindung
    
if (!$this->mySQLconnection) die ("Keine Verbindung zur SQL - Datenbank!");
    
//Standardmäßig Datenbank schon auswählen
    
mysql_select_db($this->db) or die ("Konnte Datenbank nicht öffnen: ".mysql_error());    
}
        
function 
select($sql) {            
    
$this->sqlHandle mysql_query($sql);
    
//das Ergebnis in das Klassenarray $this->records speichern
    
$this->records = array();
    while (
$record mysql_fetch_array($this->sqlHandle)) {
        
$this->records[] = $record;
    }
    return 
$this->sqlHandle;
}
    
function 
get($field) {
    return 
$this->records[$this->record][$field];
}

function 
howMany() {
    if (
$this->sqlHandle) {
        return 
mysql_num_rows($this->sqlHandle);
    }
}

function 
insert($insertArr) {
    
$fields "(" implode(",",array_flip($insertArr)) . ")";
    
$values "('" implode("','",$insertArr) . "')";
    
$sql "INSERT INTO " $this->table " " $fields " VALUES " $values ";";
    
mysql_query($sql,$this->mySQLconnection);
}

function 
exec($sql) {
    
mysql_query($sql,$this->mySQLconnection);        
}
        
function 
nextRecord() {
    
$this->record++;
    if (
$this->record >= count($this->records)) {
        
//dann sollte auch noch der "Datensatz-Zeiger" auf 0 gesetzt werden
        
$this->record 0;                    
        return 
false;
    } else {
        return 
true;
    }
}
}

?>
Mit Zitat antworten
  #2 (permalink)  
Alt 04-03-2004, 20:26
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

willste wirklich hören?

1) sethost, password usw. die brauchst du doch alle nicht, oder? ich denke nicht wirklich! wenn solltest du eine für alle machen.

2) ob du die connect so aufbauen solltest, dass die was ausgibt? ich halte es idr. so, dass klassen nur ne ausgabe machen, wo es wirklich gewollt ist.

3) naja, über ne eigene select und insert methode lässt sich auch streiten. eigentlich sollte man in der lage sein, querys von hand zu schreiben, vorallem weil da irgendwann joins etc hinzu kommen... spätestens dann stößt du an deine grenzen und musst die exec() benutzen.

4) how many berücksichtigt affected rows nicht!

5) warum speichert select das result in einem array?

6) funktioniert nextrecord in einer while-schleife?

7) get kann keine arrays!

8) namensgebung teilweise auch etwas selten. exec z.b. halte ich für sehr ungeeignet. dann doch lieber query() oder sowas.

meiner meinung nach einiges auszubessern.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 04-03-2004, 20:32
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

btw: ist unter projekthilfe glaub' ich besser aufgehoben.
(oder brainstorming?)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #4 (permalink)  
Alt 04-03-2004, 20:40
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Bei dem Umfang

Naja, denke sowas wie OT oder BS wäre besser geeignet. Du sitzt am Hebel @wahsaga.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5 (permalink)  
Alt 06-03-2004, 17:47
rythms
 Junior Member
Links : Onlinestatus : rythms ist offline
Registriert seit: Jun 2003
Beiträge: 219
rythms ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich hab mal die insert() funktion übernommen und in meine klasse eingebaut.

eine verbindung wird über eine "DSN" aufgebaut, das ist eine Url in der form: mysql://usernameassword@server/database

folgendes kommt dabei raus, ich denke das ist praktischer.
könnt ihr gerne benutzen oder euch was daran abschauen.

PHP-Code:
<?php
 
/**
 * USAGE: 
 *  $dsn = "mysql://username:password@host/database_name";
 *  if ($sql = new sql($dsn)) {
 *      connection is ok.
 *      more commands can follow here
 *  } else {
 *      connection not established
 *  }
 *
 **/
 
/**
 * sql
 * basic sql functions
 */
    
class sql {
    
/**
    * @var resource
    * resource id of mysql connection
    * @access private
    **/
    
var $conn;
    
    
/**
    * @var resource
    * resource id of last executed query
    * @access public
    **/
    
var $result;
    
    
/**
    * @var string
    * mysql error information
    * @access public
    **/
    
var $error;

    
    
/**
     * sql::sql()
     * constructor
     * 
     * checks and parses string $dsn to mysql connection data
     * connects to database and selects table
     * returns TRUE if connection is established and database selected
     * returns FALSE if an error occured
     * 
     * @param string $dsn mysql connection url
     * @return boolean
     **/
    
function sql($dsn
    {
        
// check if dsn is correct
        
if (!preg_match("/mysql:\/\/([\w]+):([\w]+)@([\w]+)\/([\w]+)/s"$dsn$arr)) {
            
$this->error "DSN is not correct";
            return 
FALSE;
        }
        
// parse mysql data
        
$dsn parse_url($dsn);
        
        
// remove slashes from databasename
        
$dsn['path'] = str_replace("/"""$dsn['path']);
        
        
// connect to mysql server
        
if (!$this->db_connect($dsn['host'], $dsn['user'], $dsn['pass'])) {
            return 
FALSE;
        }
        
        
// select database
        
if (!$this->db_select($dsn['path'])) {
            return 
FALSE;
        }
        return 
TRUE;
    }

    
/**
     * sql::db_connect()
     * @access public
     * 
     * connects to a mysql server.
     * 
     * 
     * @param $host hostname to connect to
     * @param $user username to connect with
     * @param $pass password to connect with
     * @return boolean connection established
     **/
    
function db_connect($host$user$pass)
    {
        
$this->conn mysql_connect($host$user$pass);
        
// check for errors
        
if ($this->is_error()) {
            return 
FALSE;
        }
        return 
TRUE;

    } 


    
/**
     * sql::db_select()
     * @access public
     * 
     * selects database 
     * 
     * @param $db
     * @return boolean
     **/
    
function db_select($db)
    {
        
mysql_select_db($db);
        
        
// check for errors
        
if ($this->is_error()) {
             return 
FALSE;
        }
        return 
TRUE;

    } 


    
/**
     * sql::is_error()
     * 
     * checks if the last mysql operation failed and error information is available.
     * sets $error to use in following debugging operations.
     * 
     * @return boolean
     * @access public
     **/
    
function is_error()
    {
        
// check if there was an error
        
if (mysql_errno()) {
            
// set $error for debugging
            
$this->error mysql_error();
            return 
TRUE;
        }
        
// no error occured
        
return FALSE;
    }
    
    
/**
     * sql::query()
     * 
     * performs a mysql_query using param $query
     * - returns a resource if the query was a SELECT and one row or more could be selected.
     * - returns TRUE if the query was UPDATE, DELETE or similiar and succeeded.
     * - returns FALSE if the query failed or no rows were selected.
     * 
     * @param string $query 
     * query to perform
     * 
     * @return resource|boolean
     * @access public
     **/
    
function query($query)
    {
        
$this->result mysql_query($query);
        
// check for error
        
if ($this->is_error()) {
            return 
FALSE;
        }
        if (
mysql_affected_rows() >= 0) {
            
// UPDATE/DELETE Query was successfull
            
return TRUE;
        }
        if (
mysql_num_rows($this->result) > 0) {
            
// one or more rows could be selected, resource can be used
            
return $this->result;
        }
        return 
FALSE;
    } 


    
/**
     * sql::fetch()
     * 
     * returns an array with the results or FALSE
     * use print_r() to view the array structure
     * 
     * @param $query
     * query to perform
     * 
     * @return array|boolean
     * @access public
     **/
    
function fetch($query)
    {
        
// execute query and check for errors or NULL-results
        
if (!$this->query($query)) {
            return 
FALSE;
        }
        
        
// make an array containing the results
        
$return = array();    
        while (
$row mysql_fetch_assoc($this->result)) {
            
$return[] = $row;
        }
        return 
$return;
    } 
    
    
/**
     * sql::insert()
     * 
     * inserts values into a given table.
     * 
     * @param string $table 
     * name of table to insert into
     * 
     * @param array $insert 
     * array (field => value)
     * 
     * @return boolean
     * @access public
     **/
    
function insert($table$insert
    {
        
// form query out of array
        
$fields "(" implode(",",array_flip($insert)) . ")";
        
$values "('" implode("','",$insert) . "')";
        
$query  "INSERT INTO " $table " " $fields " VALUES " $values ";";
        
        
// execute query and check for errors
        
if ($this->query($query)) {
            return 
TRUE;
        }
        return 
FALSE;
    }

    
/**
     * sql::free()
     * @access public
     * 
     * free's memory after mysql usage
     * 
     * @return boolean
     **/
    
function free()
    {
        if(
mysql_free_result($this->result)) {
            return 
TRUE;
        } else {
            return 
FALSE;
        }
    } 


?>
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Adsman Pro - Werbe-Manager V.1.1.0

Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebigem Format, Textanzeigen und Page-Peels mit umfangreichen Text und Flash-Effekte.

30.07.2019 rhs | Kategorie: PHP/ Bannerverwaltung
HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

30.07.2019 Berni | Kategorie: MYSQL/ Management
Top-Side.de Php Guest Book

Gästebuch mit Smilies, Ip Sperre und Spammschutz. Anzeige von Datum, Name, E-Mail, Homepage und Icq. Html ist deaktiviert.

26.07.2019 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

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