Bonjour,
Voila je rencontre un petit problème avec mon code.
J'ai pris comme modele pour debuter, le code dans la formation POO en PHP, que j'ai adapter pour voir ce que cela donner sur la gestion de fichier.
On pourrait dire une interface pour gerer des fichiers, dossiers,multimedia,etc...
Pour le FrontEnd, je n'ai pas de soucis mais pour l'administration ou j'essaie desesperement de recuperer les group d'un fichier.
Sur ma BDD, j'ai les tables principales, files,groups et files_groups. Avec biensur les PK, FK et indexes, tout est ok sur ce niveau.
Donc j'ai ce code qui permet de generer le select avec chosen:
public function selectChosen($name, $label, $options,$grid){
$label = "<label class='control-label col-md-$grid' for='$name'>$label</label>";
$input = '<div class="col-md-'.$this->gridInput($grid).'">';
$input .= '<select multiple id="'.$name.'" class="select-chosen form-control" name="' . $name . '" data-placeholder="Choose.." style="width: 250px;">';
$input .= '<option value=""></option>';
foreach($options as $k => $v){
$attributes = '';
if($k == $this->getValue($name)){
$attributes = 'selected';
}
$input .= "<option value='$k' $attributes>$v</option>";
}
$input .= '</select></div>';
//return $this->surround($label . $input);
}
requete SQL:
public function findWithGroups($id){
return $this->query("
SELECT f.file_id,f.title,f.description,f.language_id,
f.extra_id, g.name as groups
FROM file f
LEFT JOIN file_group fg ON fg.file_id = f.file_id
LEFT JOIN group g ON fg.group_id = g.group_id
WHERE f.file_id = ?", [$id], true);
}
Le code on va direr qu'il fonctionne bien et me génére bien le select et les options, mais la selection automatique avec "selected" ne marche pas meme avec une category(ou group) de sorti.
Le plugin ajoute automatiquement les options selectionnées.
Pas d'erreur mais pas de selection auto sur les options.
Ou bien la condition
if($k == $this->getValue($name)){
$attributes = 'selected';
$val = $k;
}
ne donne pas le resultat.
Un var_dump(); me donne bien le group attendu mais il n'est pas selectionné.
Ou serait-ce ma requete qui en est la cause ?
Bonjour,
Apres plusieurs decomposition du code voici la solution que j'ai pu trouver :
1 - Il ne selectionner pas la valeur car, la comparaison n'etait pas la bonne => ici c'est $v qu'on voulait comparer.
2 - Pour qu'il selectionne tout les groups liés au fichier avec une requete en GROUP_CONCAT, il fallait faire un explode des valeurs =>
$grps = explode('-',$this->getValue($name);
Et au lieu de la condition normale on fait un test de vars existant dans un tableau =>
if(in_array($v,$grps){
#execute something...
}
Et la ça fonctionne comme du tonnere.
Merci d'avoir essayé @Lartak
Bonjour.
Si nous savions à quoi correspond la variable $options
et surtout ce quelle contient, peut-être que nous pourrons t'aider.
Bonjour,
La variable $option contient le resultat d'une requete qui recupere les groupes dans ma table.
$grp = app::getInstance()->getTable('group')->all();
$option accueil $grp dans la function