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

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden |

21.04.2008, 20:01:20
|
Member
|
|
Registriert seit: Nov 2007
Ort: Karlsruhe, Dresden
Alter: 35
Beiträge: 596
|
|
Erweiterte MYSQL_i Klasse
Hy hab mal eine kleine aber (hoffentlich) feine Klasse geschrieben, mit welche die Grundlegendsten SQL-Befehl enthält.
PHP-Code:
<?php
/*
Dies ist eine Klasse für MYSQLi diese ermöglicht es
schnelle und Benutzerfreundliche Anfragen an den Server zu schicken
*/
class mysql_i
{
private $database;
public $ausgabe;
/* Hilfefunktion der Klasse */
function help()
{
echo'
<h1>Hilfe - mysql_i_Klasse</h1>
<table border="1" width="100%" cellpadding="0" cellspacing="0">
<colgroup>
<col width="200px">
<col width="*">
</colgroup>
<tr>
<td>Methode</td>
<td>Beschreibung</td>
</tr>
<tr>
<td>__construct</td>
<td>Stellt die Verbindung zum MYSQL- Server her.<br> Diese Methode wird automatisch aufgerufen</td>
</tr>
<tr>
<td>select</td>
<td>Führt einen MYSQL- Select- Befehl aus.<br> Bsp.: <b>$instanzname->select("Tabellenname","Spalte1 AS Spaltenalias, Spalte2","Bedingung")</b><br>Die Ausgabe steht nur bei diesem Befehl zur Verfügung</td>
</tr>
<tr>
<td>insert</td>
<td>Führt einen MYSQL- Insert- Befehl aus.<br> Bsp.: <b>$instanzname->insert("Tabellenname","Spalte1, Spalte2","`Inhalt1`,`Inhalt2`")</b></td>
</tr>
<tr>
<td>update</td>
<td>Führt einen MYSQL- Update- Befehl aus.<br> Bsp.: <b>$instanzname->update("tabellenname", array("Spalte1" => "Inhalt1", "Spalte2" => "Inhalt2"))</b></td>
</tr>
<tr>
<td>delete</td>
<td>Führt einen MYSQL- Delete- Befehl aus.<br> Bsp.: <b>$instanzname->delete("Tabellenname","Bedingung")</b></td>
</tr>
<tr>
<td>__destruct</td>
<td>Trennt die Datenbankverbindung</td>
</tr>
</table>
';
}
function __construct()
{
// Verbindung mit der Datenbak herstellen
$this->datebase = new mysqli("####", "####", "####", "####");
}
function select($tablename,$cols = "*",$where = "1")
{
/* SELECT ABFRAGE AUSFÜHREN */
$befehl = $this->datebase->query("SELECT $cols FROM $tablename WHERE $where");
return $befehl->fetch_object();
}
/* FUNKTION ZUM SCHREIBEN EINES DATENSATZES */
function insert($tablename,$cols,$values)
{
$this->datebase->query("INSERT INTO `$tablename` ($cols) VALUES ($values)");
}
/* FUNKTION ZUM ÄNDERN EINES DATENSATZES */
function update($tablename,$colsset)
{
if(is_array($colsset) == true)
{
$update_seq = "";
$i = 0;
foreach($colsset AS $index => $value)
{
$i++;
if($i < count($colsset))
{
$update_seq.= $index.' = `'.$value.'`, ';
}else{
$update_seq.= $index.' = `'.$value.'`';
}
}
$this->datebase->query("UPDATE $tablename SET $update_seq");
}else{
echo '<h2>Ihr Update- Befehl ist fehlerhaft, bitte lesen Sie in der Hilfe nach, wie der Updatebefehl formuliert wird!</h2>';
$this->help();
}
}
/* FUNKTION ZUM LÖSCHEN DER DATENSÄTZE */
function delete($tablename = FALSE, $where = FALSE)
{
if(($tablename != FALSE) && (($where != FALSE)))
{
$this->datebase->query("DELETE FR4OM $tablename WHERE $where");
}elseif(($tablename == FALSE) && (($where != FALSE))){
/* Fehlerausgabe, wenn kein Tabellenname angegeben wurde */
echo 'Sie haben keinen Tabellennamen eingegeben, bitte geben Sie einen Tabellennamen ein!';
}elseif(($tablename != FALSE) && (($where == FALSE))){
/* Fehlerausgabe, wenn kein WHERE angegeben wurde */
echo 'Sie haben keine WHERE- Bedingung angegeben (das Löschen alle Datensätze wurde verhindert), bitte geben Sie eine WHERE- Bedingung an!';
}else{
/* Wenn nichts angegeben wurde dann Fehler */
echo 'Bitte geben Sie die Notwendigen Parameter an ("Tabellenname","WHERE- Bedingung")!';
}
}
function __destruct()
{
// Datenbankverbindung trennen
$this->datebase->Close();
}
}
?>
Diese Klasse soll einem die Syntax ein wenig abnehmen.
Die Klasse funktioniert nur unter:
- PHP5
- MYSQLi erweiterung
Geändert von ksticker (21.04.2008 um 20:38:04 Uhr)
Grund: Mehr Infos geschríeben
|

