Skip to content
This repository has been archived by the owner on Aug 26, 2020. It is now read-only.

Hello #7

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions base/connexion.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php
if(!class_exists('SQLite3'))
die("SQLite3 Not Supported");

//this class creat dataBase in file mydb.db
class MyDB extends SQLite3{
function __construct(){
$this->open('base/mydb.db',SQLITE3_OPEN_READWRITE);
}
}
require_once ('monsterManager.php');
require_once ('familyManager.php');
require_once ('worldManager.php');

//function that redirect.
function Redirect($dest) {
if (!headers_sent())
header('Location: ' . $dest);
else
echo '<script language="JavaScript">window.location=\'' . $dest . '\'</script>';
}

//connection to DB
$mydb = new MyDB();
//creating the world manager
$worldManager = new WorldManager($mydb);
//creat the family manager
$familyManager = new FamilyManager($mydb);
//creat the Monster manager
$monsterManager = new MonsterManager($mydb);

?>
28 changes: 28 additions & 0 deletions base/family.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php
class Family{
public $_name;
public $_world;
public $_pic;
public $_max;

//constructor
public function __construct($name, $world, $pic, $max){
$this->_name = $name;
$this->_world = $world;
$this->_pic = $pic;
//if the maximum number is 0 we put 1
if($max == 0){
$this->_max = $max+1;
}
else{
$this->_max = $max;
}

}

//function returning a string
public function presentation(){
return $this->_world." World <br/>".$this->_name." Family<br/>";
}
}
?>
101 changes: 101 additions & 0 deletions base/familyManager.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<?php
require_once ('family.php');

//Same thing for Family's and Monster's Management
//this Class Manage the Family Table
class FamilyManager {
//creat Families table if not exists
public function __construct(MyDB $dataB){
if(!empty($dataB)){
$dataB->exec('PRAGMA foreign_keys = ON;');
$query = "CREATE TABLE IF NOT EXISTS family(
name VARCHAR(20)NOT NULL PRIMARY KEY,
world_name VARCHAR(20) NOT NULL,
pic TEXT NOT NULL,
max INTEGER NOT NULL,
CONSTRAINT FK_family_world FOREIGN KEY (world_name) REFERENCES world(name) ON DELETE CASCADE ON UPDATE CASCADE)";
$result = $dataB->exec($query);

if(!$result)
exit("Family Table not Created </br>");
}else
exit("Database don't exist <br/>");
}


public function add(MyDB $dataB, Family $fam){
if(!empty($dataB) && !empty($fam)){
if(!$this->exists($dataB, $fam->_name)){
$query = 'INSERT INTO family VALUES ("'.$fam->_name.'","'.$fam->_world.'","'.$fam->_pic.'","'.$fam->_max.'")';
$dataB->exec($query);
}
}else
exit("Database don't exist or family don't exists<br/>");
}

public function delete(MyDB $dataB, $fam_name){
if(!empty($dataB) && !empty($fam_name) && is_string($fam_name)){
if($this->exists($dataB, $fam_name))
$dataB->exec('DELETE FROM family WHERE name = "'.$fam_name.'"');
}else{
exit ("Database don\'t exists or invalide parameter");
}
}


public function getAll(MyDB $dataB){
if(!empty($dataB)){
//executing the request
$sqlRes = $dataB->query("SELECT name FROM family");
$result = array();
$i++;
//extracting all results
while($data = $sqlRes->fetchArray(SQLITE3_NUM)){
$result[$i] = $data[0];
$i++;
}

return $result;

}
exit("Database don't exists <br/>");
}


public function getByWorld (MyDB $dataB, $name_world){
if(!empty($dataB) && !empty($name_world) && is_string($name_world)){

$sqlRes = $dataB->query('SELECT name FROM family WHERE world_name = "'.$name_world.'"');
$result = array();
$i=0;
while($data = $sqlRes->fetchArray()){
$result[i] = $data[0];
$i++;
}
return $result;
}
}

public function get(MyDB $dataB,$name){
if(!empty($dataB) && !empty($name) && is_string($name)){
$sqlRes = $dataB->query('SELECT * FROM family WHERE name = "'.$name.'"');
$result = array();
while($data = $sqlRes->fetchArray(SQLITE3_NUM))
$result[$data[0]] = new Family($data[0],$data[1],$data[2],$data[3]);

return $result;
}
exit("Argument problem <br/>");
}

