voilà c'est comme ça qu'on fait là

This commit is contained in:
thaaoblues 2023-12-23 21:42:28 +01:00
parent 0cff7402b3
commit c867505f42
6 changed files with 127 additions and 83 deletions

72
api.php
View file

@ -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;
} }

View file

@ -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
View file

@ -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>

View file

@ -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)
); );

View file

@ -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

View file

@ -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))