Zenity - Case =c3=a0 cocher et r=c3=a9cup=c3=a9ration de variable.

Le
G2PC
Bonjour, voilà une source " simple " dans le pastebin suivant.
Enregistrer le dans un fichier test.sh
Lancer avec sh test.sh
Zenity doit être installé.

https://pastebin.com/jrMnEJxs


J'ai le problème suivant :

Si je coche une seule case, alors, la valeur cochée est affichée
plusieurs fois dans le retour, lorsque j'écris les variables.
Si je coche deux cases, alors, seul les 2 valeurs cochées sont affichées
( comportement correct attendu ).

J'aimerais enfin, dans le meilleur des cas, récupérer les variables,
pour faire un INPUT vers une base de données.

Merci de vos avis.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
G2PC
Le #26468234
Le 19/03/2018 à 12:02, G2PC a écrit :
Bonjour, voilà une source " simple " dans le pastebin suivant.
Enregistrer le dans un fichier test.sh
Lancer avec sh test.sh
Zenity doit être installé.
https://pastebin.com/jrMnEJxs
J'ai le problème suivant :
Si je coche une seule case, alors, la valeur cochée est affichée
plusieurs fois dans le retour, lorsque j'écris les variables.
Si je coche deux cases, alors, seul les 2 valeurs cochées sont affichées
( comportement correct attendu ).
J'aimerais enfin, dans le meilleur des cas, récupérer les variables,
pour faire un INPUT vers une base de données.
Merci de vos avis.

Je reviens à un autre fonctionnement que j'avais déjà vu précédemment.
Peut être que je dois plutôt faire comme cela :
pays=$(zenity
   --list
   --checklist
   --width="360"
   --height="420"
   --title="Raison sociale de l'entreprise."
   --text "Raison sociale de l'entreprise."
   --separator=":"
   --column "Sélectionner"
   --column "Pays"
   FALSE TP_Allemagne
   FALSE TP_Autriche
   FALSE TP_Angleterre
   FALSE TP_Belgique
   FALSE TP_Bulgarie
   FALSE TP_Chypre
   FALSE TP_Croatie
   FALSE TP_Danemark
   FALSE TP_Ecosse
   FALSE TP_Espagne
   FALSE TP_Estonie
   FALSE TP_Finlande
   FALSE TP_France
   FALSE TP_Grece
   FALSE TP_Hongrie
   FALSE TP_Irlande
   FALSE TP_Irlande_de_Nord
   FALSE TP_Italie
   FALSE TP_Lettonie
   FALSE TP_Lituanie
   FALSE TP_Luxembourg
   FALSE TP_Malte
   FALSE TP_PaysBas
   FALSE TP_Pays_de_Galles
   FALSE TP_Pologne
   FALSE TP_Portugal
   FALSE TP_Republique_Tcheque
   FALSE TP_Roumanie
   FALSE TP_Slovaquie
   FALSE TP_Slovenie
   FALSE TP_Suede
   FALSE TP_Suisse
   FALSE TP_OTHER)
# On récupère les valeurs cochées dans la liste de choix des pays :
echo $pays

Ici, plus de redondance dans la liste des valeurs cochées.
Si je coche un seul choix, un seul choix est affiché en sortie.
Si je coche plusieurs choix, plusieurs choix sont affichés en sortie. (
TP_Allemagne:TP_Ecosse:TP_France )
Maintenant, comment exploiter la chaîne, pour séparer les valeurs
obtenues, pour les stocker dans plusieurs variables, pour les exploiter
dans une requête SQL ?
G2PC
Le #26468308
Le 19/03/2018 à 12:52, G2PC a écrit :
Le 19/03/2018 à 12:02, G2PC a écrit :
Bonjour, voilà une source " simple " dans le pastebin suivant.
Enregistrer le dans un fichier test.sh
Lancer avec sh test.sh
Zenity doit être installé.
https://pastebin.com/jrMnEJxs
J'ai le problème suivant :
Si je coche une seule case, alors, la valeur cochée est affichée
plusieurs fois dans le retour, lorsque j'écris les variables.
Si je coche deux cases, alors, seul les 2 valeurs cochées sont affichées
( comportement correct attendu ).
J'aimerais enfin, dans le meilleur des cas, récupérer les variables,
pour faire un INPUT vers une base de données.
Merci de vos avis.

Je reviens à un autre fonctionnement que j'avais déjà vu précédemment.
Peut être que je dois plutôt faire comme cela :
pays=$(zenity
   --list
   --checklist
   --width="360"
   --height="420"
   --title="Raison sociale de l'entreprise."
   --text "Raison sociale de l'entreprise."
   --separator=":"
   --column "Sélectionner"
   --column "Pays"
   FALSE TP_Allemagne
   FALSE TP_Autriche
   FALSE TP_Angleterre
   FALSE TP_Belgique
   FALSE TP_Bulgarie
   FALSE TP_Chypre
   FALSE TP_Croatie
   FALSE TP_Danemark
   FALSE TP_Ecosse
   FALSE TP_Espagne
   FALSE TP_Estonie
   FALSE TP_Finlande
   FALSE TP_France
   FALSE TP_Grece
   FALSE TP_Hongrie
   FALSE TP_Irlande
   FALSE TP_Irlande_de_Nord
   FALSE TP_Italie
   FALSE TP_Lettonie
   FALSE TP_Lituanie
   FALSE TP_Luxembourg
   FALSE TP_Malte
   FALSE TP_PaysBas
   FALSE TP_Pays_de_Galles
   FALSE TP_Pologne
   FALSE TP_Portugal
   FALSE TP_Republique_Tcheque
   FALSE TP_Roumanie
   FALSE TP_Slovaquie
   FALSE TP_Slovenie
   FALSE TP_Suede
   FALSE TP_Suisse
   FALSE TP_OTHER)
# On récupère les valeurs cochées dans la liste de choix des pays :
echo $pays

J'avance pour tenter de récupérer les multiples choix cochés.
En sh, j'ai trouvé cela, mais, pas très propre, car, la chaine est
réécrite à chaque recherche de valeur, dans le terminal. ( 33 valeurs de
pays à tester. )
#sh
echo "$pays" | grep TP_Allemagne && echo Allemagne || echo ko
echo "$pays" | grep TP_Angleterre && echo Angleterre || echo ko
Avec Bash, ça correspond parfaitement à mes attentes. Je peux tester une
valeur dans la chaine, je peux faire un echo de la valeur ( ou lancer
une commande SQL je suppose. )
#bash OK
All="TP_Allemagne"
[[ $pays =~ $All ]] && echo Allemagne || echo ko Allemagne
Ang="TP_Angleterre"
[[ $pays =~ $Ang ]] && echo Angleterre || echo ko Angleterre
J'aimerais encore, si possible, avoir l'équivalent, pour shell.
G2PC
Le #26468334
Fin du monologue.
# Tester si les valeurs cochées dans la liste de choix des pays se
retrouvent dans la chaîne de retour :
# sh
echo "$pays" | grep TP_Allemagne && echo OK || echo "Pas OK"
# sh
if echo "$pays" | grep "TP_Allemagne" >/dev/null 2>&1; then echo "OK";
else echo "Pas OK"; fi
# bash
All="TP_Allemagne" [[ $pays =~ $All ]] && echo OK || echo Pas OK
# bash
[[ $(grep "TP_Allemagne" <<<$pays) ]] && echo OK
Publicité
Poster une réponse
Anonyme