forked from rebillar/site-accueil-insa
début du nouveau système de com ville
This commit is contained in:
parent
84ca0441c1
commit
299461d12c
6 changed files with 112 additions and 652 deletions
18
README.md
18
README.md
|
@ -117,15 +117,6 @@ Par défaut il faut avoir une seule ligne vide, le script se chargera de la modi
|
|||
| team | tinyint(1) | | |
|
||||
| id_staff | text | | |
|
||||
|
||||
### ville
|
||||
|
||||
| Nom | Type | AUTO_INCREMENT | NULL |
|
||||
| :----------- |:------------:|:---------------:|:-----:|
|
||||
| session | int(11) | X | |
|
||||
| state | int(11) | | |
|
||||
| time_begin | int(11) | | |
|
||||
|
||||
ici il y a les session car il y a la session du matin et la session de l'après midi, cette table permet de savoir quelle session à été lancé, et le temps(unix) à laquelle la session à été lancé si elle l'a été.
|
||||
|
||||
### ville_epreuve
|
||||
|
||||
|
@ -135,8 +126,17 @@ ici il y a les session car il y a la session du matin et la session de l'après
|
|||
| indice | text | | |
|
||||
| reponse | varchar(50) | | |
|
||||
| photo | varchar(20) | | X |
|
||||
| id_equipe | int(11) | | X |
|
||||
| est_finale | BOOLEAN | | |
|
||||
| ordre | int(11) | | |
|
||||
| est_trouvee | BOOLEAN | | |
|
||||
|
||||
ici il va falloir mettre chaque épreuve à la main, indice correspond à ce qui va etre affiché aux PPA à chaque étape, la réponse à ce que doivent deviner les PPA, et éventuellement une photos pour les aider qui se trouve dans "assets/img/ville/"
|
||||
Le champ "id_equipe" est une clé étrangère faisant reférence à la taple ville_equipe. Cette clé est utile si l'on veut mettre des indices différents pour chaque équipe (NULL si universel).
|
||||
Le bouléen "est_finale" va servir à mettre fin au chronomètre si l'équipe trouve la réponse de l'énigme.
|
||||
L'entier "ordre" est simplement là pour spécifier la position dans laquelle l'énigme va apparaître dans le parcours de l'équipe.
|
||||
|
||||
Le bouléen "est_trouvee" va simplement indiquer si une épreuve est complétée ou non
|
||||
|
||||
### ville_equipe
|
||||
|
||||
|
|
|
@ -1,28 +1,26 @@
|
|||
<?php
|
||||
|
||||
|
||||
include "script.php";
|
||||
|
||||
include "../script/db_init.php";
|
||||
|
||||
include "../assets/scripts/globals.php";
|
||||
|
||||
if($user['perm'] < 3) {
|
||||
header('Location: deco.php');
|
||||
}
|
||||
|
||||
$req = $db->query("SELECT * FROM enigma WHERE id = 1");
|
||||
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
|
||||
if(isset($_GET["radio_bdd"])){
|
||||
|
||||
switch($_GET["radio_bdd"]){
|
||||
|
||||
case "drop":
|
||||
drop_bdd($LISTE_TABLES);
|
||||
//drop_bdd($LISTE_TABLES,$db);
|
||||
break;
|
||||
|
||||
case "create":
|
||||
create_bdd($LISTE_TABLES);
|
||||
create_bdd($LISTE_TABLES_DROP,$db);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,10 @@ require_once("../phpCAS-1.3.6/CAS.php");
|
|||
|
||||
$_SESSION['id']=1;
|
||||
$pseudo = "mougnibas";
|
||||
|
||||
$user = array(
|
||||
"pseudo"=>$pseudo,
|
||||
"perm"=>3
|
||||
);
|
||||
|
||||
/*
|
||||
// Initialize phpCAS
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?php
|
||||
include "../script/db.php";
|
||||
|
||||
include_once "../script/db.php";
|
||||
session_start();
|
||||
|
||||
if(isset($_SESSION['id'])) {
|
||||
|
@ -35,11 +34,11 @@ if($user_exist != 1) {
|
|||
case 3:
|
||||
$content = $content
|
||||
."<a href='ville.php'><li class='yellow'>Com'ville</li></a>"
|
||||
.'<a href="planning.php"><li class="orange">Planning</li></a>'
|
||||
.'<a href="gestion_des_acces.php"><li class="red">Gestion des accès</li></a>'
|
||||
.'<a href="enigma.php"><li class="red">Enigma</li></a>'
|
||||
.'<a href="../matomo" target="_matomo"><li class="red">Matomo</li></a>'
|
||||
.'<a href="bdd.php"><li class="red">/!\DANGER ZONE/!\</li></a>';
|
||||
."<a href=\"planning.php\"><li class=\"orange\">Planning</li></a>"
|
||||
."<a href=\"gestion_des_acces.php\"><li class=\"red\">Gestion des accès</li></a>"
|
||||
."<a href=\"enigma.php\"><li class=\"red\">Enigma</li></a>"
|
||||
."<a href=\"../matomo\" target=\"_matomo\"><li class=\"red\">Matomo</li></a>"
|
||||
."<a href=\"bdd.php\"><li class=\"red\">/!\DANGER ZONE/!\</li></a>";
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
443
admin/ville.php
443
admin/ville.php
|
@ -7,60 +7,38 @@ if($user['perm'] < 1) {
|
|||
header('Location: deco.php');
|
||||
}
|
||||
|
||||
if(isset($_POST['start1'])) {
|
||||
$req = $db->prepare("UPDATE ville SET state = ?, time_begin = ? WHERE session = 1");
|
||||
$req->execute(array(1, time()));
|
||||
header('Refresh: 0');
|
||||
}
|
||||
if(isset($_POST['start2'])) {
|
||||
$req = $db->prepare("UPDATE ville SET state = ?, time_begin = ? WHERE session = 2");
|
||||
$req->execute(array(1, time()));
|
||||
header('Refresh: 0');
|
||||
}
|
||||
|
||||
|
||||
//ajout d'une session ville
|
||||
if(isset($_POST['add_session'])){
|
||||
$req = $db->query("INSERT INTO ville(state,time_begin) VALUES(0,0)");
|
||||
}
|
||||
|
||||
|
||||
// ajout d'une epreuve
|
||||
if(isset($_POST['add_epreuve'])){
|
||||
$req = $db->prepare("INSERT INTO ville_epreuve(indice,reponse,photo) VALUES(?,?,?)");
|
||||
$req->execute(array(htmlspecialchars($_POST['indice']),htmlspecialchars($_POST['reponse']),'assets/img/ville/'.htmlspecialchars($_POST['photo'])));
|
||||
$_POST['est_finale'] = $_POST['est_finale'] == 'true' ? true : false;
|
||||
|
||||
|
||||
$req = $db->prepare("INSERT INTO ville_epreuve(indice,reponse,photo,id_equipe,est_finale,ordre,est_trouvee) VALUES(?,?,?,?,?,?,?)");
|
||||
$req->execute(array(htmlspecialchars($_POST['indice']),
|
||||
htmlspecialchars($_POST['reponse']),
|
||||
'assets/img/ville/'.htmlspecialchars($_POST['photo']),
|
||||
(int)htmlspecialchars($_POST['id_equipe']),
|
||||
(bool)htmlspecialchars($_POST['est_finale']),
|
||||
(int)htmlspecialchars($_POST['ordre']),
|
||||
false
|
||||
|
||||
));
|
||||
}
|
||||
|
||||
//ajout d'une equipe
|
||||
if(isset($_POST['add_equipe'])){
|
||||
$req = $db->prepare("INSERT INTO ville_equipe(nom,begin,temps) VALUES(?,?,?)");
|
||||
$req->execute(array(htmlspecialchars($_POST['nom']),(int) htmlspecialchars($_POST['begin']),NULL));
|
||||
$req = $db->prepare("INSERT INTO ville_equipe(nom,temps) VALUES(?,?)");
|
||||
$req->execute(array(htmlspecialchars($_POST['nom']),NULL));
|
||||
}
|
||||
|
||||
|
||||
if(isset($_POST['stop1'])) {
|
||||
$req = $db->query("UPDATE ville SET state = 2 WHERE session = 1");
|
||||
header('Refresh: 0');
|
||||
}
|
||||
if(isset($_POST['stop2'])) {
|
||||
$req = $db->query("UPDATE ville SET state = 2 WHERE session = 2");
|
||||
header('Refresh: 0');
|
||||
}
|
||||
|
||||
if(isset($_POST['reset1'])) {
|
||||
if(htmlspecialchars($_POST['code']) == "anti-missclick") {
|
||||
$req = $db->query("UPDATE ville SET state = 0, time_begin = 0 WHERE session = 1");
|
||||
$req = $db->query("UPDATE ville_equipe SET temps = NULL WHERE id < 17");
|
||||
header('Refresh: 0');
|
||||
}
|
||||
}
|
||||
if(isset($_POST['reset2'])) {
|
||||
if(htmlspecialchars($_POST['code']) == "anti-missclick") {
|
||||
$req = $db->query("UPDATE ville SET state = 0, time_begin = 0 WHERE session = 2");
|
||||
$req = $db->query("UPDATE ville_equipe SET temps = NULL WHERE id > 16");
|
||||
header('Refresh: 0');
|
||||
}
|
||||
}
|
||||
/* TODO :
|
||||
- MODIFIER LES SCRIPTS D'AJOUTS pour intégrer les autres champs
|
||||
- faire un tableau pour chaque équipe (à défiler)
|
||||
- faire un tableau récapitulatif des équipes
|
||||
*/
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
|
@ -74,372 +52,63 @@ if(isset($_POST['reset2'])) {
|
|||
<body>
|
||||
<main>
|
||||
|
||||
<form method="POST">
|
||||
<input type="submit" name="add_session" value="Ajouter une session" id="add_session" class="submit_inline">
|
||||
<label for="add_session">Ajouter une session de ville (plage où plusieurs equipes s'enchainent). Habituellement une matin et une aprem.</label>
|
||||
</form>
|
||||
<form method="POST">
|
||||
<input type="text" name="indice" placeholder="indice" class="input_inline">
|
||||
<input type="text" name="reponse" placeholder="réponse" class="input_inline">
|
||||
<input type="text" name="photo" placeholder="prout.png" class="input_inline">
|
||||
<input type="number" name="id_equipe" id="id_equipe" class="input_inline" value="<?= isset($_GET["ekip"]) ? (int)$_GET["ekip"]:1;?>">
|
||||
<label for="id_equipe">id de l'équipe</label>
|
||||
<input type="radio" name="est_finale" id="est_finale" class="input_inline">
|
||||
<label for="est_finale">ultime épreuve</label>
|
||||
<input type="number" name="ordre" id="ordre" class="input_inline">
|
||||
<label for="ordre">ordre de l'épreuve</label>
|
||||
<input type="submit" name="add_epreuve" value="Ajouter l'épreuve" class="submit_inline">
|
||||
</form>
|
||||
|
||||
<hr>
|
||||
<form method="POST">
|
||||
<input type="text" name="nom" placeholder="nom de l'équipe" class="input_inline">
|
||||
<input type="number" name="begin" id="begin" class="input_inline">
|
||||
<label for="begin" >numero de l'étape à laquelle démarre l'équipe</label>
|
||||
<input type="submit" name="add_equipe" value="Ajouter l'équipe" class="submit_inline">
|
||||
</form>
|
||||
|
||||
|
||||
<h4>Equipes déjà enregistrées :</h4>
|
||||
<table class="acces">
|
||||
<?php
|
||||
$req = $db->query('SELECT * FROM ville_equipe');
|
||||
while($equipe = $req->fetch()) {
|
||||
|
||||
echo "<th><a href=\"?ekip=".$equipe['id']."\">".htmlspecialchars($equipe['nom'])."(".$equipe['id'].")"."<a></th><wbr>";
|
||||
}
|
||||
|
||||
|
||||
if(isset($_GET['session']) AND !empty($_GET['session']))
|
||||
{
|
||||
$session = (int) htmlspecialchars($_GET['session']);
|
||||
if($session == 1) {
|
||||
?>
|
||||
|
||||
<form me
|
||||
<a href="ville.php?session=1" class="href_session_selected">Session matin</a>
|
||||
<a href="ville.php?session=2" class="href_session">Session aprem</a>
|
||||
<br>
|
||||
</table>
|
||||
<hr>
|
||||
<?php
|
||||
$req = $db->query("SELECT state FROM ville WHERE session = 1");
|
||||
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
if($r[0]['state'] == 0) {
|
||||
$ekip = isset($_GET["ekip"]) ? (int)$_GET["ekip"]:1;
|
||||
$req = $db->prepare('SELECT * FROM ville_epreuve WHERE id_equipe=?');
|
||||
$req->execute(array($ekip));
|
||||
?>
|
||||
<font color="green">Session non demarrée, </font>
|
||||
<form method="POST">
|
||||
<input type="submit" name="start1" value="Démarrer la session" class="submit_inline"></form>
|
||||
<form method="GET">
|
||||
<input type="number" name="ekip" id="ekip" placeholder="numéro de l'équipe" class="input_inline">
|
||||
<label for="ekip">Numéro de l'équipe dont tu veux voir le tableau</label>
|
||||
<input type="submit" name="aff_equipe" value="Afficher le tableau de l'équipe" class="submit_inline">
|
||||
</form>
|
||||
<?php
|
||||
} elseif($r[0]['state'] >= 1) {
|
||||
if($r[0]['state'] == 1) {
|
||||
?>
|
||||
<font color="orange">Session en cours, </font>
|
||||
<form method="POST">
|
||||
<input type="submit" name="stop1" value="Stopper la session" class="submit_inline"></form>
|
||||
</form>
|
||||
|
||||
<META HTTP-EQUIV="Refresh" CONTENT="<?= $refresh_rate ?>">
|
||||
|
||||
<?php
|
||||
} elseif($r[0]['state'] == 2) {
|
||||
?>
|
||||
<font color="red">Session terminée, </font>
|
||||
<form method="POST">
|
||||
<input type="text" name="code" placeholder="anti-missclick" class="input_inline">
|
||||
<input type="submit" name="reset1" value="Reset la session" class="submit_inline"></form>
|
||||
</form>
|
||||
<?php
|
||||
}
|
||||
echo "<br><br><br>";
|
||||
|
||||
$reqsession = $db->query("SELECT state, time_begin FROM ville WHERE session = 1");
|
||||
$rs = $reqsession -> fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
$reqe = $db->query('SELECT * FROM ville_equipe WHERE id < 17');
|
||||
while($e = $reqe->fetch()) {
|
||||
$temps_init = $e["temps"];
|
||||
$tab_time = NULL;
|
||||
$tab_time = explode(";", $temps_init);
|
||||
$temps_begin = date("H:i:s",$rs[0]['time_begin']);
|
||||
|
||||
if($temps_init == NULL) {
|
||||
$avancement = (int) 0;
|
||||
$delta_time_0 = gmdate("H:i:s",time()-$rs[0]['time_begin']);
|
||||
} else {
|
||||
$avancement = count($tab_time);
|
||||
$def_time = $tab_time[$avancement-1] - $rs[0]['time_begin'];
|
||||
$delta_time_0 = gmdate("H:i:s",$tab_time['0']-$rs[0]['time_begin']);
|
||||
}
|
||||
|
||||
//node 0
|
||||
?>
|
||||
<div class="cmv-progress">
|
||||
<h5 id="cmv-title" class="cmv-title">Equipe <?= $e['nom'] ?></h5>
|
||||
<div class="cmv-container">
|
||||
<div class="cmv-step fait">0
|
||||
<div class="cmv-fixed"><?= $temps_begin ?></div> <!-- avec "--:--" = heure de départ -->
|
||||
</div>
|
||||
|
||||
<div class="cmv-way fait">
|
||||
<div class="cmv-relative"><?= $delta_time_0 ?></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
/** Pour une équipe donnée */
|
||||
|
||||
/** $depart : Le point de départ de cette équipe */
|
||||
$depart = $e['begin'];
|
||||
|
||||
/** $etape : À quelle étape en est cette équipe, si on l'utilise il faut décommenter quelques ligne plus bas : "$current = $etape - $depart + 1;" et commenter "$current = $avancement+1;" */
|
||||
//$etape = 1;
|
||||
|
||||
/** $i va de 1 à 17 (inclus), 17 étant le nombre d'étapes */
|
||||
for ($i = 1; $i <= 17; $i++) {
|
||||
|
||||
/** $node : Le numéro dans la node à l'emplacement $i
|
||||
* exemple : si une équipe commence au point 7 alors la première node ($i = 1)
|
||||
* va contenir $node = 7 À UTILISER POUR LES TEMPS ! */
|
||||
$node = ($i + $depart - 2) % 17 + 1;
|
||||
|
||||
/** $current : À quel index est placé la node correspondante à l'$etape
|
||||
* exemple : une équipe qui commence au point 17 en est au point 3,
|
||||
* elle est donc affichée comme étant au niveau de la node d'index 4 ($i = 4)
|
||||
* puisque de gauche à droite les premières nodes sont 17 - 1 - 2 - 3 */
|
||||
|
||||
//$current = $etape - $depart + 1;
|
||||
|
||||
$current = $avancement+1;
|
||||
|
||||
if ($current < 0) {
|
||||
$current = $current + 17;
|
||||
}
|
||||
|
||||
/** Si le point $i a été fait (fait), est en train d'être fait (actuel), ou n'a pas encore été atteint */
|
||||
$state = '';
|
||||
if ($i < $current) {
|
||||
$state = ' fait';
|
||||
} elseif ($i === $current) {
|
||||
$state = ' active';
|
||||
}
|
||||
|
||||
|
||||
echo '<div class="cmv-step'.$state.'">';
|
||||
echo $node;
|
||||
|
||||
if ($i <= $current) {
|
||||
// --:-- doit être remplacé par l'heure à laquelle le point $node a été atteint
|
||||
if($i == $current) {
|
||||
echo '<div class="cmv-fixed">'.date("H:i:s",time()).'</div>';
|
||||
} else {
|
||||
echo '<div class="cmv-fixed">'.date("H:i:s",$tab_time[$i-1]).'</div>';
|
||||
}
|
||||
}
|
||||
echo '</div>';
|
||||
|
||||
if ($i < 17) {
|
||||
echo '<div class="cmv-way'.$state.'">';
|
||||
if ($i < $current) {
|
||||
if($i < $current-1) {
|
||||
echo '<div class="cmv-relative">'.gmdate("H:i:s",$tab_time[$i]-$tab_time[$i-1]).'</div>'; // --mn doit être remplacé par le deltaT entre les points $node et $node+1
|
||||
} else {
|
||||
echo '<div class="cmv-relative">'.gmdate("H:i:s",time()-$tab_time[$i-1]).'</div>';
|
||||
}
|
||||
|
||||
}
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
} //fin du while e
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} elseif($session == 2) {
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
<a href="ville.php?session=1" class="href_session">Session matin</a>
|
||||
<a href="ville.php?session=2" class="href_session_selected">Session aprem</a>
|
||||
<br>
|
||||
<?php
|
||||
$req = $db->query("SELECT state FROM ville WHERE session = 2");
|
||||
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
if($r[0]['state'] == 0) {
|
||||
?>
|
||||
<font color="green">Session non demarrée, </font>
|
||||
<form method="POST">
|
||||
<input type="submit" name="start2" value="Démarrer la session" class="submit_inline"></form>
|
||||
</form>
|
||||
<?php
|
||||
} elseif($r[0]['state'] >= 1) {
|
||||
if($r[0]['state'] == 1) {
|
||||
?>
|
||||
<font color="orange">Session en cours, </font>
|
||||
<form method="POST">
|
||||
<input type="submit" name="stop2" value="Stopper la session" class="submit_inline"></form>
|
||||
</form>
|
||||
|
||||
<META HTTP-EQUIV="Refresh" CONTENT="<?= $refresh_rate ?>">
|
||||
|
||||
<?php
|
||||
} elseif($r[0]['state'] == 2) {
|
||||
?>
|
||||
<font color="red">Session terminée, </font>
|
||||
<form method="POST">
|
||||
<input type="text" name="code" placeholder="anti-missclick" class="input_inline">
|
||||
<input type="submit" name="reset2" value="Reset la session" class="submit_inline"></form>
|
||||
</form>
|
||||
<?php
|
||||
}
|
||||
echo "<br><br><br>";
|
||||
|
||||
$reqsession = $db->query("SELECT state, time_begin FROM ville WHERE session = 2");
|
||||
$rs = $reqsession -> fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
$reqe = $db->query('SELECT * FROM ville_equipe WHERE id > 16');
|
||||
while($e = $reqe->fetch()) {
|
||||
$temps_init = $e["temps"];
|
||||
$tab_time = NULL;
|
||||
$tab_time = explode(";", $temps_init);
|
||||
$temps_begin = date("H:i:s",$rs[0]['time_begin']);
|
||||
|
||||
if($temps_init == NULL) {
|
||||
$avancement = (int) 0;
|
||||
$delta_time_0 = gmdate("H:i:s",time()-$rs[0]['time_begin']);
|
||||
} else {
|
||||
$avancement = count($tab_time);
|
||||
$def_time = $tab_time[$avancement-1] - $rs[0]['time_begin'];
|
||||
$delta_time_0 = gmdate("H:i:s",$tab_time['0']-$rs[0]['time_begin']);
|
||||
}
|
||||
|
||||
//node 0
|
||||
?>
|
||||
<div class="cmv-progress">
|
||||
<h5 id="cmv-title" class="cmv-title">Equipe <?= $e['nom'] ?></h5>
|
||||
<div class="cmv-container">
|
||||
<div class="cmv-step fait">0
|
||||
<div class="cmv-fixed"><?= $temps_begin ?></div> <!-- avec "--:--" = heure de départ -->
|
||||
</div>
|
||||
|
||||
<div class="cmv-way fait">
|
||||
<div class="cmv-relative"><?= $delta_time_0 ?></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
/** Pour une équipe donnée */
|
||||
|
||||
/** $depart : Le point de départ de cette équipe */
|
||||
$depart = $e['begin'];
|
||||
|
||||
/** $etape : À quelle étape en est cette équipe, si on l'utilise il faut décommenter quelques ligne plus bas : "$current = $etape - $depart + 1;" et commenter "$current = $avancement+1;" */
|
||||
//$etape = 1;
|
||||
|
||||
/** $i va de 1 à 17 (inclus), 17 étant le nombre d'étapes */
|
||||
for ($i = 1; $i <= 17; $i++) {
|
||||
|
||||
/** $node : Le numéro dans la node à l'emplacement $i
|
||||
* exemple : si une équipe commence au point 7 alors la première node ($i = 1)
|
||||
* va contenir $node = 7 À UTILISER POUR LES TEMPS ! */
|
||||
$node = ($i + $depart - 2) % 17 + 1;
|
||||
|
||||
/** $current : À quel index est placé la node correspondante à l'$etape
|
||||
* exemple : une équipe qui commence au point 17 en est au point 3,
|
||||
* elle est donc affichée comme étant au niveau de la node d'index 4 ($i = 4)
|
||||
* puisque de gauche à droite les premières nodes sont 17 - 1 - 2 - 3 */
|
||||
|
||||
//$current = $etape - $depart + 1;
|
||||
|
||||
$current = $avancement+1;
|
||||
|
||||
if ($current < 0) {
|
||||
$current = $current + 17;
|
||||
}
|
||||
|
||||
/** Si le point $i a été fait (fait), est en train d'être fait (actuel), ou n'a pas encore été atteint */
|
||||
$state = '';
|
||||
if ($i < $current) {
|
||||
$state = ' fait';
|
||||
} elseif ($i === $current) {
|
||||
$state = ' active';
|
||||
}
|
||||
|
||||
|
||||
echo '<div class="cmv-step'.$state.'">';
|
||||
echo $node;
|
||||
|
||||
if ($i <= $current) {
|
||||
// --:-- doit être remplacé par l'heure à laquelle le point $node a été atteint
|
||||
if($i == $current) {
|
||||
echo '<div class="cmv-fixed">'.date("H:i:s",time()).'</div>';
|
||||
} else {
|
||||
echo '<div class="cmv-fixed">'.date("H:i:s",$tab_time[$i-1]).'</div>';
|
||||
}
|
||||
}
|
||||
echo '</div>';
|
||||
|
||||
if ($i < 17) {
|
||||
echo '<div class="cmv-way'.$state.'">';
|
||||
if ($i < $current) {
|
||||
if($i < $current-1) {
|
||||
echo '<div class="cmv-relative">'.gmdate("H:i:s",$tab_time[$i]-$tab_time[$i-1]).'</div>'; // --mn doit être remplacé par le deltaT entre les points $node et $node+1
|
||||
} else {
|
||||
echo '<div class="cmv-relative">'.gmdate("H:i:s",time()-$tab_time[$i-1]).'</div>';
|
||||
}
|
||||
|
||||
}
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
} //fin du while e
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
header('Location: ../error.php');
|
||||
}
|
||||
} else {
|
||||
?>
|
||||
<a href="ville.php?session=1" class="href_session">Session matin</a>
|
||||
|
||||
<a href="ville.php?session=2" class="href_session">Session aprem</a>
|
||||
|
||||
<table class="acces">
|
||||
<tr>
|
||||
<th width="10%">ID (db)</td>
|
||||
<th width="70%">Indice</td>
|
||||
<th width="10%">reponse</td>
|
||||
<th width="10%">photos</td>
|
||||
<th width="10%">ID (db)</th>
|
||||
<th width="70%">Indice</th>
|
||||
<th width="10%">reponse</th>
|
||||
<th width="10%">photos</th>
|
||||
<th width="10%">id_equipe</th>
|
||||
<th width="10%">est finale</th>
|
||||
<th width="10%">ordre</th>
|
||||
<th width="10%">est trouvée</th>
|
||||
</tr>
|
||||
<?php
|
||||
$req = $db->query('SELECT id, indice, reponse, photo FROM ville_epreuve');
|
||||
|
||||
|
||||
|
||||
while($epreuve = $req->fetch()) {
|
||||
?>
|
||||
<tr>
|
||||
|
@ -447,11 +116,15 @@ if(isset($_POST['reset2'])) {
|
|||
<td><?= $epreuve['indice'] ?></td>
|
||||
<td><?= $epreuve['reponse'] ?></td>
|
||||
<td><?php if(isset($epreuve['photo'])) { ?><img src="../assets/img/com_ville/<?= $epreuve['photo'] ?>" style="height: 100px;"><?php } else { echo "<font color='red'>no photos</font>"; }?></td>
|
||||
<td><?= $epreuve['id_equipe'] ?></td>
|
||||
<td><?= $epreuve['est_finale'] == 0 ? "non":"oui" ?></td>
|
||||
<td><?= $epreuve['ordre'] ?></td>
|
||||
<td><?= $epreuve['est_trouvee'] == 0 ? "non":"oui" ?></td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</table>
|
||||
|
||||
<?php } ?>
|
||||
<?php ?>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
261
com_ville.php
261
com_ville.php
|
@ -4,255 +4,42 @@ include "assets/fonts/color.php";
|
|||
|
||||
include "script/db.php";
|
||||
|
||||
$nombre_d_epreuve = (int) 17;
|
||||
include "script/globals.php"
|
||||
|
||||
if(isset($_GET['team']) AND !empty($_GET['team']))
|
||||
{
|
||||
$team = (int) htmlspecialchars($_GET['team']);
|
||||
|
||||
$req = $db->prepare("SELECT * FROM ville_equipe WHERE id = ?");
|
||||
$req->execute(array($team));
|
||||
$rc = $req->rowcount();
|
||||
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
|
||||
if($rc == 1) {
|
||||
if($r[0]['id'] < $nombre_d_epreuve) {
|
||||
$session = 1;
|
||||
} else {
|
||||
$session = 2;
|
||||
}
|
||||
$reqsession = $db->prepare("SELECT state, time_begin FROM ville WHERE session = ?");
|
||||
$reqsession->execute(array($session));
|
||||
$rs = $reqsession -> fetchAll(PDO::FETCH_ASSOC);
|
||||
if($rs[0]['state']!=1) {
|
||||
header('Location: error.php');
|
||||
}
|
||||
} else {
|
||||
header('Location: error.php');
|
||||
}
|
||||
|
||||
//page avec le GET team
|
||||
$name = $r[0]["nom"];
|
||||
$begin = $r[0]["begin"];
|
||||
$temps_init = $r[0]["temps"];
|
||||
$tab_time = explode(";", $temps_init);
|
||||
|
||||
if($temps_init == NULL) {
|
||||
$avancement = (int) 0;
|
||||
$delta_temps = time() - $rs[0]['time_begin'];
|
||||
$delta_temps_begin = $delta_temps;
|
||||
} else {
|
||||
$avancement = count($tab_time);
|
||||
$delta_temps = time() - $tab_time[$avancement-1];
|
||||
$delta_temps_begin = time() - $rs[0]['time_begin'];
|
||||
$def_time = $tab_time[$avancement-1] - $rs[0]['time_begin'];
|
||||
}
|
||||
|
||||
$etape = (int) ($begin + $avancement)%($nombre_d_epreuve+1); //attention ici pour 2022 on a decidé d'avoir une épreuve de plus que de nombre d'équipe, à refaire en fonction des années <=> [nombre d'équipe = nombre d'épreuve - 1]
|
||||
if($begin + $avancement <= 17) {
|
||||
$etape = $begin + $avancement;
|
||||
} else {
|
||||
$etape = ( ($begin + $avancement)%($nombre_d_epreuve+1) ) + 1; //même chose ici
|
||||
}
|
||||
$req = $db->prepare("SELECT * FROM ville_epreuve WHERE id = ?");
|
||||
$req->execute(array($etape));
|
||||
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
if($avancement+1 <= $nombre_d_epreuve) {
|
||||
if(isset($_POST['send'])) {
|
||||
if(isset($_POST['answer']) AND !empty($_POST['answer'])) {
|
||||
$pass = htmlspecialchars($_POST['answer']);
|
||||
|
||||
if($pass == $r[0]['reponse']) {
|
||||
if($temps_init == NULL) {
|
||||
$temps_new = time();
|
||||
} else {
|
||||
$temps_new = $temps_init.";".time();
|
||||
}
|
||||
|
||||
$req = $db->prepare("UPDATE ville_equipe SET temps = ? WHERE id = ?");
|
||||
$req->execute(array($temps_new, $team));
|
||||
header('Refresh: 0');
|
||||
} else {
|
||||
$error = "Le code est incorrect";
|
||||
}
|
||||
} else {
|
||||
$error = "Vous devez entrer le code pour passer à l'étape suivante !";
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
<div class="zone_txt">
|
||||
<?php
|
||||
if($avancement+1 <= $nombre_d_epreuve) {
|
||||
?>
|
||||
L'épreuve à commencé depuis <font color="red"><?= gmdate("H:i:s",$delta_temps_begin) ?></font> !<br>
|
||||
Vous êtes sur cette étape depuis <font color="red"><?= gmdate("H:i:s",$delta_temps) ?></font> !<br><br>
|
||||
<?php if($r[0]["photo"] != NULL) { ?><img src="assets/img/com_ville/<?= $r[0]["photo"] ?>" class="img_enigme"><br><br><?php } ?>
|
||||
<strong><?= $r[0]["indice"] ?></strong><br><br>
|
||||
<form method="POST">
|
||||
<input type="text" placeholder="le code (the only one)" name="answer" class="input">
|
||||
<input type="submit" name="send" value="Passer à l'étape suivante" class="submit">
|
||||
</form>
|
||||
<font color="red"><?php if(isset($error)) { echo $error; } ?></font>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
Vous avez finit le circuit en <font color="red"><?= gmdate("H:i:s",$def_time) ?></font> !<br><br>
|
||||
<?= colored_text("Felicitation") ?> !
|
||||
<?php
|
||||
}
|
||||
|
||||
/* principe de fonctionnement :
|
||||
|
||||
1. si ?team=int est dans la requête GET
|
||||
- on vérifie que l'équipe existe
|
||||
- si l'équipe n'a pas démarrée, mettre un bouton play pour démarrer la session
|
||||
- sinon, on affiche l'énigme courante (ordre+1 de la dernière trouvée)
|
||||
|
||||
2. si une réponse est envoyée, (requête POST)
|
||||
- on check si c'est la bonne réponse
|
||||
- si c'est la bonne réponse, on met est_trouvée à 1 dans la BDD
|
||||
- si en plus c'est l'énigme finale,
|
||||
- on récupère le temps unix actuel et calcule le temps total
|
||||
- on affiche le temps total et l'enregistre dans la BDD
|
||||
|
||||
3. si c'est une simple requête GET sans paramètre team,
|
||||
- on affiche la page d'explications générales
|
||||
- on met un petit tableau de choix de team pour aller sur la page de sa team
|
||||
|
||||
*/
|
||||
|
||||
|
||||
?>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
<?php
|
||||
//gin de la page avec le GET team
|
||||
} else {
|
||||
//page sans le GET team
|
||||
?>
|
||||
<main>
|
||||
<div class="zone_txt">
|
||||
Salut à toi <strong><font color="red">P</font></strong>etit <strong><font color="red">P</font></strong>erdu <strong><font color="red">A</font></strong>rrivant tout juste dans cette magnifique ville qu’est <?= colored_text("Toulouse") ?> ( si t’habites déjà ici tu n’es pas concerné par cette phrase d’introduction mais te plains pas trop on s’occupe du jour où tu va pouvoir le plus flex de la semaine).<br>
|
||||
Tout d’abord il faut que tu saches que le destin nous a mis plein de carapaces dans les roues : devoir partager la journée avec la com rallye et ses infâmes respos, la ville de Toulouse qui décide de saboter nos plans en organisant la grande <?= colored_text("bowsererie") ?> sur notre créneau et cet infâme président qui cherchait à nous déconcentrer pendant nos réunions. Mais ce n’est pas grave! Vu qu’on est la com de l’élite on a quand même réussi à te préparer une <?= colored_text("wati") ?> demi journée mêlant découverte d’une partie de la ville ( on compte sur ton parrain ou ta marraine pour te faire découvrir les mondes qui nous sont interdits) et activités de zinzin à la praire des filtres.<br>
|
||||
Alors il nous reste plus qu’à te dire de profiter de tes derniers instants dans ta ville natale parce que même si Toulouse c’est <?= colored_text("tarpin bieng") ?> elle va finir par te manquer (sauf si t’habites trop ds le nord).<br>
|
||||
Bon allez nous on se taille dans nos kart!<br>
|
||||
<?= colored_text("*saute*") ?><br>
|
||||
Insert “mouhahahaahaaa” diabolique mario
|
||||
</div>
|
||||
<div class="zone_txt">
|
||||
Vos missions à faire sur le chemin :<br><br>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Nom</th>
|
||||
<th>Description</th>
|
||||
<th>barème</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr>
|
||||
<td class="title">Mario furious</td>
|
||||
<td>Garde les yeux grands ouverts, Mario s’est perdu en ville et a besoin de ton aide. Si tu le vois cours vite l’attraper et il te donnera peut être un bonus</td>
|
||||
<td>3 minutes</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">Take a pic</td>
|
||||
<td>Prends un max de photos avec les habitants du royaume des champignons. Mais attention! N'importunes pas n’importe quel passant, tu dois suivre la liste ci-dessous (cf liste)</td>
|
||||
<td>10s par photo/vidéo</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">Be JoCo</td>
|
||||
<td>L’humour étant l’élément clé d’un vrai insaiens. Arrête les passants et fais les rires, tous les coups sont permis ;)</td>
|
||||
<td>20s par blague réussi avec un max de 6 blagues</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">Toad Fourras</td>
|
||||
<td>Sur votre chemin vers le château de Bowser, vous devrez chercher un mystérieux Toad (il viendra à votre rencontre si vous avez de la chance) et il faudra résoudre ses énigmes si vous souhaitez gagner un maximum de points !!!</td>
|
||||
<td>2 min30</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">Chifoumi</td>
|
||||
<td>C'est tout simple tu propose un chifoumi a un passant , tu filmes, tu gagnes, c'est bonus tu perds c'est 10 pompes ( t'as intérêt à les faire on te surveille).</td>
|
||||
<td>30s par chifoumi 3* max</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">Rangé de chaise</td>
|
||||
<td>Pour ce défi, il va vous falloir faire preuve de travail d’équipe. Tu vois une chaise contre un mur et bah c'est pareil sauf que ton pote s'assoit sur tes genoux et ainsi de suite pour arriver le plus loin du mur. Si vous réussissez à barrer toute une rue , un max de points bonus vous attend.</td>
|
||||
<td>3 premiers prennent 5 min / 3 d’apres 3 min / 5 d’apres 1 min et les autres 0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="title">la dauradaladaurade</td>
|
||||
<td>comme les poissons tu as toujours soif (qualité indispensable des insaiens). Prouve le nous et réalises ta meilleur imitation de saumon sur la place de la Daurade</td>
|
||||
<td>3 premiers prennent 5 min / 3 d’apres 3 min / 5 d’apres 1 min et les autres 0</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
<?php
|
||||
|
||||
/*$req = $db->query("SELECT state FROM ville WHERE session = 1");
|
||||
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
if($r[0]['state'] == 0) {
|
||||
?>
|
||||
<div class="zone_txt">
|
||||
<h1>Session matin</h1>
|
||||
<font color="red">La session n'a pas commencé</font>
|
||||
</div>
|
||||
<?php
|
||||
} elseif($r[0]['state'] == 1) {
|
||||
?>
|
||||
<div class="zone_txt">
|
||||
<h1>Session matin</h1>
|
||||
<font color="orange">La session est en cours</font><br><br>
|
||||
<?php
|
||||
$reqint = $db->query('SELECT id, nom FROM ville_equipe WHERE id < 17');
|
||||
while($equipe = $reqint->fetch()) {
|
||||
echo "<a href='com_ville.php?team=".$equipe["id"]."' class='team'>Equipe ".$equipe["nom"]."</a>";
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
} elseif($r[0]['state'] == 2) {
|
||||
?>
|
||||
<div class="zone_txt">
|
||||
<h1>Session matin</h1>
|
||||
<font color="black">La session est terminé</font>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
$req = $db->query("SELECT state FROM ville WHERE session = 2");
|
||||
$r = $req -> fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
if($r[0]['state'] == 0) {
|
||||
?>
|
||||
<div class="zone_txt">
|
||||
<h1>Session aprem</h1>
|
||||
<font color="red">La session n'a pas commencé</font>
|
||||
</div>
|
||||
<?php
|
||||
} elseif($r[0]['state'] == 1) {
|
||||
?>
|
||||
<div class="zone_txt">
|
||||
|
||||
<h1>Session aprem</h1>
|
||||
<font color="orange">La session est en cours</font><br><br>
|
||||
<?php
|
||||
$reqint = $db->query('SELECT id, nom FROM ville_equipe WHERE id > 16');
|
||||
while($equipe = $reqint->fetch()) {
|
||||
echo "<a href='com_ville.php?team=".$equipe["id"]."' class='team'>Equipe ".$equipe["nom"]."</a>";
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
} elseif($r[0]['state'] == 2) {
|
||||
?>
|
||||
<div class="zone_txt">
|
||||
<h1>Session aprem</h1>
|
||||
<font color="black">La session est terminé</font>
|
||||
</div>
|
||||
<?php
|
||||
}*/
|
||||
?>
|
||||
</main>
|
||||
<?php
|
||||
|
||||
} //fin de la page ou y'a pas de GET team
|
||||
/*
|
||||
$titre = "Equipe ".$name;
|
||||
|
||||
if($avancement+1 <= $nombre_d_epreuve) {
|
||||
$titre += '<br>Etape <font color="red">'.($avancement+1).'</font>/17';
|
||||
} else {
|
||||
$titre += '<br><font color="red">finit</font> aka <font color="red">17</font>/17';
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
$infopage = ["", "Com'ville", ob_get_clean(), "", "com_ville",/*$titre*/ "Com Ville !"]; //relativepath, pagetitle, pagecontent, pagescript, pagename | cf structure/template.php ligne 2 à 6
|
||||
include("structure/template.php");
|
||||
?>
|
Loading…
Reference in a new issue