21.04.2008, 22:35:41
|
 |
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Erweiterte MYSQL_i Klasse
Abend!
Meiner Meinung nach ist diese Klasse überhaupt nicht sinnvoll. Nicht nur, dass mysqli so oder so schon eine objektorientierte Syntax besitzt, es ist auch noch komplizierter als zuvor. Man muss erst in der Klasse rumpfuschen, bevor man zum MySQL-Server verbinden kann. Eine solche Klasse macht nur dann Sinn, wenn man noch mysql und nicht mysqli-Funktionen benutzt. Und selbst dann sollte die Klasse vollkommen anders aufgebaut sein und eine Methode wie help() hat da nichts zu suchen.
MfG, Andy
PS: Eine richtige Datenbank-Klasse hätte ungefähr die Syntax, die MySQLi so oder so schon hat.
Geändert von Socrates (21.04.2008 um 22:38:53 Uhr)
|

21.04.2008, 22:40:31
|
Member
|
|
Registriert seit: Nov 2007
Ort: Karlsruhe, Dresden
Alter: 35
Beiträge: 596
|
|
AW: Erweiterte MYSQL_i Klasse
Gibt es denn in Mysqli solche befehle wie $instanzname->insert("blablabla");?
|

21.04.2008, 22:51:55
|
 |
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Erweiterte MYSQL_i Klasse
Gibt es alles.
PHP-Code:
<?php // create object @db = new mysqli("localhost", "root", "", "test");
if(mysqli_connect_errno()) { echo "Connection failed!"; exit(); }
// run db-query if( $cmd = $db->query("SELECT * FROM tabletest") ) { // get response while ( $reply = $cmd->fetch_object() ) { // print out reply echo {$reply}; }
$cmd->close(); } else { echo "No data found!"; }
// close connection $db->close(); ?>
Geändert von Socrates (21.04.2008 um 22:52:55 Uhr)
|

21.04.2008, 22:59:20
|
Member
|
|
Registriert seit: Nov 2007
Ort: Karlsruhe, Dresden
Alter: 35
Beiträge: 596
|
|
AW: Erweiterte MYSQL_i Klasse
Ne ich meine das so $cmd = $db->insert("Spalte1","Inhalt1")
|

21.04.2008, 23:28:20
|
 |
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Erweiterte MYSQL_i Klasse
Nein das gibt es nicht. Das macht ja auch keinen Sinn, da man bei dieser Methode ja keine weiteren Optionen hinzufügen kann. Wie fragst du zum Beispiel Datensätze ab, die ein bestimmtes Datum haben. Oder wie sortierst du diese Datensätze?
MfG, Andy
|

21.04.2008, 23:43:48
|
Member
|
|
Registriert seit: Nov 2007
Ort: Karlsruhe, Dresden
Alter: 35
Beiträge: 596
|
|
AW: Erweiterte MYSQL_i Klasse
so:
PHP-Code:
function select($tablename,$cols = "*",$where = "1")
{
/* SELECT ABFRAGE AUSFÜHREN */
$befehl = $this->datebase->query("SELECT $cols FROM $tablename WHERE $where");
return $befehl->fetch_object();
}
|

22.04.2008, 02:44:40
|
 |
Member
|
|
Registriert seit: Jul 2006
Ort: Göttingen/Deutschland
Alter: 35
Beiträge: 586
|
|
AW: Erweiterte MYSQL_i Klasse
Diese Methode, diese ganze Klasse macht einfach keinen Sinn. Wenn es die Arbeit wirklich erleichtern würde, aber das tut es nicht. MySQL bietet so viele Möglichkeiten und du beschneidest sie nur durch diese Klasse.
MfG, Andy
|

25.04.2008, 14:08:50
|
Senior Member
|
|
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 54
Beiträge: 1.020
|
|
AW: Erweiterte MYSQL_i Klasse
Sehe ich genauso. Wenn Du Deine Klasse wenigstens von mysqli abgeleitet hättest, wären die Funktionen nur selten von Nutzen. So ist die Klasse leider unbrauchbar.
Schau Dir mysqli oder PDO an. Oder wenn Du darüber hinaus gehen willst, beschäftige Dich mit Abstraktionsschichten oder object relational mapping (orm).
__________________
Wat der Bauer nich kennt, dit frisster nich.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 00:51:42 Uhr.
|