Créer un menu qui liste les noms des champs d'une table mysql

Créer un menu qui liste les noms des champs d'une table mysql - Shell/Batch - Programmation

Marsh Posté le 28-04-2013 à 12:41:23    

Bonjour a tous,
 
j'ai un petit problème dans un script bash, je ne sais pas comment faire ?
Le but est de récupérer la liste des champs de ma table mysql et de l'afficher dans un menu en "dialogue" afin de sélectionner le champs à modifier.
j'ai tenté ceci :  
 
Script

Code :
  1. ar=($(echo "DESCRIBE $nom_table" | mysql -p$pass_bd -u root $nom_bd | cut -f1));
  2. echo "Veuillez indiquer votre choix :"
  3.         select ntit in  ${ar[@]} 
  4.             do 
  5. for l in $REPLY; # $REPLAY contains numbers
  6.                     do
  7.                       if [ $l -lt $cnt ]
  8.                         then
  9.                             ((var=$l-1));
  10.                             open ${ar[$var]};
  11.                         else
  12.                             exit
  13.                       fi
  14.                     done
  15.             done


 
Résultat

Code :
  1. laurent@PC-ubuntu:~$ /home/laurent/bash/BDD-Mysql/bdd-table.sh
  2. Veuillez indiquer votre choix :
  3. 1) Field                  12) type
  4. 2) id                     13) macro
  5. 3) nom_module             14) emplacement
  6. 4) code_maison_unite      15) concerne
  7. 5) code_maison            16) puissance
  8. 6) code_unite             17) name_on
  9. 7) nom_commande_On        18) input_name_on
  10. 8) nom_commande_Off       19) name_off
  11. 9) variateur_plus         20) input_name_off
  12. 10) variateur_moins        21) nom_groupe
  13. 11) variateur_automatique
  14. #? 3
  15. /home/laurent/bash/BDD-Mysql/bdd-table.sh: ligne 226 : [: 3 : opérateur unaire attendu
  16. laurent@PC-ubuntu:~$


 
La ligne 226 est :

Code :
  1. if [ $l -lt $cnt ]


 
Comment puis je faire pour qu'il sache que lorsque l'utilisateur tape 3 cela correspond à nom_module ?
Afin d'envoyer "nom_module"  dans la variable $valeur2
 
Ensuite je modifie le champs de ma table comme ceci.

Code :
  1. mysql_cmd="mysql -D $nom_bd -u$login_db -p$pass_bd"
  2.     $mysql_cmd -e "UPDATE $nom_table SET colonne1='$valeur2' WHERE id=$id "


 
Aidez moi, svp .
Merci.

Reply

Marsh Posté le 28-04-2013 à 12:41:23   

Reply

Marsh Posté le 01-05-2013 à 13:58:29    

Stocke dans une variable de type tableau l'association n° du menu et le nom du champ au moment où tu fais l'affichage du menu.
 
Edit : autre solution : après la saisie du n° de menu, tu refais une requête DESCRIBE et tu reboucles sur le résultat et tu t'arrêtes quand tu es au n° du menu saisi et là, tu fais e traitement approprié.


Message édité par rufo le 01-05-2013 à 14:00:12

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed