Bienvenue, Invité
Nom d'utilisateur : Mot de passe : Se souvenir de moi

SUJET : Liste déroulante dont les choix se remplissent avec les réponses

Liste déroulante dont les choix se remplissent avec les réponses il y a 1 an 3 semaines #98718

  • elitim
  • Portrait de elitim
Bonjour à tous..Je cherche à faire une liste de choix, avec un choix "autre". Une fois saisi et envoyé, la liste de choix contiendra ce nouveau choix, etc...

De ce fait, la liste de choix s'auto-remplira avec tous les choix possibles

D'après ce que je comprends, il faut faire un sql sur la base de données qui contient la liste des choix, et un rafraichissement, pour réinjecter les résultats...

Heu, on fait ça comment ???
L'administrateur a désactivé l'accès en écriture pour le public.

Liste déroulante dont les choix se remplissent avec les réponses il y a 1 an 3 semaines #98789

  • DenisChenu
  • Portrait de DenisChenu
  • Hors ligne
  • Moderator Lime
  • Messages : 6272
  • Remerciements reçus 800
  • Karma: 240
Salut,

Ce n'est pas trivial ... et demande un temps de développements.

Sinon: je déplace ton message dans la partie FR ...

Denis
L'administrateur a désactivé l'accès en écriture pour le public.

Liste déroulante dont les choix se remplissent avec les réponses il y a 1 an 2 semaines #98956

  • elitim
  • Portrait de elitim
Bon, je me suis plongé un peu plus dans le problème et voilà où j'en suis. Limesurvey collecte les choix des listes déroulantes dans la table ANSWERS. les choix "autres" des listes déroulantes sont dans la table du questionnaire en cours, sous la forme {SGA}other

J'ai donc crée une page php avec une simple connection sql pour injecter dans la table answer les réponses autres de la liste déroulante..Et ça marche !

Encore quelques petites corrections pour arriver à faire une mise à jour totalement automatique..mon code :

<?php

// 1. Create a database connection
$connection = mysqli_connect(localhost,"utilisateur","mdp");
if (!$connection) {
die("Database connection failed: " . mysqli_error());
}

// 2. Select a database to use
$db_select = mysqli_select_db($connection, "_limebase");
if (!$db_select) {
die("Database selection failed: " . mysqli_error());
}


// on crée la requête SQL
$sql = 'SELECT 716469X1X4other FROM ls_survey_716469';

// on envoie la requête
$req = mysqli_query($connection,$sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_connect_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysqli_fetch_assoc($req))
{
// on affiche les informations de l'enregistrement en cours(juste pour tester)

echo ' <i>intervenants : '.$data.'</i><br>';

// on copie les résultats dans la table answer
$data = mysqli_real_escape_string($connection,$data);

mysqli_query($connection,"INSERT INTO ls_answers (qid,code,answer,sortorder) VALUES (4,4,'$data',4)");

//il faut que j'automatise l'insertion de qid, code et sortorder. J'ai mis manuellement ces données
}



// on ferme la connexion à mysql
//mysqli_close();
?>
Dernière édition: il y a 1 an 2 semaines par elitim.
L'administrateur a désactivé l'accès en écriture pour le public.

Liste déroulante dont les choix se remplissent avec les réponses il y a 1 an 2 semaines #98977

  • DenisChenu
  • Portrait de DenisChenu
  • Hors ligne
  • Moderator Lime
  • Messages : 6272
  • Remerciements reçus 800
  • Karma: 240
Salut,

Il faut qe tu udate les code en fonction surtout ...
Si les codes sont les mêmes alors tu ne pourras pas avoir des réponses différentes

A la riguqeur un
$sql = 'COUNT(*) FROM ls_survey_716469 WHERE 716469X1X4other!=''';

Pour le décompte (c'est l'idée : le SQL est boggué)

Sinon, je préfère utiliser un autocomplete pour ce genre de problème : une seule question de type texte, j'ajoute manuelle mes réponses principale dans le tableau de retour avant, j'interroge ma base avec un tri par nombre (distinct), je fait un array_unique pour supprimer les doublons et je retourne un json dans l'autocomplete.

Denis
L'administrateur a désactivé l'accès en écriture pour le public.
Modérateurs: Nickko
Temps de génération de la page : 0.134 secondes
Donation Image