Submitted by winz on
Bonjour,
J'ai créé un champ de type text - Check boxes/radio buttons - Multiple values, et je souhaite proposer un sélection de titre (title) à cocher.
Si je tape dans la dans zone code php en dessous de "Allowed values list" :
$valeurs = array('titre1' => 'mon premier title', 'titre2' => 'mon deuxième title');
return $valeurs ;
Aucun problème.
Maintenant supposons que je veuille récupérer tous les valeurs de "title" associé à un type de contenu précis (qu'on appelera "MonType2Contenu" pour l'exemple). Le champ "title" étant générique à tous les type de contenu et donc stocké dans la table "node", le code suivant me permet de récupérer l'ensemble des "titres" qui m'intéresse (tester dierctement sur ma base mysql):
SELECT * FROM (node) WHERE (type='MonType2Contenu') ORDER BY title
Comment maintenant créer autant de check box que de titre disponible ?
J'ai essayé ça:
$valeurs = array();
$res = db_query('SELECT * FROM (node) WHERE (type='MonType2Contenu') ORDER BY title');
while ($o = db_fetch_array($res)) {
$valeurs[$o['title']] = $o['title'];
}
return $valeurs;
mais aucune checkbox n'est crée ... si quelqu'un a une idée ...
Merci d'avance
Essaie un print_r($valeurs);
Permalien Soumis par tostinni le 25 Octobre, 2007 - 23:33
Essaie un print_r($valeurs); pour voir si ton tableau est cree correctement
Bonjour, merci pour cette
Permalien Soumis par winz le 26 Octobre, 2007 - 09:47
Bonjour,
merci pour cette contribution, malheureusement "print_r($valeurs)"; ne change rien.
j'ai modifié le code de mon premier poste, en fonction du code trouvé dans ce lien :
http://drupal.org/node/154822
mais pour moi ça ne fonctionne pas
d'autre idées ?
Le print_r te renvois un
Permalien Soumis par tostinni le 26 Octobre, 2007 - 18:38
Le print_r te renvois un tableau correctement forme ?
Bonjour, Non le tableau est
Permalien Soumis par winz le 29 Octobre, 2007 - 10:23
Bonjour,
Non le tableau est vide, c'est bien ça le problème. Du coup J'ai listé mes valeurs "Allowed" dans la zone prévu à cet effet... histoire de pouvoir avancer (solution temporaire)
J'ai par ailleurs quelques soucis de mémoire php limite qui m'empêche d'avancer aussi rapidement que je le souhaiterai, donc je prends les problèmes les uns après les autres et je m'excuse d'avance si du temps s'écoule entre mes réponses ... la solution à ce problème de création de checkboxes dynamique reste d'actualité. Si quelqu'un peut donner un exemple de code php qui fonctionne ?
Merci d'avance
Vincent
Une question toute bete,
Permalien Soumis par tostinni le 29 Octobre, 2007 - 16:32
Une question toute bete, mais ta requete te renvois bien qqch ? (sous phpMyAdmin par ex) ?
oui, je l'ai précisé dans
Permalien Soumis par winz le 29 Octobre, 2007 - 17:13
oui, je l'ai précisé dans mon premier post, sous phpmyadmin, la requête me retourne un nombre d'enregistrement tout a fait correct (cad <> de nul):
le code suivant me permet de récupérer l'ensemble des "titres" qui m'intéresse (tester dierctement sur ma base mysql):
SELECT * FROM (node) WHERE (type='MonType2Contenu') ORDER BY title
Je pense que c'est mon code php, pour remplir le tableau avec les résultats de la requête, qui coince ...
merci pour l'aide
Quelques remarques (la
Permalien Soumis par drupalfrance le 30 Octobre, 2007 - 21:28
Quelques remarques (la solution s'y trouve peut-être) :
Dans ta requête, tu as mis des parenthèses autour du nom de la table "node", alors que c'est des accolades.
Ca serait mieux d'utiliser autre chose que les titres eux-mêmes comme clés de ton tableau.
Tu pourrais rendre ton SQL plus spécifique (a priori, tu n'as pas besoin de tous les champs de la table node).
Au final, ça donne :
ok merci, je test ça , et
Permalien Soumis par winz le 31 Octobre, 2007 - 09:11
ok merci,
je test ça , et je vous dis quoi rapidement...
Effectivement j'avais pensé à pendre le "nid" en "value" et le "title" en "label", le problème c'est que les controles de checkboxes sont de type "text" donc je suis pas sur qu'ils acceptent une valeur numérique.
En tout cas merci,
Vincent
Yep, mais des valeurs
Permalien Soumis par drupalfrance le 31 Octobre, 2007 - 09:14
Yep, mais des valeurs numériques peuvent aussi être typées comme du texte (et par derrière, enregistrées en base dans des champs texte). C'est l'inverse qui poserait problème, mais dans ton cas, tu n'auras pas de souci à cause de ça.
Avec beaucoup de retard,
Permalien Soumis par winz le 13 Novembre, 2007 - 10:21
Avec beaucoup de retard, mais mieux vaut tard que jamais...
Merci ça fonctionne maintenant.
Je récupère les valeurs de 'nid' et affiche les 'title' au niveaux de chaque checkboxe.
J'avais effectivement une coquille dans le bout de code php.
Vincent
Bonjour. Après plusieurs
Permalien Soumis par allizou le 10 Février, 2012 - 15:09
Bonjour.
Après plusieurs heures de recherche, je relance ce post en espérant trouver une solution.
J'ai besoin de récupérer des valeurs en DB pour créer mes radiobutton.
J'ai donc voulu tenter la solution avec un db_fetch_array() sauf qu'avec Drupal 7, cette fonction n'est plus disponible...
J'aimerais donc trouver une solution pour contourner mon problème...
<?php
$result = $query->execute(); // Cette requête marche.
$opt = array(); // $opt doit récupérer $result sous forme de tableau, mon problème :( $form['choice'] = array(
'#type' => 'radios',
'#title' => t('Select type of competition'),
'#options' => $opt,
);
?>
Merci pour votre aide!
Up ?
Permalien Soumis par allizou le 10 Février, 2012 - 15:20
Up?
A priori c’est via
Permalien Soumis par vincent59 le 10 Février, 2012 - 15:48
A priori c'est via db_query.
Un exemple ici : http://api.drupal.org/api/drupal/includes%21database%21database.inc/func...
Super, ça marche
Permalien Soumis par allizou le 27 Février, 2012 - 11:07
Super, ça marche parfaitement
Merci encore!