Je souhaite avoir une liste lier sans Bdd.
Je m'explique, je compte faire un système d'annonce sur mon site, et pour faciliter aux utilisateurs leur choix, et éviter un tas de boutons, j'ai penser faire un pré formulaire avec une liste liée.
Dans le premier il y a je vend, j’achète, et dans le deuxième qui apparait en fonction du choix, la liste des options disponible dans la catégorie souhaité.
J'ai déjà utiliser un système simple mais j'ai un soucis dans l'affichage. En effet, il est conçu pour fonctionner avec une Bdd, et dans mon cas j'en est pas besoin étant donnée que j'ai qu'une dizaine d'options en tout et pour tout.
(Je me souviens en avoir déjà fait une, mais je ne retrouve pas les sources)
Voici les scripts actuellement:
index.php
<select id="region" name="select_id" size="2" class="ajaxList" data-url="option.php" data-target="option">
<?php
$count=count($select['id']);
for($i=0;$i<count($select['id']);$i++):
$id = $select['id'][$i];
$name = $select['name'][$i];
?>
<option value="<?= $id ?>" <?= $region_id == $id ? ' selected' : ''; ?>>
<?= $name; ?>
</option>
<?php
endfor;
?>
</select>
option.php (il faut que ça retourne que les options pourtant le même id, que celui choissit)
<?php
$option = array(
'error' => false,
'results' => array(
array(
'id' => 1,
'name' => 'Voiture 1'
),
array(
'id' => 2,
'name' => 'Voiture 2'
),
array(
'id' => 22,
'name' => 'Voiture 22'
)
)
);
die(json_encode($option));
?>
add.js (à voir si il faut pas le modifier, sans trop le toucher, car il se peux qu’ailleurs j'ai besoin de lister des données de Bdd)[javascript]
(function($){
$('.ajaxList').change(function(event){
var select = $(this);
var id = '#'+select.data('target');
$.get(select.data('url'), {id:select.val()}, function(data){
if(data.error){
alert(data.error);
}else{
$(id).parents('.control-group').show();
var target = $(id).get(0);
target.options.length = 0;
for(var i in data.results){
var result = data.results;
target.options = new Option(result.name, result.id, false, false);
}
}
},'json');
}).each(function(){
var select = $(this);
var target = $('#'+select.data('target'));
target.parents('.control-group').hide();
});
})(jQuery);
[/javascript]
Si jamais vous avez un autre système je prend aussi.
Mais si je peux optimiser celui ci, ça m'arrangerais.
Je vous remercie
Cordialement