Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- use v5.10;
- use feature qw(say);
- use feature qw(switch);
- use Term::ANSIScreen qw(cls);
- use DBI;
- use locale;
- use Scalar::Util qw(looks_like_number);
- no warnings 'experimental';
- use open ':std', ':encoding(cp65001)'; # Encoding used by console
- use open IO => ':encoding(cp1252)';
- #PROGRAM
- say cls();
- menu();
- #PROGRAM
- sub menu{
- say "\nZARZADZANIE BAZA DANYCH";
- say "Wybierz operację";
- say "1.Utworz tabele";
- say "2.Usun tabele";
- say "3.Dodaj dane do tabeli";
- say "4.Wyswietl dane z tabeli";
- say "5.Edytuj dane z tabeli";
- say "6.Usun dane z tabeli";
- say "7.Pokaz tabele z bazy";
- say "0.Koniec\n";
- wybor();
- }
- sub menu_tabele{
- my ($cozrobic)=@_;
- my ($opcja)=-1;
- while($opcja!=5){
- say "Wybierz tabele:";
- say "1. Uzytkownik";
- say "2. Produkt";
- say "3. Kategoria";
- say "4. Producent";
- say "5. Koniec";
- print "Wybor: ";
- $opcja=<STDIN>;
- chomp($opcja);
- if(!looks_like_number($opcja)||$opcja>5){
- $opcja=-1;
- print "\nWybierz poprawna numer\n";
- }else{
- if($cozrobic==2){
- usun_tabele($opcja);<STDIN>;menu();
- }elsif($cozrobic==3){
- dodaj_rekord($opcja);<STDIN>;menu();
- }elsif($cozrobic==4){
- zawartosc_tabeli($opcja);<STDIN>;menu();
- }elsif($cozrobic==5){
- edycja($opcja);<STDIN>;menu();
- }
- elsif($cozrobic==6){
- usun_rekord($opcja);<STDIN>;menu();
- }
- }
- }
- }
- sub wybor{
- my $opcja=-1;
- #my $cozrobic=-1;
- while ($opcja!=0){
- print "Wybor: ";
- $opcja=<STDIN>;
- chomp($opcja);
- if(!looks_like_number($opcja)){$opcja=-1;}
- given($opcja){
- when (1) {utworz_tabele();<STDIN>;menu();}
- when (2) {menu_tabele($opcja);<STDIN>;menu();}
- when (3) {menu_tabele($opcja);<STDIN>;menu();}
- when (4) {menu_tabele($opcja);<STDIN>;menu();}
- when (5) {menu_tabele($opcja);<STDIN>;menu();}
- when (6) {menu_tabele($opcja);<STDIN>;menu();}
- when (7) {pokaz_baze();<STDIN>;menu();}
- when (0) {exit(0);say "Poprawnie zakonczono";}
- default {say "Wybierz poprawny numer";}
- }
- }
- }
- sub usun_tabele{
- my ($opcja)=@_;
- my $polaczenie=polacz_z_baza();
- my $SQL="";
- my $CO="";
- if($opcja==1){
- my $SQL="Drop table uzytkownik";
- my $CO="UZYTKOWNIK";
- }elsif($opcja==2){
- my $SQL="Drop table produkt";
- my $CO="PRODUKT";
- }elsif($opcja==3){
- my $SQL="Drop table kategoria";
- my $CO="KATEGORIA";
- }elsif($opcja==4){
- my $SQL="Drop table producent";
- my $CO="PRODUCENT";
- }
- my $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- my $odpowiedz=$zapytanieSQL->execute
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- say "Pomyślnie usunięto tabele $CO";
- $polaczenie->disconnect();
- }
- #pokaz tabele w bazie
- sub pokaz_baze{
- my $polaczenie=polacz_z_baza();
- my $SQL="show tables";
- my $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "nie mozna przygotowac zapytania: $polaczenie->errstr";
- my $odpowiedz=$zapytanieSQL->execute
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- ##Wypisanie odpowiedzi
- while (my @row=$zapytanieSQL->fetchrow_array()){
- my $tables=$row[0];
- say "$tables";
- }
- ########################
- my $rc=$zapytanieSQL->finish;
- $polaczenie->disconnect();
- }
- sub dodaj_rekord{
- my ($x) = @_;
- my $polaczenie=polacz_z_baza();
- ##Kodowanie polskich znaków##################
- my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
- my $zapytanieSQL=$polaczenie->prepare($SQL);
- $zapytanieSQL->execute;
- ####################################################
- if($x==1){
- ##Dodawanie do UZYTKOWNIK#############################
- $SQL="INSERT INTO uzytkownik (imie,nazwisko,email,ulica,nrdomu,kodpocztowy,miejscowosc,telefon,login,haslo,zablokowany,rola) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
- $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- ##Podawanie danych do INSERT
- print "Podaj imię: ";
- my $imie = <STDIN>;
- chomp($imie);
- print "Podaj nazwisko: ";
- my $nazwisko=<STDIN>;
- chomp($nazwisko);
- print "Podaj email: ";
- my $email=<STDIN>;
- chomp($email);
- print "Podaj ulice: ";
- my $ulica=<STDIN>;
- chomp($ulica);
- print "Podaj nrdomu: ";
- my $nrdomu=<STDIN>;
- chomp($nrdomu);
- print "Podaj kodpocztowy: ";
- my $kodpocztowy=<STDIN>;
- chomp($kodpocztowy);
- print "Podaj miejscowosc: ";
- my $miejscowosc=<STDIN>;
- chomp($miejscowosc);
- print "Podaj telefon: ";
- my $telefon=<STDIN>;
- chomp($telefon);
- print "Podaj login: ";
- my $login=<STDIN>;
- chomp($login);
- print "Podaj haslo: ";
- my $haslo=<STDIN>;
- chomp($haslo);
- print "Podaj role[admin,klient,pracownik]: ";
- my $rola=<STDIN>;
- chomp($rola);
- my $zablokowany=0;
- ###################################################
- ##Dodawanie do bazy
- my $odpowiedz=$zapytanieSQL->execute($imie,$nazwisko,$email,$ulica,$nrdomu,$kodpocztowy,$miejscowosc,$telefon,$login,$haslo,$zablokowany,$rola)
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- say "Pomyślnie dodano rekord do tabeli UZYTKOWNIK";
- ####################################################
- $polaczenie->disconnect();
- }elsif($x==2){
- }elsif($x==3){
- $SQL="INSERT INTO kategoria (kategoria_nazwa) VALUES (?)";
- $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- ##Podawanie danych do INSERT
- print "Podaj nazwe kategorii: ";
- my $kategoria_nazwa = <STDIN>;
- chomp($kategoria_nazwa);
- ##Dodawanie do bazy
- my $odpowiedz=$zapytanieSQL->execute($kategoria_nazwa)
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- say "Pomyślnie dodano rekord do tabeli KATEGORIA";
- $polaczenie->disconnect();
- }elsif($x==4){
- $SQL="INSERT INTO producent (producent_nazwa) VALUES (?)";
- $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- ##Podawanie danych do INSERT
- print "Podaj nazwe producenta: ";
- my $producent_nazwa = <STDIN>;
- chomp($producent_nazwa);
- ##Dodawanie do bazy
- my $odpowiedz=$zapytanieSQL->execute($producent_nazwa)
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- say "Pomyślnie dodano rekord do tabeli PRODUCENT";
- $polaczenie->disconnect();
- }
- }
- sub zawartosc_tabeli{
- my ($opcja)=@_;
- my $polaczenie=polacz_z_baza();
- ##Kodowanie polskich znaków##################
- my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
- my $zapytanieSQL=$polaczenie->prepare($SQL);
- $zapytanieSQL->execute;
- if($opcja=="1"){
- my $odpowiedz=$polaczenie->selectall_arrayref('select ID_uzytkownik,imie,nazwisko,ulica from uzytkownik');
- say ("TABELA UZYTKOWNIK:\n\n");
- say ("ID\t|Imie\t|Nazwisko|Ulica\t|");
- foreach my $wiersz(@$odpowiedz){
- say join("\t|",@$wiersz);
- }
- $polaczenie->disconnect();
- }elsif($opcja=="2"){
- my $odpowiedz=$polaczenie->selectall_arrayref('select ID_produkt,produkt_nazwa,cena from produkt');
- say ("TABELA PRODUKT:\n\n");
- say ("ID\t|nazwa\t|cena\t|");
- foreach my $wiersz(@$odpowiedz){
- say join("\t|",@$wiersz);
- }
- $polaczenie->disconnect();
- }elsif($opcja=="3"){
- my $odpowiedz=$polaczenie->selectall_arrayref('select ID_kategoria,kategoria_nazwa from kategoria');
- say ("TABELA KATEGORIA:\n\n");
- say ("ID\t|nazwa\t|");
- foreach my $wiersz(@$odpowiedz){
- say join("\t|",@$wiersz);
- }
- $polaczenie->disconnect();
- }
- elsif($opcja=="4"){
- my $odpowiedz=$polaczenie->selectall_arrayref('select ID_producent,producent_nazwa from producent');
- say ("TABELA PRODUCENT:\n\n");
- say ("ID\t|nazwa\t|");
- foreach my $wiersz(@$odpowiedz){
- say join("\t|",@$wiersz);
- }
- $polaczenie->disconnect();
- }
- ####################################################
- }
- sub usun_rekord{
- my ($tabela)=@_;
- my $JAKA="";
- my $SQL="";
- zawartosc_tabeli();
- my $polaczenie=polacz_z_baza();
- print "Podaj ID rekordu do usunięcia: ";
- my $id=<STDIN>;
- chomp($id);
- while(!looks_like_number($id)){
- print "Podaj poprawnie ID rekordu do usuniecia: ";
- $id = <STDIN>;
- chomp($id);
- }
- if($tabela==1){
- my $SQL="Delete FROM uzytkownik WHERE ID_uzytkownik = ?";
- my $JAKA="PRACOWNIK";
- my $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- my $odpowiedz=$zapytanieSQL->execute($id)
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- say "Pomyślnie usunięto rekord $id z tabeli $JAKA";
- $polaczenie->disconnect();
- }elsif($tabela==2){
- my $SQL="Delete FROM produkt WHERE ID_produkt = ?";
- my $JAKA="PRODUKT";
- my $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- my $odpowiedz=$zapytanieSQL->execute($id)
- or die "Nie mozna wykonac zapytania $zapytanieSQL->errstr";
- say "Pomyślnie usunięto rekord $id z tabeli $JAKA";
- $polaczenie->disconnect();
- }elsif($tabela==3){
- my $SQL="Delete FROM kategoria WHERE ID_kategoria = ?";
- my $JAKA="KATEGORIA";
- my $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- my $odpowiedz=$zapytanieSQL->execute($id)
- or die "Nie mozna wykonac zapytania $zapytanieSQL->errstr";
- say "Pomyślnie usunięto rekord $id z tabeli $JAKA";
- $polaczenie->disconnect();
- }elsif($tabela==4){
- my $SQL="Delete FROM producent WHERE ID_producent = ?";
- my $JAKA="PRODUCENT";
- my $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- my $odpowiedz=$zapytanieSQL->execute($id)
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- say "Pomyslnie usunieto rekord nr $id z tabeli $JAKA";
- $polaczenie->disconnect();
- }
- }
- sub edycja{
- my ($tabela)=@_;
- zawartosc_tabeli();
- print "Podaj ID rekordu do edycji: ";
- my $id = <STDIN>;
- chomp($id);
- while(!looks_like_number($id)){
- print "Podaj poprawnie ID rekordu do edycji: ";
- $id = <STDIN>;
- chomp($id);
- }
- if($tabela==1){
- my $polaczenie=polacz_z_baza();
- ##Kodowanie polskich znaków##################
- my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
- my $zapytanieSQL=$polaczenie->prepare($SQL);
- $zapytanieSQL->execute;
- ####################################################
- $SQL="Select * FROM uzytkownik WHERE ID_uzytkownik=?";
- $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- my $odpowiedz=$zapytanieSQL->execute($id)
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- ##Menu Edycji
- say "";
- say "Edycja rekordu o ID ".$id;
- ##wyświetlanie
- while (my @row=$zapytanieSQL->fetchrow_array()){
- say $row[0]."\t|".$row[1]."\t|".$row[2]."\t|".$row[3];
- }
- say "1. Edytuj Imie";
- say "2. Edytuj Nazwisko";
- say "3. Edytuj Email";
- say "0. Zakończ Edycję";
- my $opcja=-1;
- while ($opcja!=0){
- print "Wybór: ";
- $opcja=<STDIN>;
- chomp($opcja);
- if(!looks_like_number($opcja)){$opcja=-1;}
- given($opcja){
- when (1) {edytuj_imie($id);say "";menu_edycja();}
- when (2) {edytuj_nazwisko($id);say "";menu_edycja();}
- when (3) {edytuj_email($id);say "";menu_edycja();}
- when (0) {say "";menu();}
- default {say "Wybierz poprawny numerek";}
- }
- }
- }elsif($tabela==2){
- }
- }
- sub menu_edycja{
- say "1. Edytuj Imie";
- say "2. Edytuj Nazwisko";
- say "3. Edytuj Ocene";
- say "0. Zakończ Edycję";
- }
- ##edycja imienia
- sub edytuj_imie{
- my ($id)=@_;
- my $polaczenie=polacz_z_baza();
- ##Kodowanie polskich znaków##################
- my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
- my $zapytanieSQL=$polaczenie->prepare($SQL);
- $zapytanieSQL->execute;
- ####################################################
- print "Podaj nowe imię: ";
- my $imie=<STDIN>;
- chomp($imie);
- $SQL="UPDATE uzytkownik SET imie=? WHERE ID_uzytkownik=?";
- $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- $zapytanieSQL->execute($imie,$id)
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- }
- ##edycja nazwiska
- sub edytuj_nazwisko{
- my ($id)=@_;
- my $polaczenie=polacz_z_baza();
- ##Kodowanie polskich znaków##################
- my $SQL="SET NAMES utf8 COLLATE utf8_polish_ci;";
- my $zapytanieSQL=$polaczenie->prepare($SQL);
- $zapytanieSQL->execute;
- ####################################################
- print "Podaj nowe nazwisko: ";
- my $nazwisko=<STDIN>;
- chomp($nazwisko);
- $SQL="UPDATE uzytkownik SET NAZWISKO=? WHERE ID_uzytkownik=?";
- $zapytanieSQL=$polaczenie->prepare($SQL)
- or die "Nie mozna przygotowac zapytania: $polaczenie->errstr";
- $zapytanieSQL->execute($nazwisko,$id)
- or die "Nie można wykonać zapytania $zapytanieSQL->errstr";
- }
- ##łączenie z bazą
- sub polacz_z_baza{
- ##uzytkownik
- my $uzytkownik="root";
- my $haslo="";
- #baza
- my $baza="konewka";
- #host
- my $host="localhost";
- #połączenie
- my $polaczenie=DBI->connect("DBI:mysql:$baza:$host",$uzytkownik,$haslo);
- die "Nie nawiązano połaczenia:".DBI->errstr() unless $polaczenie;
- say "Polaczono z baza";
- return $polaczenie;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement