diff --git a/tp3/.htaccess b/tp3/.htaccess new file mode 100644 index 0000000000000000000000000000000000000000..a647fef0f473fe6dcb7ca9a2edb58fc430f797f2 --- /dev/null +++ b/tp3/.htaccess @@ -0,0 +1,19 @@ +RewriteEngine On +# +# RewriteBase indispensable sur webetu : + +# RewriteBase /www/marcolet3u/php-project/ + + +# +# Pour interdire l'accès aux répertoires contenant du code +RewriteRule ^sql(/.|)$ - [NC,F] +RewriteRule ^src(/.|)$ - [NC,F] +RewriteRule ^vendor(/.*|)$ - [NC,F] + +# +# réécriture pour slim + +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_FILENAME} !-f +RewriteRule ^ index.php [QSA,L] \ No newline at end of file diff --git a/tp3/composer.json b/tp3/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..a57cd9bad94091c30aaf2160f1a35b8e41ad838d --- /dev/null +++ b/tp3/composer.json @@ -0,0 +1,13 @@ +{ + "require": { + "illuminate/database": "5.5.*", + "slim/slim": "2.*", + "php": ">=7.0" + }, + + "autoload": { + "psr-4": { + "bdd\\": "./src" + } + } +} \ No newline at end of file diff --git a/tp3/composer.lock b/tp3/composer.lock new file mode 100644 index 0000000000000000000000000000000000000000..cc76f2dae44507a3704e2a3d59d4424bf7de0c05 --- /dev/null +++ b/tp3/composer.lock @@ -0,0 +1,753 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "3e70f60fac24a2aa60eedcd9ce200f65", + "packages": [{ + "name": "doctrine/inflector", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2019-10-30T19:59:35+00:00" + }, + { + "name": "illuminate/container", + "version": "v5.5.44", + "source": { + "type": "git", + "url": "https://github.com/illuminate/container.git", + "reference": "7917f4c86ecf7f4d0efcfd83248ad3e301e08858" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/container/zipball/7917f4c86ecf7f4d0efcfd83248ad3e301e08858", + "reference": "7917f4c86ecf7f4d0efcfd83248ad3e301e08858", + "shasum": "" + }, + "require": { + "illuminate/contracts": "5.5.*", + "php": ">=7.0", + "psr/container": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.5-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Container\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }], + "description": "The Illuminate Container package.", + "homepage": "https://laravel.com", + "time": "2018-01-19T17:58:33+00:00" + }, + { + "name": "illuminate/contracts", + "version": "v5.5.44", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "b2a62b4a85485fca9cf5fa61a933ad64006ff528" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/b2a62b4a85485fca9cf5fa61a933ad64006ff528", + "reference": "b2a62b4a85485fca9cf5fa61a933ad64006ff528", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/container": "~1.0", + "psr/simple-cache": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.5-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }], + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com", + "time": "2018-03-20T15:34:35+00:00" + }, + { + "name": "illuminate/database", + "version": "v5.5.44", + "source": { + "type": "git", + "url": "https://github.com/illuminate/database.git", + "reference": "f5403b3dd774eb89ff0ef5e633e57458c3dc537d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/database/zipball/f5403b3dd774eb89ff0ef5e633e57458c3dc537d", + "reference": "f5403b3dd774eb89ff0ef5e633e57458c3dc537d", + "shasum": "" + }, + "require": { + "illuminate/container": "5.5.*", + "illuminate/contracts": "5.5.*", + "illuminate/support": "5.5.*", + "php": ">=7.0" + }, + "suggest": { + "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", + "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", + "illuminate/console": "Required to use the database commands (5.5.*).", + "illuminate/events": "Required to use the observers with Eloquent (5.5.*).", + "illuminate/filesystem": "Required to use the migrations (5.5.*).", + "illuminate/pagination": "Required to paginate the result set (5.5.*)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.5-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Database\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }], + "description": "The Illuminate Database package.", + "homepage": "https://laravel.com", + "keywords": [ + "database", + "laravel", + "orm", + "sql" + ], + "time": "2018-09-23T18:58:54+00:00" + }, + { + "name": "illuminate/support", + "version": "v5.5.44", + "source": { + "type": "git", + "url": "https://github.com/illuminate/support.git", + "reference": "5c405512d75dcaf5d37791badce02d86ed8e4bc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/support/zipball/5c405512d75dcaf5d37791badce02d86ed8e4bc4", + "reference": "5c405512d75dcaf5d37791badce02d86ed8e4bc4", + "shasum": "" + }, + "require": { + "doctrine/inflector": "~1.1", + "ext-mbstring": "*", + "illuminate/contracts": "5.5.*", + "nesbot/carbon": "^1.24.1", + "php": ">=7.0" + }, + "replace": { + "tightenco/collect": "<5.5.33" + }, + "suggest": { + "illuminate/filesystem": "Required to use the composer class (5.5.*).", + "symfony/process": "Required to use the composer class (~3.3).", + "symfony/var-dumper": "Required to use the dd function (~3.3)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.5-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + }, + "files": [ + "helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }], + "description": "The Illuminate Support package.", + "homepage": "https://laravel.com", + "time": "2018-08-10T19:40:01+00:00" + }, + { + "name": "kylekatarnls/update-helper", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/kylekatarnls/update-helper.git", + "reference": "5786fa188e0361b9adf9e8199d7280d1b2db165e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/5786fa188e0361b9adf9e8199d7280d1b2db165e", + "reference": "5786fa188e0361b9adf9e8199d7280d1b2db165e", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0.0", + "php": ">=5.3.0" + }, + "require-dev": { + "codeclimate/php-test-reporter": "dev-master", + "composer/composer": "2.0.x-dev || ^2.0.0-dev", + "phpunit/phpunit": ">=4.8.35 <6.0" + }, + "type": "composer-plugin", + "extra": { + "class": "UpdateHelper\\ComposerPlugin" + }, + "autoload": { + "psr-0": { + "UpdateHelper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Kyle", + "email": "kylekatarnls@gmail.com" + }], + "description": "Update helper", + "time": "2019-07-29T11:03:54+00:00" + }, + { + "name": "myclabs/php-enum", + "version": "1.7.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/php-enum.git", + "reference": "45f01adf6922df6082bcda36619deb466e826acf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/45f01adf6922df6082bcda36619deb466e826acf", + "reference": "45f01adf6922df6082bcda36619deb466e826acf", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35|^5.7|^6.0", + "squizlabs/php_codesniffer": "1.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "MyCLabs\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "PHP Enum contributors", + "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + }], + "description": "PHP Enum implementation", + "homepage": "http://github.com/myclabs/php-enum", + "keywords": [ + "enum" + ], + "time": "2019-08-19T13:53:00+00:00" + }, + { + "name": "nesbot/carbon", + "version": "1.39.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4be0c005164249208ce1b5ca633cd57bdd42ff33", + "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33", + "shasum": "" + }, + "require": { + "kylekatarnls/update-helper": "^1.1", + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" + }, + "require-dev": { + "composer/composer": "^1.2", + "friendsofphp/php-cs-fixer": "~2", + "phpunit/phpunit": "^4.8.35 || ^5.7" + }, + "bin": [ + "bin/upgrade-carbon" + ], + "type": "library", + "extra": { + "update-helper": "Carbon\\Upgrade", + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + }], + "description": "A simple API extension for DateTime.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "time": "2019-10-14T05:51:36+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + }], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + }], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "slim/slim", + "version": "2.6.3", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim.git", + "reference": "9224ed81ac1c412881e8d762755e3d76ebf580c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/9224ed81ac1c412881e8d762755e3d76ebf580c0", + "reference": "9224ed81ac1c412881e8d762755e3d76ebf580c0", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "suggest": { + "ext-mcrypt": "Required for HTTP cookie encryption", + "phpseclib/mcrypt_compat": "Polyfil for mcrypt extension" + }, + "type": "library", + "autoload": { + "psr-0": { + "Slim": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Josh Lockhart", + "email": "info@joshlockhart.com", + "homepage": "http://www.joshlockhart.com/" + }], + "description": "Slim Framework, a PHP micro framework", + "homepage": "http://github.com/codeguy/Slim", + "keywords": [ + "microframework", + "rest", + "router" + ], + "time": "2017-01-07T12:21:41+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T14:18:11+00:00" + }, + { + "name": "symfony/translation", + "version": "v4.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "f7669f48a9633bf8139bc026c755e894b7206677" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/f7669f48a9633bf8139bc026c755e894b7206677", + "reference": "f7669f48a9633bf8139bc026c755e894b7206677", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "symfony/translation-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/finder": "~2.8|~3.0|~4.0|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/intl": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2020-02-04T09:32:40+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [{ + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=7.0" + }, + "platform-dev": [] +} \ No newline at end of file diff --git a/tp3/css/style.css b/tp3/css/style.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tp3/index.php b/tp3/index.php new file mode 100644 index 0000000000000000000000000000000000000000..df24f6f1b9e18d782eaf4289cce31cb2060f6934 --- /dev/null +++ b/tp3/index.php @@ -0,0 +1,60 @@ +<?php + +// Import de la class qui a pour but de charger tous les imports du projet +require_once './vendor/autoload.php'; + +// Liste des tous les imports + +use bdd\controllers\ControleurRequete; +use \bdd\views\AccueilView; +use \Illuminate\Database\Capsule\Manager as DB; +use \Slim\Slim; + +// instance de la base de données +$db = new DB(); + +// ajout des informations pour se connecter à la base de données +$db->addConnection(parse_ini_file('conf/conf.ini')); + +// demarage de la basse de donnée +$db->setAsGlobal(); +$db->bootEloquent(); + +// demerage d'un session +session_start(); + +// intance de slim qui a pour but de créer le rootage des urls +$app = new Slim(); + + +/*-----|accueil|-----*/ +$app->get('/', function () { + $v = new AccueilView(); + $v->render(); +})->name('accueil'); +$app->get('/tp2req1', function () { + $v = new ControleurRequete(); + $v->selectChar(); +})->name('tp2req1'); + +$app->get('/tp2req2', function () { + $v = new ControleurRequete(); + $v->selectCharMario(); +})->name('tp2req2'); + +$app->get('/tp2req3', function () { + $v = new ControleurRequete(); + $v->gameCompanySony(); +})->name('tp2req3'); + +$app->get('/gameNumber', function () { + $v = new ControleurRequete(); + $v->selectGameNumber(); +})->name('gameNumber'); + +$app->get('/page/:p', function ($p) { + $v = new ControleurRequete(); + $v->selectPage($p); +})->name('page'); + +$app->run(); \ No newline at end of file diff --git a/tp3/src/controllers/ControleurRequete.php b/tp3/src/controllers/ControleurRequete.php new file mode 100644 index 0000000000000000000000000000000000000000..4e8b98f990edd0beff557a42d2aafe40b23cd8c8 --- /dev/null +++ b/tp3/src/controllers/ControleurRequete.php @@ -0,0 +1,74 @@ +<?php + +namespace bdd\controllers; + +use bdd\models\Company; +use bdd\models\Game; +use bdd\models\Platform; +use bdd\models\Character; +use bdd\models\Game2character; +use bdd\models\Game_publisher; +use bdd\views\RequeteView; + +class ControleurRequete{ + public function selectGame(){ + $jeu = Game::select('name')->get(); + $vue = new RequeteView($jeu); + $vue->render(1); + } + + public function selectMario(){ + $jeu = Game::select('name')->where('name','like','%Mario%','or','alias','like','%Mario%')->get(); + + $vue = new RequeteView($jeu); + $vue->render(1); + } + + public function selectCharMario(){ + $data = Character::join('game2character','perso.id','=','game2character.character_id') + ->join('game','game2character.game_id','=','game.id') + ->select('id') + ->where('game.name','LIKE','Mario%'); + + $vue = new RequeteView($data); + $vue->render(1); + } + + public function selectCharFirstAppearedMario(){ + $data = Character::join('game','perso.first_appeared_in_game_id','=','game.id') + ->select('name') + ->where('game.name','LIKE','Mario%'); + + $vue = new RequeteView($data); + $vue->render(1); + } + + public function selectGameMarioAndRatingPlus3(){ + $data = Game::join('game2rating','game_id','=','game2rating.rating_id') + ->join('Rating','game2rating.rating_id','=','rating.id') + ->select('name') + ->where('game.name','LIKE','Mario%', 'AND', 'game_rating.name' 'LIKE', '%3+%'); + + $vue = new RequeteView($data); + $vue->render(1); + } + + public function selectCharGame12342(){ + $data = Character::join('game2character','perso.id','=','game2character.character_id') + ->select('name') + ->where('game2character.game_id','=','12342'); + + $vue = new RequeteView($data); + $vue->render(1); + } + + public function gameCompanySony(){ + $data = Game::join('game_publisher','game.id','=','game_publisher.game_id') + ->join('company','game_publisher.comp_id','=','company.id') + ->select('id') + ->where('company.name','LIKE','%Sony%'); + + $vue = new RequeteView($data); + $vue->render(1); + } +} \ No newline at end of file diff --git a/tp3/src/models/Character.php b/tp3/src/models/Character.php new file mode 100644 index 0000000000000000000000000000000000000000..7168e6e1d1e28be6993f40ca231c21f5934ef4b8 --- /dev/null +++ b/tp3/src/models/Character.php @@ -0,0 +1,14 @@ +<?php + +namespace bdd\models; + +class Character extends \Illuminate\Database\Eloquent\Model +{ + protected $table = 'character'; + protected $primaryKey = 'id'; + public $timestamps = false; + + public function platform(){ + return $this->belongsTo('bdd\models\character', 'id'); + } +} \ No newline at end of file diff --git a/tp3/src/models/Company.php b/tp3/src/models/Company.php new file mode 100644 index 0000000000000000000000000000000000000000..bcdc73e87c0b94445167347dd037968924a16cd8 --- /dev/null +++ b/tp3/src/models/Company.php @@ -0,0 +1,14 @@ +<?php + +namespace bdd\models; + +class Company extends \Illuminate\Database\Eloquent\Model +{ + protected $table = 'company'; + protected $primaryKey = 'id'; + public $timestamps = false; + + public function platform(){ + return $this->belongsTo('bdd\models\company', 'id'); + } +} \ No newline at end of file diff --git a/tp3/src/models/Game.php b/tp3/src/models/Game.php new file mode 100644 index 0000000000000000000000000000000000000000..33e57401ba5f5d6e03128f341e6e7b6d378e8f8c --- /dev/null +++ b/tp3/src/models/Game.php @@ -0,0 +1,15 @@ +<?php + + +namespace bdd\models; + +class Game extends \Illuminate\Database\Eloquent\Model +{ + protected $table = 'game'; + protected $primaryKey = 'id'; + public $timestamps = false; + + public function platform(){ + return $this->belongsTo('bdd\models\game', 'id'); + } +} \ No newline at end of file diff --git a/tp3/src/models/Game2character.php b/tp3/src/models/Game2character.php new file mode 100644 index 0000000000000000000000000000000000000000..e3a7b23ebcdac6f5b50850233fbdb97a5e49425a --- /dev/null +++ b/tp3/src/models/Game2character.php @@ -0,0 +1,14 @@ +<?php + +namespace bdd\models; + +class Game2character extends \Illuminate\Database\Eloquent\Model +{ + protected $table = 'Game2character'; + protected $primaryKey = 'game_id'; + public $timestamps = false; + + public function platform(){ + return $this->belongsTo('bdd\models\Game2character', 'game_id'); + } +} \ No newline at end of file diff --git a/tp3/src/models/Game_publisher.php b/tp3/src/models/Game_publisher.php new file mode 100644 index 0000000000000000000000000000000000000000..51302c2416bab12ffc37b03c02b183bb440e3475 --- /dev/null +++ b/tp3/src/models/Game_publisher.php @@ -0,0 +1,14 @@ +<?php + +namespace bdd\models; + +class Game_publisher extends \Illuminate\Database\Eloquent\Model +{ + protected $table = 'game_publisher'; + protected $primaryKey = 'game_id'; + public $timestamps = false; + + public function platform(){ + return $this->belongsTo('bdd\models\game_publisher', 'game_id'); + } +} \ No newline at end of file diff --git a/tp3/src/models/Platform.php b/tp3/src/models/Platform.php new file mode 100644 index 0000000000000000000000000000000000000000..061a00e26d9b62c5b4052bccd1d1dc7cb1b9bc39 --- /dev/null +++ b/tp3/src/models/Platform.php @@ -0,0 +1,15 @@ +<?php + + +namespace bdd\models; + +class Platform extends \Illuminate\Database\Eloquent\Model +{ + protected $table = 'platform'; + protected $primaryKey = 'id'; + public $timestamps = false; + + public function platform(){ + return $this->belongsTo('bdd\models\platform', 'id'); + } +} \ No newline at end of file diff --git a/tp3/src/views/AccueilView.php b/tp3/src/views/AccueilView.php new file mode 100644 index 0000000000000000000000000000000000000000..a3381f9d77955ff1c2a7a6315d88bd595251e98c --- /dev/null +++ b/tp3/src/views/AccueilView.php @@ -0,0 +1,38 @@ +<?php + +namespace bdd\views; + +use Slim\Slim; + +class AccueilView +{ + + protected $app; + + public function __construct() + { + $this->app = Slim::getInstance(); + } + + public function render() + { + $baseURL = $_SERVER['REQUEST_URI']; + $url1 = $this->app->urlFor("tp2req1"); + $url2 = $this->app->urlFor("tp2req2"); + $url3 = $this->app->urlFor("tp2req3"); + $url4 = $this->app->urlFor("gameNumber"); + $url5 = $baseURL . "page/1"; + $html = <<<HTML +<h1>Page d'accueil</h1> +<p> +lien:<br> +<a href=$url1>$url1</a><br> +<a href=$url2>$url2</a><br> +<a href=$url3>$url3</a><br> +<a href=$url4>$url4</a><br> +<a href=$url5>$url5</a><br> +</p> +HTML; + echo $html; + } +} diff --git a/tp3/src/views/RequeteView.php b/tp3/src/views/RequeteView.php new file mode 100644 index 0000000000000000000000000000000000000000..0bf90124c826ac719a3ff3b8c030fb32536f85be --- /dev/null +++ b/tp3/src/views/RequeteView.php @@ -0,0 +1,71 @@ +<?php + +namespace bdd\views; + +use Slim\Slim; + +class RequeteView +{ + + protected $tab, $app; + + public function __construct($t) + { + $this->tab = $t; + $this->app = Slim::getInstance(); + } + + public function render($type) + { + $html = ""; + switch ($type) { + case 1: + $html = $this->default(); + break; + default: + $html = $this->notFound(); + break; + } + echo $html; + } + + private function notFound() + { + return <<<RES + <!doctype html> + + <html lang="fr"> + <head> + <meta charset="utf-8"> + </head> + <body> + <p>data not found</p> + </body> + </html> +RES; + } + + private function default() + { + $res = <<<RES + <!doctype html> + + <html lang="fr"> + <head> + <meta charset="utf-8"> + </head> + <body> + +RES; + foreach ($this->tab as $key => $value) { + $res .= <<<RES + $key:$value<br> +RES; + } + $res .= <<<RES + </body> + </html> +RES; + return $res; + } +}