Bonjour,
Je suis en train de créer un formulaire avec une checkbox j'arrive bien a envoyer a la base de données le fait que la checkbox est été cochée j'envoie 1 quand c'est "checked" et 0 sinon , mais je n'arrive pas a afficher l’état "checked" quand j'affiche mon enregistrement.
pourriez vous m'éclairer sur ce soucis?
function checkbox($id){
$value = isset($_POST->$id) ? $_POST->$id : '';
return "<input type='checkbox' id='$id' name='$id' value='$value' >";
}
Je souhaiterai que ce soit un peu sur le même principe que le code ci-dessous:
function select($id, $options = array()){
$return = "<select id='$id' name='$id' class='form-control'>";
foreach($options as $k => $v){
$selected ='';
if(isset($_POST->$id) && $k == $_POST->$id){
$selected = ' selected="selected"';
}
$return .= "<option value='$k' $selected>$v</option>";
}
$return .= '</select>';
return $return;
}
mais je m'y perd un peu!!!!
merci par avance de votre aide.
Gilles
Essaye ceci:
$('#double_clef').prop('checked', parseInt(ui.item.double_clef));
Ben pour afficher l'etat checked il suffit de rajouter 'checked' dans ta balise ...
return "<input type='checkbox' id='$id' name='$id' value='$value' checked >";
Bonjour Vallyan,
Ca ne fonctionne pas je ne vois pas comment passer au checkbox le fait que je recupere "1" de la base de donnees
Je ne sais pas exactement comment tu récupères tes valeurs depuis ta bdd (le format de ta variable qui le stocke), mais dans l'idée si la valeur 1 (ou 0) est stockée dans la variable $kiki, alors tu fais simplement :
$checked = $kiki ? ' checked' : '';
return "<input type='checkbox' id='$id' name='$id' value='$value' $checked >";
non ?
Re,
bon ben ca fonctionne pas grrrr.
je mets tout le code que j'utilise ci-dessous:
<?php
function input($id){
$value = isset($_POST->$id) ? $_POST->$id : '';
return "<input type='text' id='$id' name='$id' value='$value' class='form-control'>";
//<!--<input class="form-control" type="text" name="name" />-->
}
function input_read($id){
$value = isset($_POST->$id) ? $_POST->$id : '';
return "<input type='text' id='$id' name='$id' value='$value' class='form-control' readonly>";
//<!--<input class="form-control" type="text" name="name" />-->
}
function input_hidden($id){
$value = isset($_POST->$id) ? $_POST->$id : '';
return "<input type='hidden' id='$id' name='$id' value='$value'>";
//<!--<input class="form-control" type="text" name="name" />-->
}
function checkbox($id){
$value = isset($_POST->$id) ? $_POST->$id : '';
return "<input type='checkbox' id='$id' name='$id' value='$value'>";
}
function textarea($id){
$value = isset($_POST->$id) ? $_POST->$id : '';
return "<textarea type='text' class='form-control' id='$id' name='$id'>$value</textarea>";
}
function password($id){
$value = isset($_POST->$id) ? $_POST->$id : '';
return "<input type='password' id='$id' name='$id'>";
}
function select($id, $options = array()){
$return = "<select id='$id' name='$id' class='form-control'>";
foreach($options as $k => $v){
$selected ='';
if(isset($_POST->$id) && $k == $_POST->$id){
$selected = ' selected="selected"';
}
$return .= "<option value='$k' $selected>$v</option>";
}
$return .= '</select>';
return $return;
}
<?php
include '../lib/includes.php';
$Auth->allow('agence');
/**
* Recherche des agences
*/
$select = $db->query("SELECT * FROM agences");
$agences = $select->fetchAll();
$agences_list = array();
foreach($agences as $agence){
$agences_list$agence->id] = $agence->name;
}
/**
* Recherche des vehicules pas arrivés
*/
if (isset($_GET'q']))
{
$select = $db->query("SELECT vehicules.id, vehicules.immat, vehicules.chassis, vehicules.mva, vehicules.date_arrivee, vehicules.double_clef, typesmines.marque, typesmines.modele
FROM typesmines
LEFT JOIN vehicules
ON typesmines.id = vehicules.typesmine_id
WHERE date_arrivee IS NULL AND immat LIKE '".$_GET'q']."%'
");
$results = $select->fetchAll();
$datas = array();
foreach($results as $result){
$datas] = array(
'id' => $result->id,
'immat' => $result->immat,
'mva' => $result->mva,
'chassis' => $result->chassis,
'marque' => $result->marque,
'modele' => $result->modele,
'double_clef' => $result->double_clef,
'label' => $result->immat,
'value' => $result->immat
);
}
}
if (!empty($_GET'q'])) {
ob_get_clean();
die(json_encode($datas));
}
/**()
* La sauvegarde
*/
if(isset($_POST'date_arrivee'])){
checkCsrf();
$agence_id = $db->quote($_POST'agence_id']);
$date_arrivee = $db->quote($_POST'date_arrivee']);
if (isset($_POST'double_clef'])) {
$double_clef = 1;
}else{
$double_clef = 0;
}
if (isset($_POST'carnet_garantie'])) {
$carnet_garantie = 1;
}else{
$carnet_garantie = 0;
}
if (isset($_POST'carte_sd'])) {
$carte_sd = 1;
}else{
$carte_sd = 0;
}
if (isset($_POST'telecommande'])) {
$telecommande = 1;
}else{
$telecommande = 0;
}
$comment = $db->quote($_POST'comments']);
/**
* Sauvegarde de l'agence et de la date d'arrivee
*/
if(isset($_POST'id'])){
$id = $db->quote($_POST'id']);
$db->query("UPDATE vehicules SET agence_id=$agence_id, comments=$comment, date_arrivee=$date_arrivee, double_clef = $double_clef, updated=NOW() WHERE id=$id");
}
setFlash("La date d'arrivée a bien été mise à jour");
header('Location:arrivees.php');
die();
}
include '../partials/header.php';
?>
<h1>Saisie date arrivée en agence</h1>
<hr>
<form method="post" action="" class="form-horizontal">
<?= input_hidden('id'); ?>
<div class="form-group">
<label class="control-label col-md-2" for="immat">Immatriculation :</label>
<div class="col-md-2">
<?= input('immat'); ?>
</div>
<label class="control-label col-md-2" for="mva">Mva :</label>
<div class="col-md-2">
<?= input_read('mva'); ?>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="marque">Marque :</label>
<div class="col-md-2">
<?= input_read('marque'); ?>
</div>
<label class="control-label col-md-2" for="double_clef">Double clef :</label>
<div class="col-md-2">
<?= input_read('double_clef'); ?>
</div>
<label class="control-label col-md-2" for="modele">Modèle :</label>
<div class="col-md-2">
<?= input_read('modele'); ?>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="agence_id">Agence :</label>
<div class="col-md-2">
<?php if($Auth->user('level') > 1): ?>
<?= select('agence_id', $agences_list); ?>
<?php else: ?>
<input type="hidden" class="form-control" name="agence_id" value=<?= $Auth->user("idstation"); ?>>
<input type="text" value=<?= $Auth->user("agence"); ?> class="form-control" readonly />
<?php endif;?>
</div>
<label class="control-label col-md-2" for="date_arrivee">Date Arrivée :</label>
<div class="col-md-2">
<input type="text" name="date_arrivee" id="datepicker" value="" class="form-control" />
</div>
</div>
<div class="form-group">
<div class="checkbox ">
<label class="col-md-3 col-md-offset-2" for="double_clef">
<?= checkbox('double_clef'); ?>Double clefs
</label>
<label class="col-md-3">
<input type="checkbox" name="carnet_garantie"/>Carnet de Garantie
</label>
</div>
<div class="checkbox">
<label class="col-md-3 col-md-offset-2">
<input type="checkbox" name="carte_sd"/>Carte SD
</label>
<label class="col-md-3">
<input type="checkbox" name="telecommande"/>Télécommande
</label>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="comments">Commentaires :</label>
<div class="col-sm-6">
<?= textarea('comments'); ?>
</div>
</div>
<?= csrfInput(); ?>
<div class="col-md-8">
<button type="submit" class="btn btn-primary right">Valider</button>
</div>
</form>
</div>
</div>
<?php include '../lib/debug.php'; ?>
<script>
$("#immat").autocomplete({
minLength: 1,
source: function(request, response) {
$.ajax({// call AJAX
//url: 'immat.php',
type: "GET",
dataType: 'json',
data: 'q=' + request.term, // défini le terme à rechercher
async: true,
cache: true,
success: function(ac_data) {
response(ac_data); // On va ajouter le résultat au tableau des résultats d'Autocomplete
},
error: function(msg) {
alert('Une erreur est survenue.');
}
});
},
select: function(event, ui) { // Assigniation de la valeur des champs au select
$('#immat').val(ui.item.immat);
$('#mva').val(ui.item.mva);
$('#marque').val(ui.item.marque);
$('#modele').val(ui.item.modele);
$('#double_clef').val(ui.item.double_clef);
$('#id').val(ui.item.id);
}
});
</script>
si quelqu'un peux y jeter un oeil.
SI je comprends bien, en prenant l'exemple double clé, depuis ta bdd, tu stockes la valeur 1 ou 0 dans la variable $datas'double_clef'].
dans ce cas tu peux faire la fonction suivante:
function checkbox($id, $checked){
$value = isset($_POST->$id) ? $_POST->$id : '';
$inputChecked = $checked ? ' checked' : '';
return "<input type='checkbox' id='$id' name='$id' value='$value' $inputChecked>";
}
Et l'appeler comme cela:
<?= checkbox('double_clef', $datas'double_clef']); ?>
Et puis bon ben pour info, data ne prend jamais de s a la fin puisque c'est déjà la forme au pluriel. La forme au singulier est datum, qui n'est pratiquement jamais utilisée d'ailleurs.
Re Vallyan,
J'ai utiliser ton code et j'ai ce message d'erreur:
Undefined variable: data in /var/www/local.dev/basevl/flotte/arrivees.php on line 134
en fait ce que je fait c est que j'utilise autocomplete sur le champ "immat" et ensuite je rempli automatiquement les differents champs de mon formulaire (voir en bas du fichier la partie Js) avec les donnees deja rentrees dans la base ensuite je n ai plus qu'a ajouter la "date d'arrivee" et ensuite je valide pour mettre a jour ma table avec le champ "date", quand je passe un input text sur le champ "double_clef" cela me met bien 1 ou 0 en fonction des donnees de la base mais dès qu'il s'agit de le passer en checkbox là rien ne fonctionne.
voila merci de ton aide.
Gilles
Ah, donc c'est en JS que tu veux cocher automatiquement ta checkbox, c'est pas en php.
ta variable ui.item.double_clef contient 1 ou 0?
dans ce cas, dans le JS:
$('#double_clef').prop('checked', ui.item.double_clef);
// a la place de :
$('#double_clef').val(ui.item.double_clef);
Bonjour Vallyan,
impec ca fonctionne maintenant j ai plus qu'a faite une petite condition pour que lors que c est 0 la coche ne s'affiche pas et qu'elle s'affiche quand c est 1.
merci pour l'aide que tu m'a apporter
Gilles
Ben normalement il n'y a pas besoin avec le bout de code que je t'ai donné.
$('#double_clef').prop('checked', true); // -> coche
$('#double_clef').prop('checked', false); // -> décoche
or 0 = false et 1 = true, donc normalement pas besoin de condition
Re,
moi que ce soit a 1 ou a 0 ca reste coché tout le temps pourtant dans la base c est soit 1 ou 0
en plus le pire c est que cela ne fonctionne pas sur double_clef mais sur toutes mes autre checkbox ca marche!!!!
la je ne pige pas
Re Vallyan,
j ai passer en revue le code et j'ai trouver mon erreur je mettais 2 fois checked dans le premier checkbox maintenant cela fonctionne parfaitement.
encore un grand merci pour ton aide.
Bonne journée
Gilles