Mise en place des dossiers pour les templates

This commit is contained in:
Pierre-Lin Bonnemaison 2015-08-16 00:06:31 +02:00
parent 01aad35f7d
commit 59b35b09c2
39 changed files with 63 additions and 136 deletions

View File

@ -15,18 +15,9 @@
} }
/** /**
* Cette fonction est alias de showAll() * Cette fonction retourne toutes les commandes, sous forme d'un tableau permettant l'administration de ces commandess
*/ */
public function byDefault() public function byDefault()
{
$this->showAll();
}
/**
* Cette fonction retourne toutes les commandes, sous forme d'un tableau permettant l'administration de ces commandess
* @return void;
*/
public function showAll()
{ {
//Creation de l'object de base de données //Creation de l'object de base de données
global $db; global $db;
@ -34,7 +25,7 @@
//Recupération des commandes //Recupération des commandes
$commands = $db->getFromTableWhere('commands'); $commands = $db->getFromTableWhere('commands');
$this->render('commands', array( $this->render('commands/default', array(
'commands' => $commands, 'commands' => $commands,
)); ));
@ -67,7 +58,7 @@
*/ */
public function add() public function add()
{ {
$this->render('addCommand'); $this->render('commands/add');
} }
/** /**
@ -79,7 +70,7 @@
global $db; global $db;
$commands = $db->getCommandsIn($ids); $commands = $db->getCommandsIn($ids);
$this->render('editCommands', array( $this->render('commands/edit', array(
'commands' => $commands, 'commands' => $commands,
)); ));
} }

View File

@ -5,20 +5,11 @@
class connect extends Controller class connect extends Controller
{ {
/** /**
* Cette fonction est alias de login() * Cette fonction retourne la fenetre de connexion
*/ */
public function byDefault() public function byDefault()
{ {
$this->login(); $this->render('connect/login');
}
/**
* Cette fonction retourne la fenetre de connexion
* @return void;
*/
public function login()
{
$this->render('login');
} }
/** /**

View File

@ -15,18 +15,9 @@
} }
/** /**
* Cette fonction est alias de showAll() * Cette fonction retourne tous les contacts, sous forme d'un tableau permettant l'administration de ces contacts
*/ */
public function byDefault() public function byDefault()
{
$this->showAll();
}
/**
* Cette fonction retourne tous les contacts, sous forme d'un tableau permettant l'administration de ces contacts
* @return void;
*/
public function showAll()
{ {
//Creation de l'object de base de données //Creation de l'object de base de données
global $db; global $db;
@ -34,7 +25,7 @@
//Recupération des nombres des 4 panneaux d'accueil //Recupération des nombres des 4 panneaux d'accueil
$contacts = $db->getFromTableWhere('contacts'); $contacts = $db->getFromTableWhere('contacts');
$this->render('contacts', array( $this->render('contacts/default', array(
'contacts' => $contacts, 'contacts' => $contacts,
)); ));
} }
@ -51,7 +42,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['errormessage'] = 'Jeton CSRF invalide !'; $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('contacts', 'showAll')); header('Location: ' . $this->generateUrl('contacts'));
return false; return false;
} }
@ -68,7 +59,7 @@
*/ */
public function add() public function add()
{ {
$this->render('addContact'); $this->render('contacts/add');
} }
/** /**
@ -80,7 +71,7 @@
global $db; global $db;
$contacts = $db->getContactsIn($ids); $contacts = $db->getContactsIn($ids);
$this->render('editContacts', array( $this->render('contacts/edit', array(
'contacts' => $contacts, 'contacts' => $contacts,
)); ));
} }
@ -97,7 +88,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['errormessage'] = 'Jeton CSRF invalide !'; $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('contacts', 'showAll')); header('Location: ' . $this->generateUrl('contacts'));
return false; return false;
} }
@ -130,7 +121,7 @@
$db->insertIntoTable('events', ['type' => 'CONTACT_ADD', 'text' => 'Ajout contact : ' . $nom . ' (' . internalTools::phoneAddSpace($phone) . ')']); $db->insertIntoTable('events', ['type' => 'CONTACT_ADD', 'text' => 'Ajout contact : ' . $nom . ' (' . internalTools::phoneAddSpace($phone) . ')']);
$_SESSION['successmessage'] = 'Le contact a bien été créé.'; $_SESSION['successmessage'] = 'Le contact a bien été créé.';
header('Location: ' . $this->generateUrl('contacts', 'showAll')); header('Location: ' . $this->generateUrl('contacts'));
return true; return true;
} }
@ -146,7 +137,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['errormessage'] = 'Jeton CSRF invalide !'; $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('contacts', 'showAll')); header('Location: ' . $this->generateUrl('contacts'));
} }
global $db; global $db;
@ -169,11 +160,11 @@
if (count($errors)) if (count($errors))
{ {
$_SESSION['errormessage'] = 'Certains contacts n\'ont pas pu êtres mis à jour. Voici leurs identifiants : ' . implode(', ', $errors); $_SESSION['errormessage'] = 'Certains contacts n\'ont pas pu êtres mis à jour. Voici leurs identifiants : ' . implode(', ', $errors);
return header('Location: ' . $this->generateUrl('contacts', 'showAll')); return header('Location: ' . $this->generateUrl('contacts'));
} }
$_SESSION['successmessage'] = 'Tous les contacts ont été modifiés avec succès.'; $_SESSION['successmessage'] = 'Tous les contacts ont été modifiés avec succès.';
return header('Location: ' . $this->generateUrl('contacts', 'showAll')); return header('Location: ' . $this->generateUrl('contacts'));
} }
/** /**

View File

@ -19,11 +19,6 @@
* @return void; * @return void;
*/ */
public function byDefault() public function byDefault()
{
$this->show();
}
public function show()
{ {
//Creation de l'object de base de données //Creation de l'object de base de données
global $db; global $db;
@ -97,7 +92,7 @@
$array_area_chart = array_values($array_area_chart); $array_area_chart = array_values($array_area_chart);
$this->render('dashboard', array( $this->render('dashboard/default', array(
'nb_contacts' => $nb_contacts, 'nb_contacts' => $nb_contacts,
'nb_groups' => $nb_groups, 'nb_groups' => $nb_groups,
'nb_scheduleds' => $nb_scheduleds, 'nb_scheduleds' => $nb_scheduleds,

View File

@ -39,7 +39,7 @@
//Récupération des évènements triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers //Récupération des évènements triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers
$events = $db->getFromTableWhere('events', [], 'at', true, $limit, $offset); $events = $db->getFromTableWhere('events', [], 'at', true, $limit, $offset);
$this->render('events', array( $this->render('events/default', array(
'events' => $events, 'events' => $events,
'page' => $page, 'page' => $page,
'limit' => $limit, 'limit' => $limit,

View File

@ -15,24 +15,15 @@
} }
/** /**
* Cette fonction est alias de showAll() * Cette fonction retourne tous les groupes, sous forme d'un tableau permettant l'administration de ces groupes
*/ */
public function byDefault() public function byDefault()
{
$this->showAll();
}
/**
* Cette fonction retourne tous les groupes, sous forme d'un tableau permettant l'administration de ces groupes
* @return void;
*/
public function showAll()
{ {
//Creation de l'object de base de données //Creation de l'object de base de données
global $db; global $db;
$groups = $db->getGroupsWithContactsNb(); $groups = $db->getGroupsWithContactsNb();
$this->render('groups', array( $this->render('groups/default', array(
'groups' => $groups, 'groups' => $groups,
)); ));
} }
@ -49,7 +40,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['errormessage'] = 'Jeton CSRF invalide !'; $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('groups', 'showAll')); header('Location: ' . $this->generateUrl('groups'));
return false; return false;
} }
@ -66,7 +57,7 @@
*/ */
public function add() public function add()
{ {
$this->render('addGroup'); $this->render('groups/add');
} }
/** /**
@ -86,7 +77,7 @@
$groups[$key]['contacts'] = $db->getContactsForGroup($group['id']); $groups[$key]['contacts'] = $db->getContactsForGroup($group['id']);
} }
$this->render('editGroups', array( $this->render('groups/edit', array(
'groups' => $groups, 'groups' => $groups,
)); ));
} }
@ -103,7 +94,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['errormessage'] = 'Jeton CSRF invalide !'; $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('groups', 'showAll')); header('Location: ' . $this->generateUrl('groups'));
return false; return false;
} }
@ -113,7 +104,7 @@
if (!$db->insertIntoTable('groups', ['name' => $nom])) if (!$db->insertIntoTable('groups', ['name' => $nom]))
{ {
$_SESSION['errormessage'] = 'Impossible de créer ce groupe.'; $_SESSION['errormessage'] = 'Impossible de créer ce groupe.';
header('Location: ' . $this->generateUrl('groups', 'showAll')); header('Location: ' . $this->generateUrl('groups'));
return false; return false;
} }
@ -126,7 +117,7 @@
} }
$_SESSION['successmessage'] = 'Le groupe a bien été créé.'; $_SESSION['successmessage'] = 'Le groupe a bien été créé.';
header('Location: ' . $this->generateUrl('groups', 'showAll')); header('Location: ' . $this->generateUrl('groups'));
return true; return true;
} }
@ -142,7 +133,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['errormessage'] = 'Jeton CSRF invalide !'; $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('groups', 'showAll')); header('Location: ' . $this->generateUrl('groups'));
return false; return false;
} }
@ -160,7 +151,7 @@
} }
$_SESSION['successmessage'] = 'Tous les groupes ont été modifiés avec succès.'; $_SESSION['successmessage'] = 'Tous les groupes ont été modifiés avec succès.';
header('Location: ' . $this->generateUrl('groups', 'showAll')); header('Location: ' . $this->generateUrl('groups'));
} }
/** /**

View File

@ -25,7 +25,7 @@
unset($_SESSION['successmessage']); unset($_SESSION['successmessage']);
} }
$this->render('head', array( $this->render('internalIncs/head', array(
'title' => $title, 'title' => $title,
'author' => $author, 'author' => $author,
'error_message' => $error_message, 'error_message' => $error_message,
@ -41,7 +41,7 @@
public function nav($page = '') public function nav($page = '')
{ {
$email = isset($_SESSION['email']) ? $_SESSION['email'] : 'Mon compte'; $email = isset($_SESSION['email']) ? $_SESSION['email'] : 'Mon compte';
$this->render('nav', array( $this->render('internalIncs/nav', array(
'email' => $email, 'email' => $email,
'page' => $page, 'page' => $page,
)); ));
@ -49,6 +49,6 @@
public function footer() public function footer()
{ {
$this->render('footer'); $this->render('internalIncs/footer');
} }
} }

View File

@ -15,20 +15,11 @@
} }
/** /**
* Cette fonction est alias de show() * Cette fonction retourne la fenetre du profile
*/ */
public function byDefault() public function byDefault()
{ {
$this->show(); $this->render('profile/default');
}
/**
* Cette fonction retourne la fenetre du profile
* @return void;
*/
public function show()
{
$this->render('profile');
} }
/** /**

View File

@ -40,7 +40,7 @@
//Récupération des SMS envoyés triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers //Récupération des SMS envoyés triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers
$receiveds = $db->getFromTableWhere('receiveds', [], 'at', true, $limit, $offset); $receiveds = $db->getFromTableWhere('receiveds', [], 'at', true, $limit, $offset);
return $this->render('receiveds', array( return $this->render('receiveds/showAll', array(
'receiveds' => $receiveds, 'receiveds' => $receiveds,
'page' => $page, 'page' => $page,
'limit' => $limit, 'limit' => $limit,

View File

@ -15,24 +15,15 @@
} }
/** /**
* Cette fonction est alias de showAll() * Cette fonction retourne tous les sms programmés, sous forme d'un tableau permettant l'administration de ces sms
*/ */
public function byDefault() public function byDefault()
{
$this->showAll();
}
/**
* Cette fonction retourne tous les sms programmés, sous forme d'un tableau permettant l'administration de ces sms
* @return void;
*/
public function showAll()
{ {
//Creation de l'object de base de données //Creation de l'object de base de données
global $db; global $db;
$scheduleds = $db->getFromTableWhere('scheduleds'); $scheduleds = $db->getFromTableWhere('scheduleds');
$this->render('scheduleds', array( $this->render('scheduleds/default', array(
'scheduleds' => $scheduleds, 'scheduleds' => $scheduleds,
)); ));
} }
@ -49,7 +40,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['errormessage'] = 'Jeton CSRF invalide !'; $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('profile', 'showAll')); header('Location: ' . $this->generateUrl('profile'));
return false; return false;
} }
@ -70,7 +61,7 @@
$babyonemoretime = new DateInterval('PT1M'); //Haha, i'm so a funny guy $babyonemoretime = new DateInterval('PT1M'); //Haha, i'm so a funny guy
$now->add($babyonemoretime); $now->add($babyonemoretime);
$now = $now->format('Y-m-d H:i'); $now = $now->format('Y-m-d H:i');
return $this->render('addScheduled', array( return $this->render('scheduleds/add', array(
'now' => $now 'now' => $now
)); ));
} }
@ -95,7 +86,7 @@
$scheduleds[$key]['groups'] = $db->getGroupsForScheduled($scheduled['id']); $scheduleds[$key]['groups'] = $db->getGroupsForScheduled($scheduled['id']);
} }
$this->render('editScheduleds', array( $this->render('scheduleds/edit', array(
'scheduleds' => $scheduleds, 'scheduleds' => $scheduleds,
)); ));
} }
@ -119,7 +110,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['errormessage'] = 'Jeton CSRF invalide !'; $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('profile', 'showAll')); header('Location: ' . $this->generateUrl('profile'));
return false; return false;
} }
} }
@ -138,7 +129,7 @@
if (!$api) if (!$api)
{ {
$_SESSION['errormessage'] = 'Pas de texte pour ce SMS !'; $_SESSION['errormessage'] = 'Pas de texte pour ce SMS !';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
} }
return false; return false;
} }
@ -149,7 +140,7 @@
if (!$api) if (!$api)
{ {
$_SESSION['errormessage'] = 'Pas numéro, de contacts, ni de groupes définis pour envoyer ce SMS !'; $_SESSION['errormessage'] = 'Pas numéro, de contacts, ni de groupes définis pour envoyer ce SMS !';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
} }
return false; return false;
} }
@ -159,7 +150,7 @@
if (!$api) if (!$api)
{ {
$_SESSION['errormessage'] = 'La date renseignée est invalide.'; $_SESSION['errormessage'] = 'La date renseignée est invalide.';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
} }
return false; return false;
@ -170,7 +161,7 @@
if (!$api) if (!$api)
{ {
$_SESSION['errormessage'] = 'Impossible de créer ce SMS.'; $_SESSION['errormessage'] = 'Impossible de créer ce SMS.';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
} }
return false; return false;
} }
@ -214,7 +205,7 @@
if (!$api) if (!$api)
{ {
$_SESSION['errormessage'] = 'Le SMS a bien été créé, mais certains numéro ne sont pas valides.'; $_SESSION['errormessage'] = 'Le SMS a bien été créé, mais certains numéro ne sont pas valides.';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
} }
return true; return true;
} }
@ -222,7 +213,7 @@
if (!$api) if (!$api)
{ {
$_SESSION['successmessage'] = 'Le SMS a bien été créé.'; $_SESSION['successmessage'] = 'Le SMS a bien été créé.';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
} }
return true; return true;
} }
@ -238,7 +229,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['successmessage'] = 'Jeton CSRF invalide !'; $_SESSION['successmessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
return false; return false;
} }
@ -252,7 +243,7 @@
if (!internalTools::validateDate($date, 'Y-m-d H:i')) if (!internalTools::validateDate($date, 'Y-m-d H:i'))
{ {
$_SESSION['errormessage'] = 'La date renseignée pour le SMS numéro ' . $scheduled['id'] . ' est invalide.'; $_SESSION['errormessage'] = 'La date renseignée pour le SMS numéro ' . $scheduled['id'] . ' est invalide.';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
return false; return false;
} }
@ -299,13 +290,13 @@
if ($errors) if ($errors)
{ {
$_SESSION['errormessage'] = 'Tous les SMS ont été modifiés mais certaines données incorrects ont été ignorées.'; $_SESSION['errormessage'] = 'Tous les SMS ont été modifiés mais certaines données incorrects ont été ignorées.';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
return false; return false;
} }
else else
{ {
$_SESSION['successmessage'] = 'Tous les SMS ont été modifiés avec succès.'; $_SESSION['successmessage'] = 'Tous les SMS ont été modifiés avec succès.';
header('Location: ' . $this->generateUrl('scheduleds', 'showAll')); header('Location: ' . $this->generateUrl('scheduleds'));
return true; return true;
} }
} }

