[PHP] Een paar handige classes
Featured Replies
Recent actief 0
- Er zijn hier geen geregistreerde gebruikers aanwezig.
Een betere weg om onze GTA community te volgen. Leer meer.
Een volledig scherm app op het beginscherm inclusief notificaties, badges en meer.
Waarschuwing: dit is geen tutorial, maar een soort code-snippet.
Ik heb vandaag wat met PHP aangekloot en het is me gelukt om 2 werkende classes te maken; ImageClass en MySQLClass. Met ImageClass kun je 'on-the-fly' plaatjes maken, een postcounterplaatje of een profielcounterplaatje bijvoorbeeld. Hij is niet heel erg uitgebreid, je kunt het plaatje nu alleen nog maar een achtergrondkleur geven en er tekst op zetten. De GD-module voor PHP moet geïnstalleerd zijn om ImageClass te kunnen gebruiken! Met MySQLClass, je raadt het al, kun je verbinding maken met een MySQL-database. Hij is nu nog niet erg uitgebreid, but it does the job.
ImageClass:
<?php class ImageClass { var $_ih; var $_size_x; var $_size_y; function ImageClass($size_x, $size_y) { $this->_ih = imagecreatetruecolor($size_x, $size_y); if (!$this->_ih) die("Could not create an image stream (GD)"); $this->_size_x = $size_x; $this->_size_y = $size_y; } function FillBackground($r, $g, $b, $a = 0) { $color = imagecolorallocatealpha($this->_ih, $r, $g, $b, $a); imagefilledrectangle($this->_ih, 0, 0, $this->_size_x - 1, $this->_size_y - 1, $color); imagecolordeallocate($this->_ih, $color); } function Output($release = true) { header("Content-Type: image/png"); imagepng($this->_ih); if ($release) { $this->Release(); } } function Release() { imagedestroy($this->_ih); } function PrintText($text, $font, $text_size, $x, $y, $r, $g, $b, $a, $text_angle) { $color = imagecolorallocatealpha($this->_ih, $r, $g, $b, $a); @imagettftext($this->_ih, $text_size, $text_angle, $x, $y, 0 - $color, $font, $text) or die ("Could not print text"); imagecolordeallocate($this->_ih, $color); } function GetImageHandle() { return $this->_ih(); } } ?>Een beschrijving van de functies:
Een stukje voorbeeldcode:
<?php class MySQLClass { var $_user; var $_psw; var $_db; var $_host; var $_conn; var $_connected; var $_lasterr; function MySQLClass($user, $psw, $db, $host = 'localhost') { $this->_user = $user; $this->_psw = $psw; $this->_db = $db; $this->_host = $host; $this->_connected = false; $this->_lasterr = ''; } function Connect() { $this->_conn = mysql_connect($this->_host, $this->_user, $this->_psw); if (!mysql_select_db($this->_db, $this->_conn)) return false; $this->_connected = true; return true; } function Query($query) { if (!$this->_connected) { $this->_lasterr = 'Query has been called while not connected'; return false; } $result = mysql_query($query, $this->_conn); return $result; } function Close() { mysql_close($this->_conn); $this->_connected = false; $this->_conn = null; } function Select($table, $fields = '*', $where = null) { $query = 'SELECT ' . $fields . ' FROM ' . $table; if ($where != null) { $query .= ' WHERE ' . $where; } return $this->Query($query); } function FreeResult($result) { mysql_free_result($result); } } ?>Een beschrijving van de functies:
Een stukje voorbeeldcode:
<?php // Met dit stukje code kun je het aantal posts van een lid van een IPB 2.1.x forum opvragen, vanuit de database. require_once('mysqlclass.php'); // MySQLClass moet in mysqlclass.php zitten $uid = 1; // Het ID van het lid $mysql = new MySQLClass('user', 'pass', 'aaf'); // Zet hier je eigen gegevens neer... if (!$mysql->Connect()) // Verbinden die ("An error occured in the MySQL module"); $result = $mysql->Select('ibf_members', 'posts', 'id=' . $uid); // Voer een select-query uit $row = mysql_fetch_assoc($result); // Verkrijg een array van het resultaat if (!$row) // Is de array leeg? die ("UID invalid"); // Zo ja, dan is waarschijnlijk het uid fout $posts = $row["posts"]; // Het aantal posts $mysql->FreeResult($result); // Resultaat opschonen $mysql->Close(); // Verbreek verbinding echo $posts; // Geef het aantal posts weer. ?>Disclaimer: deze classes mag je vrijelijk gebruiken en veranderen, maar wil je mij wel bij de credits vermelden als de een van deze classes gebruikt? Bij voorbaat dank
.
Suggesties/verbeteringen/fouten/andere dingen? Posten kreng
.