public function exists(MyDB $dataB, $fam_name){
if(!empty($dataB) && !empty($fam_name) && is_string($fam_name)){
$query = 'SELECT COUNT(*) FROM family WHERE name="'.$fam_name.'"';
$sqlRes = $dataB->query($query);
$result = $sqlRes->fetchArray(SQLITE3_NUM);
return $result[0]!=0;
}
return false;
}
}
?>
29 changes: 29 additions & 0 deletions base/monster.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?php
class Monster{
public $_name;
public $_age;
public $_pic;
public $_family;
public $_eyes;
public $_hair;
public $_skin;


//constructor taking all the arguments
public function __construct ($name, $age, $pic, $family, $eyes, $hair, $skin){
$this->_name = $name;
$this->_age = $age;
$this->_pic = $pic;
$this->_family = $family;
$this->_eyes = $eyes;
$this->_hair = $hair;
$this->_skin = $skin;
}

//the monster can introduce himself
public function presentation(){
return "my name is ".$this->_name." </br>I'm ".$this->_age."</br> I belong to the ".$this->_family." family <br/>My eyes are ".$this->_eyes.", my hair color is ".$this->_hair." and my skin color is ".$this->_skin;
}
}

?>
99 changes: 99 additions & 0 deletions base/monsterManager.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<?php
require_once ('monster.php');
/*
this file allow to manage the database that we going to creat on the system memory
so we going to creat three class that can hundle add, delete, get informations from tables of world, Family and Monsters
*/

//this Class Manage the monster table
class MonsterManager {
//creat monster's table if not exists
public function __construct(MyDB $dataB){
if(!empty($dataB)){
$dataB->exec('PRAGMA foreign_keys = ON;');
$query = "CREATE TABLE IF NOT EXISTS monster(
name VARCHAR(20) NOT NULL PRIMARY KEY,
age INTEGER,
pic TEXT NOT NULL,
family_name VARCHAR(20) NOT NULL,
eyes TEXT,
hair TEXT,
skin TEXT,
CONSTRAINT FK_monster_family FOREIGN KEY (family_name) REFERENCES family(name) ON DELETE CASCADE ON UPDATE CASCADE)";
$result = $dataB->exec($query);
if(!$result)
exit("Monster Table not Created </br>");
}else
exit("Database don't exist <br/>");
}

//adding
public function add(MyDB $dataB, Monster $m){
if(!empty($dataB) && !empty($m->_name)){
if(!$this->exists($dataB, $m->_name)){
$query = 'INSERT INTO monster VALUES ("'.$m->_name.'","'.$m->_age.'","'.$m->_pic.'","'.$m->_family.'","'.$m->_eyes.'","'.$m->_hair.'","'.$m->_skin.'")';
$dataB->exec($query);
}
}else
exit("Database don't exist or Monster don't exists<br/>");
}


//deleting
public function delete(MyDB $dataB, $m_name){
if(!empty($dataB) && is_string($m_name)){
if($this->exists($dataB, $m_name)){
$dataB->exec('DELETE FROM monster WHERE name="'.$m_name.'"');
}
}else{
exit ("Database don\'t exists or invalide parameter");
}

}

//getting
public function get(MyDB $dataB, $name){
if(!empty($dataB) && !empty($name) && is_string($name)){
$sqlRes = $dataB->query('SELECT * FROM monster WHERE name = "'.$name.'"');
$result = array();
$i=0;
while($data = $sqlRes->fetchArray(SQLITE3_NUM)){
$result[$i] = new Monster($data[0],$data[1],$data[2],$data[3], $data[4], $data[5], $data[6]);
$i++;
}
return $result;
}
else if(empty($name) || !is_string($name)){
exit("Invalide parametre in fonction MonsterManager::get()<br/>");
}
exit("Database don't exists in fonction MonsterManager::get() <br/>");
}

//getting monsters by family
public function getByFamily(MyDB $dataB, $name_family){
if(!empty($dataB) && !empty($name_family) && is_string($name_family)){
$sqlRes = $dataB->query('SELECT name FROM monster WHERE family_name="'.$name_family.'"');
$result = array();
$i=0;
while($data = $sqlRes->fetchArray(SQLITE3_NUM)){
$result[$i] = $data[0];
$i++;
}
return $result;
}
exit("Database don't exists <br/>");
}


//test if the monster exists on the table
public function exists(MyDB $dataB, $m_name){
if(!empty($dataB) && !empty($m_name) && is_string($m_name)){
$query = 'SELECT COUNT(*) FROM monster WHERE name = "'.$m_name.'"';
$sqlRes = $dataB->query($query);
$result = $sqlRes->fetchArray(SQLITE3_NUM);
return $result[0]!=0;
}
return false;
}
}
?>
Binary file added base/mydb.db
Binary file not shown.
19 changes: 19 additions & 0 deletions base/world.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

class World{
public $_name;
public $_pic;

//constructor
public function __construct($name, $pic){
$this->_name = $name;
$this->_pic = $pic;
}


public function presentation(){
return $this->_name." World <br/>";
}
}

?>
Loading