JGuntherS Geplaatst: 6 juli 2006 Rapport Geplaatst: 6 juli 2006 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: De constructorUitwerking: In de constructor wordt het plaatje gecreërd, en wordt de class geïnitialiseerd. Parameters: $size_x: de breedte van het plaatje. $size_y: de hoogte van het plaatje. Teruggeefwaarde: Geen FillBackground Uitwerking: Met deze functie kan de achtergrond van het plaatje gevuld worden. Parameters: $r: de R-waarde van de achtergrondkleur [0-255]. $g: de G-waarde van de achtergrondkleur [0-255]. $b: de B-waarde van de achtergrondkleur [0-255]. $a: de alphawaarde van de achtergrondkleur [0-127]. Teruggeefwaarde: Geen Output Uitwerking: Met deze functie kan het plaatje weergegeven worden. Parameters: $release [optioneel, standaard = true]: als deze parameter true is, wordt het plaatje automatisch uit het geheugen verwijderd [true/false]. Teruggeefwaarde: Geen Release Uitwerking: Met deze functie kan het plaatje uit het geheugen verwijderd worden. Parameters: Geen Teruggeefwaarde: Geen PrintText Uitwerking: Met deze functie kan er tekst op het plaatje geprint worden. ($text, $font, $text_size, $x, $y, $r, $g, $b, $a, $text_angle) Parameters: $text: de te printen tekst. $font: de bestandsnaam van het lettertype, vergeet de 'ttf'-extensie niet! $text_size: de grootte van de tekst. $x: de x-coordinaat van de plek waar de tekst moet beginnen. $y: de y-coordinaat van de plek waar de tekst moet beginnen $r: de R-waarde van de achtergrondkleur [0-255]. $g: de G-waarde van de achtergrondkleur [0-255]. $b: de B-waarde van de achtergrondkleur [0-255]. $a: de alphawaarde van de achtergrondkleur [0-127]. $text_angle: de hoek waaronder de tekst geprint moet worden. Teruggeefwaarde: Geen GetImageHandle Uitwerking: Met deze functie kan de handle van het plaatje verkregen worden. Parameters: Geen Teruggeefwaarde: De handle van het plaatje. 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: De constructorUitwerking: In de constructor wordt de class geïnitialiseerd. Parameters: $user: de MySQL-gebruiker om verbinding mee te maken. $psw: het MySQL-wachtwoord om verbinding mee te maken. $db: de te gebruiken database. $host [optioneel, standaard = 'localhost']: de host waar verbinding mee gemaakt moet worden Teruggeefwaarde: Geen Connect Uitwerking: Met deze functie kan er verbinding worden gemaakt met de MySQL-database. Parameters: Geen Teruggeefwaarde: true als het verbinding maken gelukt is. false als het verbinding maken mislukt is. Query Uitwerking: Met deze functie kan er een query uitgevoerd worden. Parameters: $query: de uit te voeren query Teruggeefwaarde: Het resultaat van de query, false als het uitvoeren van de query mislukt is. Close Uitwerking: Met deze functie kan de verbinding met de MySQL-database verbroken worden Parameters: Geen Teruggeefwaarde: Geen Select Uitwerking: Met deze functie kan een select-query uitgevoerd worden. Parameters: $table: de MySQL-table waarin de select-query uitgevoerd moet worden. $fields [optioneel, standaard = '*']: de MySQL-fields die geselecteerd moeten worden. $where [optioneel, standaard = null]: de MySQL-kolommen die geselecteerd moeten worden. Teruggeefwaarde: Het resultaat van de query, false als het uitvoeren van de query mislukt is. FreeResult Uitwerking: Met deze functie kan het resultaat van een query 'opgeschoond' worden Parameters: $result: het op te schonen resultaat. Teruggeefwaarde: Geen 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 . Reageren
Le MrG Geplaatst: 7 juli 2006 Rapport Geplaatst: 7 juli 2006 Zeer handige Tutordail Ookal is het er geen een vind ik het er wel op lijken aangezien je na iedere Class uitlegt wat de functies doen enz. Zelf wist ik nog niks van die GD libary, dus hier steek ik een hoop mee op Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.