Bonjour à tous,
Je suis confrontée à un problème insoluble (pour moi).
Je dispose de deux formulaires :
- le 1er envoie des informations sur la base de données et les restitue bien en front
- le 2nd est un formulaire test pour envoi des résultats des checkbox
Je ne parviens pas à intégrer mes résultats de checkbox à mon premier formulaire.
Formulaire 1 :
Formulaire 2 :
Pouvez-vous me dire comment vous feriez pour que les résultats de la checkbox s'intègrent dans la bdd ?
Je vous remercie par avance.
Cordialement,
Cynthia
Je suis confrontée à un problème insoluble (pour moi).
Je dispose de deux formulaires :
- le 1er envoie des informations sur la base de données et les restitue bien en front
- le 2nd est un formulaire test pour envoi des résultats des checkbox
Je ne parviens pas à intégrer mes résultats de checkbox à mon premier formulaire.
Formulaire 1 :
<?php
include '../lib/includes.php';
/**
* La Sauvegarde
**/
if(isset($_POST['name']) && isset($_POST['slug'])){
checkCsrf();
$slug = $_POST['slug'];
if(preg_match('/^[a-z\-0-9]+$/', $slug)){
$name = $db->quote($_POST['name']);
$slug = $db->quote($_POST['slug']);
$theme_id = $db->quote($_POST['theme_id']);
$datepicker = $db->quote($_POST['datepicker']);
$content = $db->quote($_POST['content']);
/**
* SAUVEGARDE DE LA REALISATION
**/
if(isset($_GET['id'])){
$id = $db->quote($_GET['id']);
$db->query("UPDATE soirees SET name=$name, slug=$slug, theme_id=$theme_id, datepicker=$datepicker, content=$content WHERE id=$id");
}else{
$db->query("INSERT INTO soirees SET name=$name, slug=$slug, theme_id=$theme_id, datepicker=$datepicker, content=$content");
$_GET['id'] = $db->lastInsertId();
}
setFlash('La soirée a bien été ajoutée.');
/**
* ENVOI DES IMAGES
**/
$soiree_id = $db->quote($_GET['id']);
$files = $_FILES['visuels'];
$visuels = array();
require '../lib/image.php';
foreach($files['tmp_name'] as $k => $v){
$visuel = array(
'name' => $files['name'][$k],
'tmp_name' => $files['tmp_name'][$k]
);
$extension = pathinfo($visuel['name'], PATHINFO_EXTENSION);
if(in_array($extension, array('jpg','png','jpeg','gif'))){
$db->query("INSERT INTO visuels SET soiree_id=$soiree_id");
$visuel_id = $db->lastInsertId();
$visuel_name = $visuel_id . '.' . $extension;
move_uploaded_file($visuel['tmp_name'], IMAGES . '/soirees/' . $visuel_name);
resizeImage(IMAGES . '/soirees/' . $visuel_name, 210,124);
$visuel_name = $db->quote($visuel_name);
$db->query("UPDATE visuels SET name=$visuel_name WHERE id = $visuel_id");
$db->query("UPDATE soirees SET visuel_id=$visuel_id WHERE id = $soiree_id");
}
}
header('Location:soiree_edit.php');
die();
}else{
setFlash('Slug non-valide', 'danger');
}
}
/**
* On récupère une réalisation
**/
if(isset($_GET['id'])){
$id = $db->quote($_GET['id']);
$select = $db->query("SELECT * FROM soirees WHERE id=$id");
if($select->rowCount() == 0){
setFlash("Il n'y a pas de soirée avec cet ID", "danger");
header('Location:soiree_edit.php');
die();
}
$_POST = $select->fetch();
}
/**
* Suppression d'une image
**/
if(isset($_GET['delete_visuel'])){
checkCsrf();
$id = $db->quote($_GET['delete_visuel']);
$select = $db->query("SELECT name, soiree_id FROM visuels WHERE id=$id");
$visuel = $select->fetch();
$visuels=glob(IMAGES . '/soirees/' . pathinfo($visuel['name'], PATHINFO_BASENAME) . '_*x*.*');
if(is_array($visuels)){
foreach($visuels as $v){
unlink($v);
}
}
unlink(IMAGES . '/soirees/' . $visuel['name']);
$db->query("DELETE FROM visuels WHERE id=$id");
setFlash("L'image a bien été supprimée.");
header('Location:work_edit.php?id=' . $visuel['soiree_id']);
die();
}
/**
* On récupère la liste des thèmes
**/
$select = $db->query('SELECT id, name FROM themes ORDER BY name ASC');
$themes = $select->fetchAll();
$themes_list = array();
foreach($themes as $theme){
$themes_list[$theme['id']] = $theme['name'];
}
/**
* On récupère la liste des tarifs
**/
$select = $db->query('SELECT id, name FROM tarifs');
$tarifs = $select->fetchAll();
$tarifs_list = array();
foreach($tarifs as $tarif){
$tarifs_list[$tarif['id']] = $tarif['name'];
}
/**
*On récupère la liste des images
**/
if(isset($_GET['id'])){
$soiree_id = $db->quote($_GET['id']);
$select = $db->query("SELECT id, name FROM visuels WHERE soiree_id=$soiree_id");
$visuels = $select->fetchAll();
}else{
$visuels = array();
}
include '../partials/admin_header.php';
?>
<DOCTYPE html>
<head>
<link rel="stylesheet" href="../css/Aristo/Aristo.css">
</head>
<body>
<h1><font color="#3498db">Editer une soirée</font></h1>
<div class="row">
<div class="col-sm-8">
<form action="#" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="name">Nom de la soirée :</label>
<?= input("name"); ?>
</div>
<div class="form-group">
<label for="slug">URL de la soirée :</label>
<?= input("slug"); ?>
</div>
<div class="form-group">
<label for="theme_id">Thème :</label>
<?= select("theme_id", $themes_list); ?>
</div>
<div class="form-group">
<label for="">Date de la soirée :</label>
<input type="text" id="datepicker" class="datepicker" name="datepicker">
</div>
<div class="form-group">
<label for="content">Contenu de la soirée :</label>
<?= textarea("content"); ?>
</div>
<?= csrfInput(); ?>
<div class="form-group">
<label for="tarif">Tarif :
<div class="checkbox">
<?php foreach ($tarifs as $k =>$tarif): ?>
<?php echo'<input type="checkbox" name="checkbox[]" value="'.$tarif['id'].'" />'.$tarif['name'].'
<br />'; ?>
<?php endforeach ?>
</div></label>
</div>
<div class="form-group">
<label for="visuel">Définir une image :</label>
<input type="file" name="visuels[]">
<input type="file" name="visuels[]" class="hidden" id="duplicate">
</div>
<button type="submit" class="btn btn-default">Enregistrer</button>
</form>
</div>
<div class="col-sm-4">
<?php foreach ($visuels as $k => $visuel): ?>
<p>
<img src="<?= WEBROOT; ?>img/soirees/<?= $visuel['name']; ?>" width="100"><a href="?delete_visuel=<?= $visuel['id']; ?>&<?= csrf(); ?>" onclick="return confirm('Etes-vous sûr de vouloir supprimer l'image ?');">Supprimer</a>
</p>
<?php endforeach ?>
<?php
if (!empty($_POST)) {
echo '<pre>'.print_r($_POST,true).'</pre>';
}
?>
</div>
</div>
</body>
</html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="../js/jquery-1.9.1.js"></script>
<!-- Load jQuery UI Main JS -->
<script src="../js/1.10.3/jquery-ui.js"></script>
<script src="../js/jquery.ui.js"></script>
<script src="../js/jquery-ui.js"></script>
<script src="../js/main.js"></script>
<?php ob_start(); ?>
<script src="<?= WEBROOT; ?>js/tinymce/tinymce.min.js"></script>
<script>
(function($){
$('#duplicatebtn').click(function(e){
e.preventDefault();
var $clone = $('#duplicate').clone().attr('id', '').removeClass('hidden');
$('#duplicate').before($clone);
})
})(jQuery);
tinyMCE.init({
// General options
mode : "textareas",
});
</script>
<?php $script = ob_get_clean(); ?>
<script>
/* This is the function that will get executed after the DOM is fully loaded */
function () {
$( "#datepicker" ).datepicker({
changeMonth: true,//this option for allowing user to select month
changeYear: true //this option for allowing user to select from year range
});
}
);</script>
<script type="text/javascript">
document.getElementsByName("'.$tarif['id'].'")[].checked = true;
</script>
</script>
<?php include '../partials/footer.php'; ?>
Formulaire 2 :
<?php
ini_set('display_errors',1);
include '../lib/includes.php';
/**
* ENVOI DES IMAGES
**/
if(isset($_GET['id'])){
$soiree_id = $db->quote($_GET['id']);
$files = $_FILES['visuels'];
$visuels = array();
require '../lib/image.php';
foreach($files['tmp_name'] as $k => $v){
$visuel = array(
'name' => $files['name'][$k],
'tmp_name' => $files['tmp_name'][$k]
);
$extension = pathinfo($visuel['name'], PATHINFO_EXTENSION);
if(in_array($extension, array('jpg','png'))){
$db->query("INSERT INTO visuels SET soiree_id=$soiree_id");
$visuel_id = $db->lastInsertId();
$visuel_name = $visuel_id . '.' . $extension;
move_uploaded_file($visuel['tmp_name'], IMAGES . '/soirees/' . $visuel_name);
resizeImage(IMAGES . '/soirees/' . $visuel_name, 150,150);
$visuel_name = $db->quote($visuel_name);
$db->query("UPDATE visuels SET name=$visuel_name WHERE id = $visuel_id");
$db->query("UPDATE soirees SET visuel_id=$visuel_id WHERE id = $soiree_id");
}
}
header('Location:soiree.php');
die();
}else{
setFlash('Slug non-valide', 'danger');
}
//}
//}
/**
* On récupère une réalisation
**/
if(isset($_GET['id'])){
$id = $db->quote($_GET['id']);
$select = $db->query("SELECT * FROM soirees WHERE id=$id");
if($select->rowCount() == 0){
setFlash("Il n'y a pas de soirée avec cet ID", "danger");
header('Location:soiree.php');
die();
}
$_POST = $select->fetch();
}
/**
* On récupère la liste des thèmes
**/
$select = $db->query('SELECT id, name FROM themes ORDER BY name ASC');
$themes = $select->fetchAll();
$themes_list = array();
foreach($themes as $theme){
$themes_list[$theme['id']] = $theme['name'];
}
/**
* On récupère la liste des tarifs
**/
$select = $db->query('SELECT id, name FROM tarifs');
$tarifs = $select->fetchAll();
$tarifs_list = array();
foreach($tarifs as $tarif){
$tarifs_list[$tarif['id']] = $tarif['name'];
}
/**
*RECUPERATION DONNEES CHECKBOX POUR ENVOI MYSQL
**/
if(!empty($_POST['checkbox'])){
$sql=implode(',',$_POST["checkbox"]);
//$db->query("UPDATE soirees SET tarif_id='".$sql."'") ;
}
include '../partials/admin_header.php';
?>
<DOCTYPE html>
<head>
<link rel="stylesheet" href="../css/Aristo/Aristo.css">
</head>
<body>
<h1>Editer une soirée</h1>
<div class="row">
<div class="col-sm-8">
<form action="soiree_edit_checkbox2.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="name">Nom de la soirée :</label>
<?= input("name"); ?>
</div>
<div class="form-group">
<label for="theme_id">Thème :</label>
<?= select("theme_id", $themes_list); ?>
</div>
<div class="form-group">
<label for="">Date de la soirée :</label>
<input type="text" id="datepicker" class="datepicker" name="datepicker">
</div>
<div class="form-group">
<label for="content">Contenu de la soirée :</label>
<?= textarea("content"); ?>
</div>
<?= csrfInput(); ?>
<div class="form-group">
<label for="tarif">Tarif : </label>
<div class="checkbox">
<?php foreach ($tarifs as $k =>$tarif): ?>
<?php echo'<input type="checkbox" name="checkbox[]" value="'.$tarif['id'].'" />'.$tarif['name'].'
<br />'; ?>
<?php endforeach ?>
</div>
</div>
<button type="submit" class="btn btn-default">Enregistrer</button>
</form>
</div>
<div class="col-sm-4">
<?php
if (!empty($_POST)) {
echo '<pre>'.print_r($_POST,true).'</pre>';
}
?>
</div>
</div>
<?php
if(!empty($_POST['name'])){
$name = $db->quote($_POST['name']);
$theme_id = $db->quote($_POST['theme_id']);
$datepicker = $db->quote($_POST['datepicker']);
$content = $db->quote($_POST['content']);
$db->query("INSERT INTO soirees SET name=$name, theme_id=$theme_id, datepicker=$datepicker, content=$content, tarif_id='".$sql."'");
}
?>
</body>
</html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="../js/jquery-1.9.1.js"></script>
<!-- Load jQuery UI Main JS -->
<script src="../js/1.10.3/jquery-ui.js"></script>
<script src="../js/jquery.ui.js"></script>
<script src="../js/jquery-ui.js"></script>
<script src="../js/main.js"></script>
<?php ob_start(); ?>
<script src="<?= WEBROOT; ?>js/tinymce/tinymce.min.js"></script>
<script>
(function($){
$('#duplicatebtn').click(function(e){
e.preventDefault();
var $clone = $('#duplicate').clone().attr('id', '').removeClass('hidden');
$('#duplicate').before($clone);
})
})(jQuery);
tinyMCE.init({
// General options
mode : "textareas",
});
</script>
<?php $script = ob_get_clean(); ?>
<script>
/* This is the function that will get executed after the DOM is fully loaded */
function () {
$( "#datepicker" ).datepicker({
changeMonth: true,//this option for allowing user to select month
changeYear: true //this option for allowing user to select from year range
});
}
);</script>
<?php include '../partials/footer.php'; ?>
Pouvez-vous me dire comment vous feriez pour que les résultats de la checkbox s'intègrent dans la bdd ?
Je vous remercie par avance.
Cordialement,
Cynthia