Advertisement
Guest User

Untitled

a guest
Jan 12th, 2020
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 13.05 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use v5.10;
  5. use feature qw(say);
  6. use feature qw(switch);
  7. use Term::ANSIScreen qw(cls);
  8. use DBI;
  9. use locale;
  10. use Scalar::Util qw(looks_like_number);
  11. no warnings 'experimental';
  12. use open ':std', ':encoding(cp65001)';  # Encoding used by console
  13. use open IO => ':encoding(cp1252)';
  14.  
  15. #PROGRAM
  16. say cls();
  17. menu();
  18. #PROGRAM
  19.  
  20. sub menu{
  21.    
  22.     say "\nZARZADZANIE BAZA DANYCH";
  23.     say "Wybierz operację";
  24.     say "1.Utworz tabele";
  25.     say "2.Usun tabele";
  26.     say "3.Dodaj dane do tabeli";
  27.     say "4.Wyswietl dane z tabeli";
  28.     say "5.Edytuj dane z tabeli";
  29.     say "6.Usun dane z tabeli";
  30.     say "7.Pokaz tabele z bazy";
  31.     say "0.Koniec\n";
  32.     wybor();
  33.    
  34. }
  35.  
  36. sub menu_tabele{
  37.     my ($cozrobic)=@_;
  38.     my ($opcja)=-1;
  39.     while($opcja!=5){
  40.         say "Wybierz tabele:";
  41.         say "1. Uzytkownik";
  42.         say "2. Produkt";
  43.         say "3. Kategoria";
  44.         say "4. Producent";
  45.         say "5. Koniec";
  46.         print "Wybor: ";
  47.         $opcja=<STDIN>;
  48.         chomp($opcja);
  49.         if(!looks_like_number($opcja)||$opcja>5){
  50.         $opcja=-1;
  51.         print "\nWybierz poprawna numer\n";
  52.         }else{
  53.             if($cozrobic==2){
  54.                 usun_tabele($opcja);<STDIN>;menu();
  55.             }elsif($cozrobic==3){
  56.                 dodaj_rekord($opcja);<STDIN>;menu();
  57.             }elsif($cozrobic==4){
  58.                 zawartosc_tabeli($opcja);<STDIN>;menu();
  59.             }elsif($cozrobic==5){
  60.                 edycja($opcja);<STDIN>;menu();
  61.             }
  62.             elsif($cozrobic==6){
  63.                 usun_rekord($opcja);<STDIN>;menu();
  64.             }
  65.         }
  66.        
  67.        
  68.        
  69.        
  70.     }
  71.    
  72.    
  73. }
  74.  
  75.  
  76.  
  77. sub wybor{
  78.     my $opcja=-1;
  79.     #my $cozrobic=-1;
  80.     while ($opcja!=0){
  81.         print "Wybor: ";
  82.         $opcja=<STDIN>;
  83.         chomp($opcja);
  84.         if(!looks_like_number($opcja)){$opcja=-1;}
  85.         given($opcja){
  86.             when (1) {utworz_tabele();<STDIN>;menu();}
  87.             when (2) {menu_tabele($opcja);<STDIN>;menu();}
  88.             when (3) {menu_tabele($opcja);<STDIN>;menu();}
  89.             when (4) {menu_tabele($opcja);<STDIN>;menu();}
  90.             when (5) {menu_tabele($opcja);<STDIN>;menu();}
  91.             when (6) {menu_tabele($opcja);<STDIN>;menu();}
  92.             when (7) {pokaz_baze();<STDIN>;menu();}
  93.             when (0) {exit(0);say "Poprawnie zakonczono";}
  94.             default {say "Wybierz poprawny numer";}
  95.         }
  96.     }
  97. }
  98.  
  99. sub usun_tabele{
  100.     my ($opcja)=@_;
  101.     my $polaczenie=polacz_z_baza();
  102.     my $SQL="";
  103.     my $CO="";
  104.    
  105.     if($opcja==1){
  106.         my $SQL="Drop table uzytkownik";
  107.         my $CO="UZYTKOWNIK";
  108.     }elsif($opcja==2){
  109.         my $SQL="Drop table produkt";
  110.         my $CO="PRODUKT";
  111.     }elsif($opcja==3){
  112.         my $SQL="Drop table kategoria";
  113.         my $CO="KATEGORIA";
  114.     }elsif($opcja==4){
  115.         my $SQL="Drop table producent";
  116.         my $CO="PRODUCENT";
  117.     }
  118.    
  119.     my $zapytanieSQL=$polaczenie->prepare($SQL)
  120.             or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  121.         my $odpowiedz=$zapytanieSQL->execute
  122.             or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  123.            
  124.         say "Pomyślnie usunięto tabele $CO";
  125.         $polaczenie->disconnect();
  126. }
  127.  
  128. #pokaz tabele w bazie
  129. sub pokaz_baze{
  130.     my $polaczenie=polacz_z_baza();
  131.    
  132.     my $SQL="show tables";
  133.     my $zapytanieSQL=$polaczenie->prepare($SQL)
  134.         or die "nie mozna przygotowac zapytania: $polaczenie->errstr";
  135.    
  136.     my $odpowiedz=$zapytanieSQL->execute
  137.         or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  138.     ##Wypisanie odpowiedzi
  139.     while (my @row=$zapytanieSQL->fetchrow_array()){
  140.     my $tables=$row[0];
  141.     say "$tables";
  142.     }
  143.     ########################
  144.     my $rc=$zapytanieSQL->finish;
  145.     $polaczenie->disconnect();
  146. }
  147.  
  148. sub dodaj_rekord{
  149.     my ($x) = @_;
  150.     my $polaczenie=polacz_z_baza();
  151.     ##Kodowanie polskich znaków##################
  152.     my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
  153.     my $zapytanieSQL=$polaczenie->prepare($SQL);
  154.     $zapytanieSQL->execute;
  155.     ####################################################
  156.  
  157.     if($x==1){
  158.    
  159.     ##Dodawanie do UZYTKOWNIK#############################
  160.     $SQL="INSERT INTO uzytkownik (imie,nazwisko,email,ulica,nrdomu,kodpocztowy,miejscowosc,telefon,login,haslo,zablokowany,rola) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
  161.     $zapytanieSQL=$polaczenie->prepare($SQL)
  162.         or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  163.     ##Podawanie danych do INSERT
  164.     print "Podaj imię: ";
  165.     my $imie = <STDIN>;
  166.         chomp($imie);
  167.     print "Podaj nazwisko: ";
  168.     my $nazwisko=<STDIN>;
  169.         chomp($nazwisko);
  170.     print "Podaj email: ";
  171.         my $email=<STDIN>;
  172.         chomp($email);
  173.     print "Podaj ulice: ";
  174.         my $ulica=<STDIN>;
  175.         chomp($ulica);
  176.     print "Podaj nrdomu: ";
  177.         my $nrdomu=<STDIN>;
  178.         chomp($nrdomu);
  179.     print "Podaj kodpocztowy: ";
  180.         my $kodpocztowy=<STDIN>;
  181.         chomp($kodpocztowy);
  182.     print "Podaj miejscowosc: ";
  183.         my $miejscowosc=<STDIN>;
  184.         chomp($miejscowosc);
  185.     print "Podaj telefon: ";
  186.         my $telefon=<STDIN>;
  187.         chomp($telefon);
  188.     print "Podaj login: ";
  189.         my $login=<STDIN>;
  190.         chomp($login);
  191.     print "Podaj haslo: ";
  192.         my $haslo=<STDIN>;
  193.         chomp($haslo);
  194.     print "Podaj role[admin,klient,pracownik]: ";
  195.         my $rola=<STDIN>;
  196.         chomp($rola);
  197.        
  198.         my $zablokowany=0;
  199.        
  200.     ###################################################
  201.    
  202.     ##Dodawanie do bazy
  203.     my $odpowiedz=$zapytanieSQL->execute($imie,$nazwisko,$email,$ulica,$nrdomu,$kodpocztowy,$miejscowosc,$telefon,$login,$haslo,$zablokowany,$rola)
  204.         or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  205.    
  206.     say "Pomyślnie dodano rekord do tabeli UZYTKOWNIK";
  207.     ####################################################
  208.     $polaczenie->disconnect();
  209.     }elsif($x==2){
  210.    
  211.    
  212.     }elsif($x==3){
  213.     $SQL="INSERT INTO kategoria (kategoria_nazwa) VALUES (?)";
  214.     $zapytanieSQL=$polaczenie->prepare($SQL)
  215.         or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  216.     ##Podawanie danych do INSERT
  217.     print "Podaj nazwe kategorii: ";
  218.     my $kategoria_nazwa = <STDIN>;
  219.         chomp($kategoria_nazwa);
  220.    
  221.     ##Dodawanie do bazy
  222.     my $odpowiedz=$zapytanieSQL->execute($kategoria_nazwa)
  223.         or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  224.    
  225.     say "Pomyślnie dodano rekord do tabeli KATEGORIA";
  226.     $polaczenie->disconnect();
  227.    
  228.    
  229.     }elsif($x==4){
  230.     $SQL="INSERT INTO producent (producent_nazwa) VALUES (?)";
  231.     $zapytanieSQL=$polaczenie->prepare($SQL)
  232.         or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  233.     ##Podawanie danych do INSERT
  234.     print "Podaj nazwe producenta: ";
  235.     my $producent_nazwa = <STDIN>;
  236.         chomp($producent_nazwa);
  237.    
  238.     ##Dodawanie do bazy
  239.     my $odpowiedz=$zapytanieSQL->execute($producent_nazwa)
  240.         or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  241.    
  242.     say "Pomyślnie dodano rekord do tabeli PRODUCENT";
  243.     $polaczenie->disconnect();
  244.     }
  245. }
  246.  
  247. sub zawartosc_tabeli{
  248.     my ($opcja)=@_;
  249.     my $polaczenie=polacz_z_baza();
  250.     ##Kodowanie polskich znaków##################
  251.     my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
  252.     my $zapytanieSQL=$polaczenie->prepare($SQL);
  253.     $zapytanieSQL->execute;
  254.     if($opcja=="1"){
  255.         my $odpowiedz=$polaczenie->selectall_arrayref('select ID_uzytkownik,imie,nazwisko,ulica from uzytkownik');
  256.         say ("TABELA UZYTKOWNIK:\n\n");
  257.         say ("ID\t|Imie\t|Nazwisko|Ulica\t|");
  258.         foreach my $wiersz(@$odpowiedz){
  259.             say join("\t|",@$wiersz);
  260.         }
  261.         $polaczenie->disconnect();
  262.     }elsif($opcja=="2"){
  263.         my $odpowiedz=$polaczenie->selectall_arrayref('select ID_produkt,produkt_nazwa,cena from produkt');
  264.         say ("TABELA PRODUKT:\n\n");
  265.         say ("ID\t|nazwa\t|cena\t|");
  266.         foreach my $wiersz(@$odpowiedz){
  267.             say join("\t|",@$wiersz);
  268.         }
  269.         $polaczenie->disconnect();
  270.     }elsif($opcja=="3"){
  271.         my $odpowiedz=$polaczenie->selectall_arrayref('select ID_kategoria,kategoria_nazwa from kategoria');
  272.         say ("TABELA KATEGORIA:\n\n");
  273.         say ("ID\t|nazwa\t|");
  274.         foreach my $wiersz(@$odpowiedz){
  275.             say join("\t|",@$wiersz);
  276.         }
  277.         $polaczenie->disconnect();
  278.     }
  279.     elsif($opcja=="4"){
  280.         my $odpowiedz=$polaczenie->selectall_arrayref('select ID_producent,producent_nazwa from producent');
  281.         say ("TABELA PRODUCENT:\n\n");
  282.         say ("ID\t|nazwa\t|");
  283.         foreach my $wiersz(@$odpowiedz){
  284.             say join("\t|",@$wiersz);
  285.         }
  286.         $polaczenie->disconnect();
  287.     }
  288.     ####################################################
  289.  
  290. }
  291.  
  292. sub usun_rekord{
  293.     my ($tabela)=@_;
  294.     my $JAKA="";
  295.     my $SQL="";
  296.    
  297.     zawartosc_tabeli();
  298.     my $polaczenie=polacz_z_baza();
  299.     print "Podaj ID rekordu do usunięcia: ";
  300.     my $id=<STDIN>;
  301.     chomp($id);
  302.     while(!looks_like_number($id)){
  303.         print "Podaj poprawnie ID rekordu do usuniecia: ";
  304.         $id = <STDIN>;
  305.         chomp($id);
  306.     }
  307.    
  308.     if($tabela==1){
  309.         my $SQL="Delete FROM uzytkownik WHERE ID_uzytkownik = ?";
  310.         my $JAKA="PRACOWNIK";
  311.         my $zapytanieSQL=$polaczenie->prepare($SQL)
  312.         or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  313.     my $odpowiedz=$zapytanieSQL->execute($id)
  314.         or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  315.        
  316.     say "Pomyślnie usunięto rekord $id z tabeli $JAKA";
  317.     $polaczenie->disconnect();
  318.     }elsif($tabela==2){
  319.         my $SQL="Delete FROM produkt WHERE ID_produkt = ?";
  320.         my $JAKA="PRODUKT";
  321.         my $zapytanieSQL=$polaczenie->prepare($SQL)
  322.         or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  323.     my $odpowiedz=$zapytanieSQL->execute($id)
  324.         or die "Nie mozna wykonac zapytania $zapytanieSQL->errstr";
  325.        
  326.     say "Pomyślnie usunięto rekord $id z tabeli $JAKA";
  327.     $polaczenie->disconnect();
  328.     }elsif($tabela==3){
  329.         my $SQL="Delete FROM kategoria WHERE ID_kategoria = ?";
  330.         my $JAKA="KATEGORIA";
  331.         my $zapytanieSQL=$polaczenie->prepare($SQL)
  332.         or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  333.     my $odpowiedz=$zapytanieSQL->execute($id)
  334.         or die "Nie mozna wykonac zapytania $zapytanieSQL->errstr";
  335.        
  336.     say "Pomyślnie usunięto rekord $id z tabeli $JAKA";
  337.     $polaczenie->disconnect();
  338.     }elsif($tabela==4){
  339.         my $SQL="Delete FROM producent WHERE ID_producent = ?";
  340.         my $JAKA="PRODUCENT";
  341.         my $zapytanieSQL=$polaczenie->prepare($SQL)
  342.         or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  343.     my $odpowiedz=$zapytanieSQL->execute($id)
  344.         or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  345.        
  346.     say "Pomyslnie usunieto rekord nr $id z tabeli $JAKA";
  347.     $polaczenie->disconnect();
  348.     }
  349.    
  350. }
  351.  
  352. sub edycja{
  353.  
  354.     my ($tabela)=@_;
  355.    
  356.    
  357.     zawartosc_tabeli();
  358.     print "Podaj ID rekordu do edycji: ";
  359.     my $id = <STDIN>;
  360.         chomp($id);
  361.     while(!looks_like_number($id)){
  362.         print "Podaj poprawnie ID rekordu do edycji: ";
  363.         $id = <STDIN>;
  364.         chomp($id);
  365.     }
  366.    
  367.     if($tabela==1){
  368.         my $polaczenie=polacz_z_baza();
  369.         ##Kodowanie polskich znaków##################
  370.         my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
  371.         my $zapytanieSQL=$polaczenie->prepare($SQL);
  372.         $zapytanieSQL->execute;
  373.         ####################################################
  374.         $SQL="Select * FROM uzytkownik WHERE ID_uzytkownik=?";
  375.         $zapytanieSQL=$polaczenie->prepare($SQL)
  376.             or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  377.         my $odpowiedz=$zapytanieSQL->execute($id)
  378.             or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  379.  
  380.         ##Menu Edycji
  381.         say "";
  382.         say "Edycja rekordu o ID ".$id;
  383.         ##wyświetlanie
  384.         while (my @row=$zapytanieSQL->fetchrow_array()){
  385.             say $row[0]."\t|".$row[1]."\t|".$row[2]."\t|".$row[3];
  386.         }
  387.         say "1. Edytuj Imie";
  388.         say "2. Edytuj Nazwisko";
  389.         say "3. Edytuj Email";
  390.         say "0. Zakończ Edycję";
  391.        
  392.         my $opcja=-1;
  393.         while ($opcja!=0){
  394.             print "Wybór: ";
  395.             $opcja=<STDIN>;
  396.             chomp($opcja);
  397.             if(!looks_like_number($opcja)){$opcja=-1;}
  398.             given($opcja){
  399.                 when (1) {edytuj_imie($id);say "";menu_edycja();}
  400.                 when (2) {edytuj_nazwisko($id);say "";menu_edycja();}
  401.                 when (3) {edytuj_email($id);say "";menu_edycja();}
  402.                 when (0) {say "";menu();}
  403.                 default {say "Wybierz poprawny numerek";}
  404.             }
  405.         }
  406.     }elsif($tabela==2){
  407.    
  408.     }
  409.    
  410.     }
  411.    
  412.     sub menu_edycja{
  413.     say "1. Edytuj Imie";
  414.     say "2. Edytuj Nazwisko";
  415.     say "3. Edytuj Ocene";
  416.     say "0. Zakończ Edycję";
  417. }
  418.    
  419.     ##edycja imienia
  420. sub edytuj_imie{
  421.     my ($id)=@_;
  422.     my $polaczenie=polacz_z_baza();
  423.     ##Kodowanie polskich znaków##################
  424.     my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
  425.     my $zapytanieSQL=$polaczenie->prepare($SQL);
  426.     $zapytanieSQL->execute;
  427.     ####################################################
  428.     print "Podaj nowe imię: ";
  429.     my $imie=<STDIN>;
  430.     chomp($imie);
  431.     $SQL="UPDATE uzytkownik SET imie=? WHERE ID_uzytkownik=?";
  432.     $zapytanieSQL=$polaczenie->prepare($SQL)
  433.         or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  434.     $zapytanieSQL->execute($imie,$id)
  435.         or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  436.    
  437.    
  438. }
  439.  
  440. ##edycja nazwiska
  441. sub edytuj_nazwisko{
  442.     my ($id)=@_;
  443.     my $polaczenie=polacz_z_baza();
  444.     ##Kodowanie polskich znaków##################
  445.     my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
  446.     my $zapytanieSQL=$polaczenie->prepare($SQL);
  447.     $zapytanieSQL->execute;
  448.     ####################################################
  449.     print "Podaj nowe nazwisko: ";
  450.     my $nazwisko=<STDIN>;
  451.     chomp($nazwisko);
  452.     $SQL="UPDATE uzytkownik SET NAZWISKO=? WHERE ID_uzytkownik=?";
  453.     $zapytanieSQL=$polaczenie->prepare($SQL)
  454.         or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
  455.     $zapytanieSQL->execute($nazwisko,$id)
  456.         or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
  457.    
  458.    
  459. }
  460.  
  461. ##łączenie z bazą
  462. sub polacz_z_baza{
  463.     ##uzytkownik
  464.     my $uzytkownik="root";
  465.     my $haslo="";
  466.     #baza
  467.     my $baza="konewka";
  468.     #host
  469.     my $host="localhost";
  470.     #połączenie
  471.     my $polaczenie=DBI->connect("DBI:mysql:$baza:$host",$uzytkownik,$haslo);
  472.     die "Nie nawiązano połaczenia:".DBI->errstr() unless $polaczenie;
  473.     say "Polaczono z baza";
  474.     return $polaczenie;
  475. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement