• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

Jonge, ervaren webdeveloper! | Deadline: NVT

  • Fold
  • 15 november 2009 om 17:21
  • Closed
  • Fold
    Yes, we can!
    Berichten
    100
    • 15 november 2009 om 17:21
    • #1

    LET OP: Oorspronkelijk hier geplaatst!

    Titel van de werkzaamheden:
    Jonge, ervaren webdeveloper!

    Soort werkzaamheden:
    programmering, scripten.

    Omschrijving van de werkzaamheden:
    Het ontwikkelen van web / browser based applicaties met behulp van PHP & MySQL.

    Budget voor dit project:
    xx | xxx

    Deadline:
    NVT

    BTW-nummer verplicht:
    ja | nee

    Voorbeelden:
    http://richardsnijders.com/scripts (meest relevante script)

    Bijlagen:
    NVT

    Alle overige informatie:
    Ik ben bereid vrijwel alle ideeën te realiseren voor een lage 10 euro per uur.
    Ik werk het liefst objectgeörienteerd, maar mocht dat niet van toepassing zijn, is dat geen probleem. Ik heb zelf weinig ervaring met frameworks, al dan een klein beetje van Kohana.
    Mijn leeftijd is 16 jaar.
    Ik ben eventueel bereid buitenshuis te werken in Groningen en omstreken, maar ik verricht mijn werkzaamheden bij voorkeur thuis uit.
    Indien een contract mogelijk is, graag!

    Yes, we can!

  • Pim
    Love Me Two Times
    Berichten
    2.039
    • 15 november 2009 om 17:51
    • #2

    Heb je nog andere voorbeelden buiten die TPL magic? Voor 5 euro per uur kan ik wel een programmeur gebruiken :)

  • Fold
    Yes, we can!
    Berichten
    100
    • 15 november 2009 om 17:59
    • #3
    PHP
    <?php
    if(!defined("USER_IN"))
    {
    	header("Location: ../../index.php");
    	die;
    }
    final class Shop
    {
    	private $productTypes;
    	private $productTypeWords;
    
    
    	public function __construct()
    	{
    		$this->productTypes =     array("book", "defence",     "attack", "quest",   "food",    "quidditch", "special");
    		$this->productTypeWords = array("Boek", "Bescherming", "Wapen",  "Queeste", "Voedsel", "Zwerkbal",  "Overige");
    	}
    
    
    	private function stockList($shop)
    	{
    		$stock = gotosql("query", "SELECT * FROM stock WHERE shop = '" . $shop . "'")->fetchAll(PDO::FETCH_ASSOC);
    		$GLOBALS['tpl']->define("STOCK", "categories/subcategories/general/tables/diagonalley_stocklist.tpl");
    		$stocklist = false;
    		foreach($stock as $shop)
    		{
    			$product = gotosql("query", "SELECT name, description, price, attack, defence, type, heal, level FROM products WHERE id = '" . $shop['product'] . "'")->fetch(PDO::FETCH_ASSOC);
    			$product['type'] = str_replace($this->productTypes, $this->productTypeWords, $product['type']);
    			$GLOBALS['tpl']->assign("{PRODUCT_NAME}", htmlspecialchars($product['name']));
    			$GLOBALS['tpl']->assign("{STOCK}", $shop['stock_current']);
    			$GLOBALS['tpl']->assign("{PRODUCT_DESC}", htmlspecialchars($product['description']));
    			$GLOBALS['tpl']->assign("{PRICE}", currency_show($product['price']));
    			$GLOBALS['tpl']->assign("{ATTACK}", $product['attack']);
    			$GLOBALS['tpl']->assign("{DEFENCE}", $product['defence']);
    			$GLOBALS['tpl']->assign("{TYPE}", $product['type']);
    			$GLOBALS['tpl']->assign("{HEALING}", $product['heal']);
    			$GLOBALS['tpl']->assign("{LEVEL}", $product['level']);
    			$GLOBALS['tpl']->assign("{PRODUCT_ID}", $shop['id']);
    			$stocklist .= "\r\n" . $GLOBALS['tpl']->parse("STOCK");
    		}
    		return $stocklist;
    	}
    
    
    	private function getShopProperties($shop)
    	{
    		return gotosql("query", "SELECT * FROM shops WHERE id = '" . $shop . "'")->fetch(PDO::FETCH_ASSOC);
    	}
    
    
    	private function verifyBuy($product)
    	{
    		if(empty($_POST['number']) || !ctype_digit($_POST['number']) || floor($_POST['number']) != $_POST['number'] || $_POST['number'] < 0)
    		{
    			throw new Exception("Er is geen geldig aantal opgegeven.");
    		}
    
    
    		if($product['price'] * $_POST['number'] > $GLOBALS['profile']['money'])
    		{
    			throw new Exception("Je hebt niet genoeg geld voor deze aankoop!");
    		}
    
    
    		if($product['stock'] - $_POST['number'] < 0)
    		{
    			throw new Exception("Zo veel heeft de winkel niet meer op voorraad!");
    		}
    
    
    		if($product['level'] > $GLOBALS['profile']['level'])
    		{
    			throw new Exception("Je moet minstens level " . $product['level'] . " zijn voor deze aanschaf!");
    		}
    	}
    
    
    	public function buy($product, $shop)
    	{
    		$product = gotosql("query", "SELECT products.id, products.price, products.level, products.type, products.special_effect, stock.stock_current AS stock FROM products JOIN stock ON (stock.product = products.id) WHERE stock.id = '" . $product . "' AND stock.shop = '" . $shop . "'")->fetch(PDO::FETCH_ASSOC);
    		try
    		{
    			$this->verifyBuy($product);
    			if($product['type'] == "special")
    				eval($product['special_effect']);
    			else
    			{
    				gotosql("query", str_repeat("INSERT INTO items (product, owner) VALUES('" . $product['id'] . "', '" . $GLOBALS['profile']['id'] . "');", $_POST['number']));
    			}
    
    
    			gotosql("exec", "UPDATE users SET money = money - '" . ($product['price'] * $_POST['number']) . "' WHERE id = '" . $GLOBALS['profile']['id'] . "'");
    			gotosql("exec", "UPDATE stock SET stock_current = stock_current - '" . $_POST['number'] . "' WHERE id = '" . $shop . "'");
    
    
    			$GLOBALS['tpl']->assign("{MONEY}", currency_show($GLOBALS['profile']['money'] - $product['price'] * $_POST['number'], false));
    			$GLOBALS['tpl']->assign("{MESSAGE}", '{MESSAGE="Je hebt het product gekocht. Het heeft je ' . currency_show($product['price'] * $_POST['number'], false) . ' gekost!"}');
    		}
    		catch(Exception $e)
    		{
    			$GLOBALS['tpl']->assign("{MESSAGE}", '{ERROR="' . $e->getmessage() . '"}');
    		}
    	}
    
    
    	public function getShops()
    	{
    		return gotosql("query", "SELECT * FROM shops")->fetchAll(PDO::FETCH_ASSOC);
    	}
    
    
    	public function shopTable($shops)
    	{
    		$GLOBALS['tpl']->define("SHOP", "categories/subcategories/general/tables/diagonalley.tpl");
    		$diagonalley = false;
    		foreach($shops as $shop)
    		{
    			$GLOBALS['tpl']->assign("{IMAGE}", $shop['image']);
    			$GLOBALS['tpl']->assign("{NAME}", htmlspecialchars($shop['name']));
    			$GLOBALS['tpl']->assign("{SHOPID}", $shop['id']);
    			$GLOBALS['tpl']->assign("{DESC}", htmlspecialchars($shop['description']));
    			$diagonalley .= "\r\n" . $GLOBALS['tpl']->parse("SHOP");
    		}
    		return $diagonalley;
    	}
    
    
    	public function visitShop($shop)
    	{
    		$shop = $this->getShopProperties($shop);
    		if($shop)
    		{
    			$GLOBALS['tpl']->define("SHOPS", "categories/diagonalley/shop.tpl");
    			$GLOBALS['tpl']->assign("{SHOP_NAME}", htmlspecialchars($shop['name']));
    			$GLOBALS['tpl']->assign("{SHOP_DESCRIPTION}", htmlspecialchars($shop['description']));
    			$GLOBALS['tpl']->assign("{SHOP_PRODUCTS}", $this->stockList($shop['id']));
    			return $GLOBALS['tpl']->parse("SHOPS");
    		}
    		else
    			return false;
    	}
    }
    Toon Meer

    Voor het project is hij nog niet af, maar het is immers een voorbeeld.

    Darsstar edit: die construct is een beetje zinloos

    PHP
    private $productTypes =     array("book", "defence",     "attack", "quest",   "food",    "quidditch", "special");
    	private $productTypeWords = array("Boek", "Bescherming", "Wapen",  "Queeste", "Voedsel", "Zwerkbal",  "Overige");


    bespaard wat regels :p

    Fold edit:
    Ik ga sowieso nog een constructor nodig hebben!

    Yes, we can!

  • Pim
    Love Me Two Times
    Berichten
    2.039
    • 15 november 2009 om 18:02
    • #4

    Ja ziet er goed uit. Waarom gebruik van final en private?

    Heb je misschien nog andere (niet TPL) klassen?

  • Fold
    Yes, we can!
    Berichten
    100
    • 15 november 2009 om 18:06
    • #5

    N?g meer? Wil je heel Zweinsveld meteen?

    Ik gebruik final en private omdat de class geen child classes nodig heeft en omdat bepaalde methods alleen maar in de class zelf aangeroepen hoeven worden. Duh! :p

    Darsstar edit: goede antwoord wat betreft private: de final en private combi is logisch (final en protected niet)

    Fold edit: Ik gebruik ook helemaal geen final en protected ^o)

    Yes, we can!

  • Pim
    Love Me Two Times
    Berichten
    2.039
    • 15 november 2009 om 18:25
    • #6

    Snap niet waarom je zoals elke normale mens gewoon protected gebruikt, private levert nogal snel problemen. Maar dat even ter zijde.

    Stuur me uw contactgegevens maar via PB en dan contacteer ik je met een opdracht van zodra ik er weer binnenkrijg. Of je kunt meewerken aan mijn nieuw project, achja ik contacteer je dan wel.

    Kan je dan ook wat anders laten zien dan die TPL parser? Wil zien dat je ook andere dingen aankan.

  • Fold
    Yes, we can!
    Berichten
    100
    • 15 november 2009 om 18:27
    • #7

    Ik weet al wat je denkt. Ik combineer Zweinsveld nu eenmaal met TPL magic, dus nee, ik heb niet meer classen waar geen gebruik wordt gemaakt van een TPL engine.

    Yes, we can!

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 15 november 2009 om 18:34
    • #8

    Waarom zou je protected gebruiken als je class toch al final is? Heeft weinig nut.

    Daarnaast vraagje voor Fold: Waarom gebruik je de $GLOBALS array, als 100 (ook niet al te nette) alternatieven beter zijn?

    Verder: Zeker boven het gemiddelde niveau van CP Fold! Mijn complimenten.

  • Fold
    Yes, we can!
    Berichten
    100
    • 15 november 2009 om 18:41
    • #9

    Ik dacht dat de superglobal $GLOBALS verreweg het beste alternatief was?
    Het gebruiken van global overal bovenaan je methods vind ik namelijk zelf heel slordig lijken.

    Yes, we can!

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 15 november 2009 om 18:56
    • #10

    Ik zou je tpl class eerder singleton maken?

    En persoonlijk is er bij mij altijd maar één class die voor enige uitput zorgt.

  • Radeon
    Beginner
    Berichten
    7
    • 16 november 2009 om 00:11
    • #11
    Citaat van Killingdevil


    Verder: Zeker boven het gemiddelde niveau van CP Fold! Mijn complimenten.

    Nou dat is moeilijk, om boven het gemiddelde van cp te komen (xD)

    Edit.. nou oke, om de TS nog te helpen:

    Citaat van Fold


    Ik ben bereid vrijwel alle idee?n te realiseren voor een lage 5 euro per uur.
    Ik werk het liefst objectge?rienteerd, maar mocht dat niet van toepassing zijn, is dat geen probleem. Ik heb zelf weinig ervaring met frameworks, al dan een klein beetje van Kohana.
    Mijn leeftijd is 16 jaar.
    Ik ben eventueel bereid buitenshuis te werken in Groningen en omstreken, maar ik verricht mijn werkzaamheden bij voorkeur thuis uit.
    Indien een contract mogelijk is, graag!

    1: 5 Euro per uur, als je zo weinig vraagt krijg je meer werk dan je tijd hebt en word je van 3 kanten genaait.
    2: Beter kijk je naar CodeIgnitor ipv. Kohana
    3: Je mag zelf nog geen contracten maken/ondertekenen zonder handtekening van 1 van je ouders/voogd. Overigens is een contract in mijn ogen een beetje overbodig een overeenkomst van wat je gaat maken is genoeg.

  • Fold
    Yes, we can!
    Berichten
    100
    • 16 november 2009 om 00:43
    • #12

    1. Ik dacht dat ik zelf mag bepalen waar ik voor werk? Laat dat naaiwerk maar aan mij over, maar 1 tegelijk vind ik genoeg.
    2. Het is CodeIgniter. Als je mijn scripts wilt, zou je ook geen framework-fanaat moeten zijn, dat ben ik zelf namelijk ook niet.
    3. Ik heb 2 ouders, en die willen best een contract ondertekenen. Ik vind een contract gewoon prettig, want anders krijgen we straks weer zo'n triootje.

    Wanneer zou je me trouwens helpen? Je zit alleen maar dit topic te vervuilen.

    Oh, KillingDevil, bedankt voor je suggestie om Singleton te gebruiken. Ik moet er nog even mee leren werken, maar dat is niet zo'n punt volgens mij. Ik ga het er in de volgende versie van TPLM in proberen te werken.

    Yes, we can!

  • Fold
    Yes, we can!
    Berichten
    100
    • 16 november 2009 om 11:02
    • #13

    Iedereen kan contact met mij opnemen. Of ik op dat moment beschikbaar ben is een ander verhaal, maar dat ben ik op het moment wel.

    Yes, we can!

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 16 november 2009 om 11:59
    • #14

    IEDEREEN die nu nog met iets komt aanlopen wat niet 100% ontopic is, krijgt van mij 10 banpunten. Het is genoeg!

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design