Witam was ponownie( zapytanie będzie kontynuacja problemu z linku) .Napotkałem kolejny problem odnośnie logowania(zapewne to jedna linijka kodu załatwi ale nie mam pojęcia jaka)mianowicie w programie mam "N" zakładek w pasku menu ,w każdej mam button który wpisuje dane do mql. ale po każdym zapisie czyli kliknięciu w klawisz nie przechodzi do MSBOX. Dane zapisane tylko prosi o login i hasło .
Po wpisaniu wyskakuje komunikat o poprawnym dodaniu rekordu do bazy danych, jak to zrobić proszę o pomoc.
- Wcześniej pisałeś, że masz zrobioną jakąś dziwną sesje. Do czego ona służy? Jakoś to wytłumaczenie do mnie nie przemawia, ponieważ nie potrzebujesz klasy session, aby sprawdzić poprawność hasła i loginu.
Stworzyłem klasę session aby nie można było zalogować się bez poprawnego hasła i loginu.
- Czy ty przypadkiem zamiast messageBoxa, nie otwierasz znowu okna logowania?
- Dobrze by było wrzucić kod, z fusów jeszcze tutaj nikt nie wywróżył, a już na pewno nic dobrego ;)
Sesje zostały usunięte jak podałeś mi rozwiązanie z logowanie(kombinowałem na rożne sposoby długi czas pisałem w php i chciałem coś podobnego zrobić ale mi się nie udało wiec napisałem do was po raz pierwszy).
Po kliknięciu w menu dodaj kontrahenta otwieram kolejne okno na którym mam buton dodaj,po wpisaniu do textbox np firma 1 klikam dodaj i to ma zapisać w bazie danych ale niczym zapisze pyta mnie o hasło i login.
okno główne to które pojawia się po zalogowaniu
(kod przestawia wywołanie z menu)
public partial class Baza : Form
{
MySqlConnection poloczenie = new MySqlConnection("server=;user=;password=;database=");
MySqlCommand komenda;
MySqlDataReader odczyt;
string zapytanie = "";
string idt = "";
string prowadzacy2 = "";
public Baza()
{
InitializeComponent();
Logowanie logs = new Logowanie();
odczytlista();
kontrahentdodaj();
listView1.View = View.Details;
listView1.GridLines = true;
listView1.FullRowSelect = true;
}
private void zleceniaToolStripMenuItem_Click(object sender, EventArgs e)
{
Kontrachent kon = new Kontrachent();
kon.Show();
}
okno koktrachet
namespace WindowsFormsApp1
{
public partial class Kontrachent : Form
{
MySqlConnection poloczenie = new MySqlConnection("server=;user=;password=;database=");
MySqlCommand komenda;
string zapytanie = "";
private void doajkon()
{
try
{
if (poloczenie.State == ConnectionState.Closed)
{
poloczenie.Open();
zapytanie = string.Format("INSERT INTO kontrahent( klient) VALUES('{0}')",textBox1.Text);
komenda = new MySqlCommand(zapytanie, poloczenie);
komenda.ExecuteNonQuery();
poloczenie.Close();
}
}
catch (Exception ex)
{
string Blad = string.Format("Bład połaczenia bazy danych", ex.Message);
MessageBox.Show(Blad, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
poloczenie.Close();
}
}
public Kontrachent()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Baza baz = new Baza();
baz.konsw(0);
doajkon();
baz.kontrahentdodaj();
MessageBox.Show("Dodano kontrahenta", "error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
private void Kontrachent_Load(object sender, EventArgs e)
{
}
}
} Proszę moderatora o poprawieni wyświetlania kodu .
Niemiłosierny chaos, ale to początki, z czasem się nauczysz.
Robisz tutaj Baza baz = new Baza();
,
private void button1_Click(object sender, EventArgs e)
{
Baza baz = new Baza();
baz.konsw(0);
doajkon();
baz.kontrahentdodaj();
MessageBox.Show("Dodano kontrahenta", "error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
a w klasie Baza
, w konstruktorze masz Logowanie logs = new Logowanie();
:
public Baza()
{
InitializeComponent();
Logowanie logs = new Logowanie();
odczytlista();
kontrahentdodaj();
listView1.View = View.Details;
listView1.GridLines = true;
listView1.FullRowSelect = true;
}
Każde wywołanie new Baza()
wywoła new Logowanie()
.
@cerrato
Byłbyś na tyle miły i mi tego posta upiększył? :D
Ok rozumie, a jak to o minąć w sposób taki by po zalogowaniu nie pytało mnie ponownie gdy będę wywoływał zakładki ?
Wyrzuć z przycisku
Baza baz = new Baza();
baz.konsw(0);
Powinno wyglądać to tak:
private void button1_Click(object sender, EventArgs e)
{
doajkon();
MessageBox.Show("Dodano kontrahenta", "error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
dodajkon
private void doajkon()
{
try
{
MySqlConnection poloczenie = new MySqlConnection("server=;user=;password=;database=");
MySqlCommand komenda;
string zapytanie = "";
if (poloczenie.State == ConnectionState.Closed)
{
poloczenie.Open();
zapytanie = string.Format("INSERT INTO kontrahent( klient) VALUES('{0}')",textBox1.Text);
komenda = new MySqlCommand(zapytanie, poloczenie);
komenda.ExecuteNonQuery();
poloczenie.Close();
}
}
catch (Exception ex)
{
string Blad = string.Format("Bład połaczenia bazy danych", ex.Message);
MessageBox.Show(Blad, "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
poloczenie.Close();
}
}
C# i WinForms to spory przeskok z PHP jeśli chodzi o przyzwyczajenia, strukturę projektu i samo działanie oprogramowania. Widać to po twoim kodzie. Potrzebujesz podstaw najpierw. Budowy klas i obiektów i operacji na nich, nazywanie zmiennych, nazywanie kontrolek. Najważniejsze to zrozumieć jak działa WinForms, jak działają okienka, co się wywołuje i kiedy, a co nie. Później dochodzą do tego biblioteki zewnętrzne, które ułatwiają życie.
Baza baz = new Baza();
baz.konsw(0);
Ok masz racje ale to pozostałość po moich kombinacjach, ale jak doprowadzi do tego by nie pytał mnie o hasło ? Co do nauki próbuje to zrozumieć.
Co do programu to co robię działa poprawnie na www ale che to przenieść całkiem na PC (na celu mam większy komfort pracy mój i moich kolegów ).
Program ma proste zadanie i kilka wymagań :
wymagania :
logowanie i kota użytkowników/
zakładki do których jest dostęp według ustalonych uprawnień użytkownika.
Panel administracyjny
możliwość zmiany hasła każdego użytkownika jaki jest zalogowany
zadania :
wyświetlanie listy zleceń
dodawanie zleceń
edycje zleceń
dodawanie kontrahentów i firm instalatorski
komunikowanie kończących się terminów.
Myślę ze od razu powinienem zacząć od tego opisu.
Napisałem ci wyżej co masz zrobić żeby nie pytał w przypadku jaki podałeś. Z resztą problemów musisz sobie poradzić analogicznie. Twoja praca nad tym nie będzie łatwiejsza póki nie ogarniesz podstaw. Aplikacja wcale nie mała, z tego co napisałeś, więc jeszcze sporo przed tobą.
Dzięki działa tylko nie odświeża mi comboboxa instalator ale trudno zrobiłem tak ze trzeba kliknąć w labe ,tak to miałem już dawno zrobione ale musiałem zamykać program wy dodało nowy itams do combo boxa . program wygląda tak na chwile obecną!