forked from mougnibas/archinsa
voilà c'est comme ça qu'on fait là
This commit is contained in:
parent
0cff7402b3
commit
c867505f42
6 changed files with 127 additions and 83 deletions
72
api.php
72
api.php
|
@ -76,12 +76,84 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'decomposer_ensemble':
|
||||||
|
|
||||||
|
// Récupération de l'ID de l'ensemble et du thème depuis l'URL ou autrement
|
||||||
|
$ensembleId = isset($_GET['ensemble_id']) ? intval($_GET['ensemble_id']) : '';
|
||||||
|
|
||||||
|
// Vérification de la validité de l'ID de l'ensemble
|
||||||
|
if (!empty($ensembleId)) {
|
||||||
|
// Préparation de la requête SQL pour obtenir les informations sur l'ensemble
|
||||||
|
$sqlEnsemble = 'SELECT * FROM ensembles WHERE id = ?';
|
||||||
|
$stmtEnsemble = $conn->prepare($sqlEnsemble);
|
||||||
|
$stmtEnsemble->bind_param('i', $ensembleId);
|
||||||
|
$stmtEnsemble->execute();
|
||||||
|
$resultEnsemble = $stmtEnsemble->get_result();
|
||||||
|
$ensemble = $resultEnsemble->fetch_assoc();
|
||||||
|
|
||||||
|
if ($ensemble && $ensemble['valide'] == true) {
|
||||||
|
|
||||||
|
// Préparation de la requête SQL pour obtenir les informations sur les exercices sélectionnés
|
||||||
|
$sqlDocu = "SELECT * FROM documents WHERE ensemble_id=?";
|
||||||
|
$stmtDocu = $conn->prepare($sqlDocu);
|
||||||
|
$stmtDocu->bind_param('i', $ensembleId);
|
||||||
|
$stmtDocu->execute();
|
||||||
|
$resultDocu = $stmtDocu->get_result();
|
||||||
|
|
||||||
|
$ensemble["documents"] = array();
|
||||||
|
|
||||||
|
while ($doc = $resultDocu->fetch_assoc()) {
|
||||||
|
|
||||||
|
switch ($doc['type']) {
|
||||||
|
case 1:
|
||||||
|
|
||||||
|
// on va maintenant prendre chaque exercice un par un
|
||||||
|
// et afficher les bonnes infos :
|
||||||
|
|
||||||
|
$sqlExos = "SELECT * FROM exercices WHERE document_id=?";
|
||||||
|
$stmtExos = $conn->prepare($sqlExos);
|
||||||
|
|
||||||
|
$stmtExos->bind_param('i', $doc["id"]);
|
||||||
|
$stmtExos->execute();
|
||||||
|
$resultExos = $stmtExos->get_result();
|
||||||
|
$doc["exercices"] = array();
|
||||||
|
|
||||||
|
while ($exo = $resultExos->fetch_assoc()) {
|
||||||
|
array_push($doc["exercices"],$exo);
|
||||||
|
}
|
||||||
|
|
||||||
|
array_push($ensemble["documents"],$doc);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo(json_encode(["status"=>"1","msg"=>$ensemble]));
|
||||||
|
|
||||||
|
|
||||||
|
}else{
|
||||||
|
echo(json_encode(['status'=> '2','msg'=> "Vous devez spécifier un indetifiant d'ensemble valide dans votre requête."]));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
echo(json_encode(['status'=> '2','msg'=> "Vous devez spécifier un indetifiant d'ensemble dans votre requête."]));
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
echo(json_encode(['status'=> '2','msg'=> "Ce point d'arrivée n'existe pas dans l'api."]));
|
echo(json_encode(['status'=> '2','msg'=> "Ce point d'arrivée n'existe pas dans l'api."]));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
5
bdd.php
5
bdd.php
|
@ -146,10 +146,11 @@ function saveFilesFromPost($postData,$id_ensemble) {
|
||||||
if($safe_type == 1){
|
if($safe_type == 1){
|
||||||
|
|
||||||
$exercices = json_decode($postData['exercices'],true);
|
$exercices = json_decode($postData['exercices'],true);
|
||||||
|
$document_id = mysqli_insert_id($conn);
|
||||||
foreach ($exercices as $key => $ex) {
|
foreach ($exercices as $key => $ex) {
|
||||||
// premièrement, on enregistre l'exercice
|
// premièrement, on enregistre l'exercice
|
||||||
$sql= 'INSERT INTO exercices (commentaire_auteur,ensemble_id,duree) VALUES(?,?,?)';
|
$sql= 'INSERT INTO exercices (commentaire_auteur,ensemble_id,document_id,duree) VALUES(?,?,?,?)';
|
||||||
$conn->execute_query($sql,array($ex["commentaire_exo"],$id_ensemble,intval($ex["duree"])));
|
$conn->execute_query($sql,array($ex["commentaire_exo"],$id_ensemble,$document_id,intval($ex["duree"])));
|
||||||
|
|
||||||
$id_exo = mysqli_insert_id($conn);
|
$id_exo = mysqli_insert_id($conn);
|
||||||
|
|
||||||
|
|
118
ens.php
118
ens.php
|
@ -1,81 +1,47 @@
|
||||||
<?php
|
<!DOCTYPE html>
|
||||||
include("session_verif.php");
|
<html lang="en">
|
||||||
include("test_creds.php");
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Ensemble de documents</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
pour les docs afficher un truc du même acabit que la php :
|
||||||
|
if (strtolower($extension) === 'pdf'):
|
||||||
|
echo "<embed src=\"{$doc['upload_path']}\" type=\"application/pdf\" width=\"100%\" height=\"600px\" />";
|
||||||
|
elseif (in_array(strtolower($extension), ['jpg', 'jpeg', 'png', 'gif'])):
|
||||||
|
echo "<img src=\"{$doc['upload_path']}\">";
|
||||||
|
else:
|
||||||
|
echo "<p>Oups ! Je ne sais pas afficher ce document :/ (Rales autant que tu veux je men fous) </p>".$doc['upload_path'];
|
||||||
|
endif;
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
try {
|
// fetch l'api et afficher tout ce qu'elle nous rend
|
||||||
$conn = new mysqli($servername, $username, $password,$dbname);
|
function querystring(key) {
|
||||||
} catch (Exception $e) {
|
var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
|
||||||
echo "Erreur : " . $e->getMessage();
|
var r=[], m;
|
||||||
}
|
while ((m=re.exec(document.location.search)) != null) r[r.length]=m[1];
|
||||||
|
return r;
|
||||||
// Récupération de l'ID de l'ensemble et du thème depuis l'URL ou autrement
|
|
||||||
$ensembleId = isset($_GET['ensemble_id']) ? intval($_GET['ensemble_id']) : '';
|
|
||||||
$themeId = isset($_GET['theme_id']) ? intval($_GET['theme_id']) : '';
|
|
||||||
|
|
||||||
// Vérification de la validité de l'ID de l'ensemble
|
|
||||||
if (!empty($ensembleId)) {
|
|
||||||
// Préparation de la requête SQL pour obtenir les informations sur l'ensemble
|
|
||||||
$sqlEnsemble = 'SELECT * FROM ensembles WHERE id = ?';
|
|
||||||
$stmtEnsemble = $conn->prepare($sqlEnsemble);
|
|
||||||
$stmtEnsemble->bind_param('i', $ensembleId);
|
|
||||||
$stmtEnsemble->execute();
|
|
||||||
$resultEnsemble = $stmtEnsemble->get_result();
|
|
||||||
$ensemble = $resultEnsemble->fetch_assoc();
|
|
||||||
|
|
||||||
if ($ensemble && $ensemble['valide'] == true) {
|
|
||||||
// Affichage de l'intitulé de l'ensemble
|
|
||||||
echo '<h1>' . htmlspecialchars($ensemble['commentaire_auteur']) . '</h1>';
|
|
||||||
|
|
||||||
|
|
||||||
// Préparation de la requête SQL pour obtenir les informations sur les exercices sélectionnés
|
|
||||||
$sqlExos = 'SELECT e.*, t.name AS theme_name, te.id AS exotheme_id FROM exercices e '.
|
|
||||||
'JOIN themes t ON e.ensemble_id = ?'.
|
|
||||||
'LEFT JOIN exercices_themes te ON e.id = te.exercice_id ORDER BY te.id ASC';
|
|
||||||
$stmtExos = $conn->prepare($sqlExos);
|
|
||||||
echo($sqlExos);
|
|
||||||
$stmtExos->bind_param('i', $ensembleId);
|
|
||||||
$stmtExos->execute();
|
|
||||||
$resultExos = $stmtExos->get_result();
|
|
||||||
|
|
||||||
while ($exo = $resultExos->fetch_assoc()) {
|
|
||||||
switch ($exo['type']) {
|
|
||||||
case 1:
|
|
||||||
// Traiter les annales
|
|
||||||
echo '<div class="document">';
|
|
||||||
echo '<h2>' . htmlspecialchars($exo['titre']) . '</h2>';
|
|
||||||
echo '<p>' . nl2br(htmlspecialchars($exo['commentaire_auteur'])) . '</p>';
|
|
||||||
echo '<p>Durée estimée : ' . gmdate('H:i:s', $exo['duree']) . '</p>';
|
|
||||||
echo '<a href="' . htmlspecialchars($exo['upload_path']) . '" target="_blank">Télécharger</a>';
|
|
||||||
echo '</div>';
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
// Traiter les textes à trous
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
// Traiter les fiches de révision
|
|
||||||
echo '<div class="document">';
|
|
||||||
echo '<h2>' . htmlspecialchars($exo['titre']) . '</h2>';
|
|
||||||
echo '<p>' . nl2br(htmlspecialchars($exo['commentaire_auteur'])) . '</p>';
|
|
||||||
echo '<a href="' . htmlspecialchars($exo['upload_path']) . '" target="_blank">Télécharger</a>';
|
|
||||||
echo '</div>';
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
// Traiter les QCM
|
|
||||||
echo "oui";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
echo 'L\'ensemble demandé n\'existe pas ou il n\'est pas encore validé.';
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
echo 'Aucun identifiant d\'ensemble fourni.';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fermeture de la connexion à la base de données
|
|
||||||
$conn->close();
|
|
||||||
?>
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
async function gen_contenu(){
|
||||||
|
resp = await fetch("/annales/api.php/decomposer_ensemble?ensemble_id="+querystring("ensemble_id"));
|
||||||
|
data = await resp.json();
|
||||||
|
|
||||||
|
if(data["status"] == 1){
|
||||||
|
console.log(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</html>
|
|
@ -20,7 +20,8 @@ $sql = "
|
||||||
CREATE TABLE IF NOT EXISTS ensembles (
|
CREATE TABLE IF NOT EXISTS ensembles (
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
commentaire_auteur TEXT,
|
commentaire_auteur TEXT,
|
||||||
valide BOOLEAN NOT NULL DEFAULT FALSE
|
valide BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
corrige_inclu BOOLEAN NOT NULL DEFAULT FALSE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS documents (
|
CREATE TABLE IF NOT EXISTS documents (
|
||||||
|
@ -39,8 +40,11 @@ $sql = "
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
commentaire_auteur TEXT,
|
commentaire_auteur TEXT,
|
||||||
ensemble_id INT,
|
ensemble_id INT,
|
||||||
|
document_id INT,
|
||||||
duree INT,
|
duree INT,
|
||||||
FOREIGN KEY (ensemble_id) REFERENCES ensembles(id)
|
FOREIGN KEY (ensemble_id) REFERENCES ensembles(id),
|
||||||
|
FOREIGN KEY (document_id) REFERENCES documents(id)
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,9 @@ D'autres fonctionnalités seront ajoutées petit à petit. (si vous avez des sug
|
||||||
| id | INT | AUTO_INCREMENT, PRIMARY KEY |
|
| id | INT | AUTO_INCREMENT, PRIMARY KEY |
|
||||||
| commentaire_auteur | TEXT | |
|
| commentaire_auteur | TEXT | |
|
||||||
| ensemble_id | INT | FOREIGN KEY (ensemble_id) REFERENCES ensembles(id) |
|
| ensemble_id | INT | FOREIGN KEY (ensemble_id) REFERENCES ensembles(id) |
|
||||||
|
| document_id | INT | FOREIGN KEY (document_id) REFERENCES documents(id)
|
||||||
| duree | INT | |
|
| duree | INT | |
|
||||||
(la durée est en secondes)
|
(la durée est en minutes)
|
||||||
|
|
||||||
### Table: ensembles
|
### Table: ensembles
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ function uploadFiles() {
|
||||||
|
|
||||||
formData.append("corrige_inclu",document.getElementById("corrige_checkbox").value);
|
formData.append("corrige_inclu",document.getElementById("corrige_checkbox").value);
|
||||||
|
|
||||||
let ex = [{duree:"10",themes:["algèbre","analyse"],commentaire_exo:"cci est un commenataire"},{duree:"15",themes:["elec analogique"],commentaire_exo:""}];
|
let ex = [{duree:"10",themes:["algèbre","analyse"],commentaire_exo:"ceci est un commenataire"},{duree:"15",themes:["elec analogique"],commentaire_exo:""}];
|
||||||
formData.append("exercices",JSON.stringify(ex))
|
formData.append("exercices",JSON.stringify(ex))
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue