Page 1 sur 1

Pré remplir bouton radio à partir d'une base de donnée

Posté : 12 déc. 2012, 16:43
par nico_loin
Bonjour,

J'ai un questionnaire qui est déjà codé et qui permet aux membres de donner une note allant de 1 à 10 sur un critère en cliquant sur des boutons radio. Tout cela est envoyé à la base de donnée et fonctionne très bien. Dans ma base de donnée, j'ai un champs note1, note2 etc... et les notes varient donc de 0 à 10.
Ce que j'aimerais faire, c'est que lorsqu'un utilisateur a déjà rempli son questionnaire et qu'il veut revenir dessus, les boutons radios qu'il a déjà coché soient déjà cochés et qu'il puisse seulement les modifier (grace a un UPDATE).

J'ai essayé plusieurs façon mais j'y arrive pas...

Merci de votre aide.

Re: Pré remplir bouton radio à partir d'une base de donnée

Posté : 12 déc. 2012, 16:50
par piotrowski-s
c'est simple dis moi d'abord comment est enregistré la donné dans ta base de donnée sous quelle forme ?

qu'est-ce qu'il y a quand le bouton est coché qu'est-ce qu'il y a quand il n'est pas coché?

Re: Pré remplir bouton radio à partir d'une base de donnée

Posté : 12 déc. 2012, 16:54
par nico_loin
Dans ma table j'ai un champ note1, un autre note2 etc, et pour une ligne dans le champ note1 j'ai par exemple 3 et pour note2 j'ai 7.
La table se remplit lorsque la personne coche les notes, et envoi le formulaire, et s'il ne clique pas sur un des boutons, ça met une erreur, la personne est obligée de cocher une note pour chaque question.

Re: Pré remplir bouton radio à partir d'une base de donnée

Posté : 12 déc. 2012, 17:02
par piotrowski-s
y'a plusieurs solution soit tu met un attribut required="true" sur tes boutons radios, ainsi pour chaque groupe il sera obligé de cliquer sur une valeur sinon le formulaire ne sera pas soumis.

Sinon avant chaque bouton tu mets une valeur par défaut (0 je présume, c'est à dire la note la plus basse), mais dans un input de type hidden.

Par exemple si tu as un bouton avec
<input type="radio" name="note" value="1">
<input type="radio" name="note" value="2">
<input type="radio" name="note" value="3">
<input type="radio" name="note" value="4">
<input type="radio" name="note" value="5">
tu rajoute un input de type hidden qui a le même nom que ton groupe d'options,
ainsi si rien n'est cliqué il y aura quand même cette valeur qui sera envoyée dans la base de donnée

sur cet exemple, par défaut ce serait
<input type="hidden" name="note" value="0">
ensuite pour récupérer l'information de la base de donnée je présume que tu sais comment faire ?

Donc pour recocher le bouton de radio concerné ce que tu dois faire une fois que tu as ta variable note c'est rajouté
un petit élément dans chaque bouton.
<?php if($variable_note==5) { echo 'checked="checked"' ; } ?>
donc pour chaque bouton ça te donnerais un truc du genre:
<input type="radio" name="note" value="1" <?php if($variable_note==1) { echo 'checked="checked"' ; } ?>>
<input type="radio" name="note" value="2" <?php if($variable_note==2) { echo 'checked="checked"' ; } ?>>
<input type="radio" name="note" value="3" <?php if($variable_note==3) { echo 'checked="checked"' ; } ?>>
<input type="radio" name="note" value="4" <?php if($variable_note==4) { echo 'checked="checked"' ; } ?>>
<input type="radio" name="note" value="5" <?php if($variable_note==5) { echo 'checked="checked"' ; } ?>>
voila pour cela donc en revanche pour le input de type hidden, c'est pas la peine de le rajouter vu que c'est un champs caché.

Autre astuce pour finir, le input de type hidden tu peux et surtout tu devras l'utiliser dans les cases à cocher.

Par exemple si tu as une case qui contient une information tu devra toujours renseigner dans un input de type hidden l'information contraire
comme cela si le formulaire est soumis et que rien n'est coché tu n'as pas de messages d'erreurs,

tu peux toujours utiliser les attributs required="true" en HTML5 mais je recommande de faire avec l'input de type hidden.

Re: Pré remplir bouton radio à partir d'une base de donnée

Posté : 12 déc. 2012, 17:07
par nico_loin
Ok super merci de ton aide ! Ca n'a pas l'air dur enfait, je vais essayer ça direct.

Re: Pré remplir bouton radio à partir d'une base de donnée

Posté : 12 déc. 2012, 17:12
par piotrowski-s
n'hésite pas si tu es en galère sur un truc, normalement ça devrait aller ;)

Re: Pré remplir bouton radio à partir d'une base de donnée

Posté : 12 déc. 2012, 17:22
par nico_loin
C'est bon ça marche merci !
J'ai une autre question, pour executer une requete sql qui me retourne qu'un seul champ, le mieux c'est d'utiliser quel fonction mysql ?
Par exemple pour la note, ma requete me retourne qu'une seule valeur genre 4. Pour ca je met ma requete SQL dans une variable, puis dans une nouvelle variable je fais un mysql_query dessus, puis ici j'ai pris une 3e variable avec un mysql_fetch_row, ce qui fait que pour afficher mon résultat je dois mettre un indice [0] pour afficher le résultat. Je sais pas si je suis clair, mais je voulais savoir si y'a plus simple ou c'est comme ça qu'il faut faire ?

Re: [RESOLU] Pré remplir bouton radio à partir d'une base de

Posté : 12 déc. 2012, 17:28
par piotrowski-s
tu fais un truc du genre
<?php
$sql="SELECT `note` FROM `ta_table`";
$result=mysql_query($sql);
$data = mysql_fetch_assoc($result) ; 

//Ensuite tu as ta variable

echo $data['note'] ; 
?>

Re: [RESOLU] Pré remplir bouton radio à partir d'une base de

Posté : 12 déc. 2012, 17:31
par nico_loin
Ok je vois, ça change pas grand chose au final

Re: [RESOLU] Pré remplir bouton radio à partir d'une base de

Posté : 12 déc. 2012, 17:45
par piotrowski-s
ça c'est le système procédural, tu as aussi en POO mais c'est un autre système de pensée.

Moi par exemple j'ai une classe et j'ai juste à faire cela:
<?php
$gestionnaire = new Gestionnaire();
$gestionnaire->readObject(array('IdGestionnaire' => '1'));
?>
//puis n'importe ou je peux afficher mes variables (en fait ce sont des objets)

<?php echo $gestionnaire->nom ; ?>
//toutes mes requêtes sont stockées dans des classes. et j'ai juste à les inclures après je fais appel à diverses méthodes
<?php 
$gestionnaire->Setnom ; // (Enregistre une info)
$gestionnaire->Updatenom ; //(fait un update)

?>
et plein d'autre, l'avantage c'est que c'est pratique et que ça évite d'avoir une usine à gaz avec des requêtes partout.

Mais si tu connais pas la POO ça te sera difficile.

Re: [RESOLU] Pré remplir bouton radio à partir d'une base de

Posté : 12 déc. 2012, 17:56
par nico_loin
Oui c'est clair qu'en POO c'est plus organisé et plus simple à comprendre. Je suis en BTS informatique 2e année, j'en ai déjà fait un peu de la POO avec un gros projet dessus. Là je suis actuellement en stage et j'ai des contraintes je peux pas utiliser la POO c'est dommage...

Re: [RESOLU] Pré remplir bouton radio à partir d'une base de

Posté : 12 déc. 2012, 18:00
par piotrowski-s
moi je suis pas en BTS enfin jai une licence de droit mais je me retrouve à coder ^^ je suis aussi sur un gros projet et je dois avouer que c'est assez dur aussi ^^

Re: [RESOLU] Pré remplir bouton radio à partir d'une base de

Posté : 12 déc. 2012, 18:03
par nico_loin
C'est clair que c'est pas évident au début mais une fois qu'on a compris le principe on y voit les avantages ^^

Re: [RESOLU] Pré remplir bouton radio à partir d'une base de

Posté : 12 déc. 2012, 18:16
par piotrowski-s
oh, oui, surtout en terme de maintenabilité, quand tu fais une usine à gaz, tu ne sais plus comment t'y retrouver après.

Moi je met tout dans des classes et puis je sépare affichage html et traitement php.

Dans le fichier html je met l'affichage avec mes noms de variables.

Et dans le fichier .php cela ressemble à cela:
<?php  
// Inclusion des classes nécessaires
require_once 'class_php/_config.inc.php' ;
require_once 'class_php/Database.class.php' ;

// Connexion à la base de données
$db = new Database();

// Inclusion des classes 
require_once 'class_php/gestionnaire.class.php';
require_once 'class_php/agenda.class.php';
// Instanciations des objets
$gestionnaire = new Gestionnaire();
$gestionnaire->readObject(array('IdGestionnaire' => '1'));

$agenda = Agenda::readarray();


include 'pages_html/accueil.html';



?>

avant j'avais de cela partout, et mêm dans le HTML, c'était pourri
<?php
$sql="SELECT `note` FROM `ta_table`";
$result=mysql_query($sql);
$data = mysql_fetch_assoc($result) ; 
?>

Re: [RESOLU] Pré remplir bouton radio à partir d'une base de donnée

Posté : 24 déc. 2016, 00:05
par Antoinedh
Je vous le déterre juste pour un merci, je cherchais la ligne
<?php if($variable_note==5) { echo 'checked="checked"' ; } ?>
c'est tout con j'y avais pas pensé.

Merci !