View File

@ -41,7 +41,7 @@
//Récupération des SMS envoyés triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers //Récupération des SMS envoyés triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers
$sendeds = $db->getFromTableWhere('sendeds', [], 'at', true, $limit, $offset); $sendeds = $db->getFromTableWhere('sendeds', [], 'at', true, $limit, $offset);
$this->render('sendeds', array( $this->render('sendeds/showAll', array(
'sendeds' => $sendeds, 'sendeds' => $sendeds,
'page' => $page, 'page' => $page,
'limit' => $limit, 'limit' => $limit,

View File

@ -11,14 +11,6 @@
const API_ERROR_MISSING_FIELD = 3; const API_ERROR_MISSING_FIELD = 3;
/**
* Cette fonction est alias de showAll()
*/
public function byDefault()
{
$this->send();
}
/** /**
* Cette fonction permet d'envoyer un SMS, en passant simplement des arguments à l'URL (ou pas $_GET) * Cette fonction permet d'envoyer un SMS, en passant simplement des arguments à l'URL (ou pas $_GET)
* @param string text = Le contenu du SMS * @param string text = Le contenu du SMS
@ -27,7 +19,7 @@
* @param mixed groups = Les noms des groupes auxquels envoyer les SMS. Soit un seul et il s'agit d'un string. Soit plusieurs, et il s'agit d'un tableau * @param mixed groups = Les noms des groupes auxquels envoyer les SMS. Soit un seul et il s'agit d'un string. Soit plusieurs, et il s'agit d'un tableau
* @param optionnal string date = La date à laquelle doit être envoyé le SMS. Au format 'Y-m-d H:i'. Si non fourni, le SMS sera envoyé dans 2 minutes * @param optionnal string date = La date à laquelle doit être envoyé le SMS. Au format 'Y-m-d H:i'. Si non fourni, le SMS sera envoyé dans 2 minutes
*/ */
public function send() public function byDefault()
{ {
global $db; global $db;

View File

@ -15,18 +15,9 @@
} }
/** /**
* Cette fonction est alias de showAll() * Cette fonction retourne tous les utilisateurs, sous forme d'un tableau permettant l'administration de ces utilisateurs
*/ */
public function byDefault() public function byDefault()
{
$this->showAll();
}
/**
* Cette fonction retourne tous les utilisateurs, sous forme d'un tableau permettant l'administration de ces utilisateurs
* @return void;
*/
public function showAll()
{ {
//Creation de l'object de base de données //Creation de l'object de base de données
global $db; global $db;
@ -35,7 +26,7 @@
//Récupération des utilisateurs //Récupération des utilisateurs
$users = $db->getFromTableWhere('users'); $users = $db->getFromTableWhere('users');
$this->render('users', array( $this->render('users/default', array(
'users' => $users, 'users' => $users,
)); ));
} }
@ -45,7 +36,7 @@
*/ */
public function add() public function add()
{ {
$this->render('addUser'); $this->render('users/add');
} }
/** /**
@ -117,7 +108,7 @@
$db->insertIntoTable('events', ['type' => 'USER_ADD', 'text' => 'Ajout de l\'utilisateur : ' . $email]); $db->insertIntoTable('events', ['type' => 'USER_ADD', 'text' => 'Ajout de l\'utilisateur : ' . $email]);
$_SESSION['successmessage'] = 'L\'utilisateur a bien été créé.'; $_SESSION['successmessage'] = 'L\'utilisateur a bien été créé.';
header('Location: ' . $this->generateUrl('users', 'showAll')); header('Location: ' . $this->generateUrl('users'));
return true; return true;
} }
@ -133,7 +124,7 @@
if (!internalTools::verifyCSRF($csrf)) if (!internalTools::verifyCSRF($csrf))
{ {
$_SESSION['errormessage'] = 'Jeton CSRF invalide !'; $_SESSION['errormessage'] = 'Jeton CSRF invalide !';
header('Location: ' . $this->generateUrl('users', 'showAll')); header('Location: ' . $this->generateUrl('users'));
return false; return false;
} }
@ -144,7 +135,7 @@
if (!$_SESSION['admin']) if (!$_SESSION['admin'])
{ {
$_SESSION['errormessage'] = 'Vous devez être administrateur pour effectuer cette action.'; $_SESSION['errormessage'] = 'Vous devez être administrateur pour effectuer cette action.';
header('Location: ' . $this->generateUrl('users', 'showAll')); header('Location: ' . $this->generateUrl('users'));
return false; return false;
} }

View File

@ -37,14 +37,16 @@ CREATE TABLE contacts
id INT NOT NULL AUTO_INCREMENT, id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL, name VARCHAR(100) NOT NULL,
number VARCHAR(12) NOT NULL, number VARCHAR(12) NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id),
UNIQUE (name)
); );
CREATE TABLE groups CREATE TABLE groups
( (
id INT NOT NULL AUTO_INCREMENT, id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL, name VARCHAR(100) NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id),
UNIQUE (name)
); );
CREATE TABLE groups_contacts CREATE TABLE groups_contacts

1
mvc/404.php Normal file
View File

@ -0,0 +1 @@
<h1>404 Not Found</h1>