Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dwa rekordy o tej samej nazwie
inomi13
post 22.09.2020, 08:30:34
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 16.08.2017

Ostrzeżenie: (0%)
-----


Posiadam poniższą bazę danych


Mam problem kiedy w bazie danych są dwie osoby o tej samym imieniu i nazwisku. Mam poniższe zapytanie jednak nie spełnia ono swojego zadania.

  1. $result = $connect->query("SELECT * FROM `persons` where name = "Jan Kowalski" and confirm = '1'");
  2.  
  3. if (!$result) throw new Exception($connect->error);
  4.  
  5. $how_name = $result->num_rows;
  6. if($how_name>0)
  7. {
  8. $all_ok=false;
  9. $_SESSION['e_name']=" Konto o takim imieniu i nazwisku potwierdziło już rejestrację";
  10. }


Ten post edytował inomi13 22.09.2020, 08:34:30
Go to the top of the page
+Quote Post
nospor
post 22.09.2020, 09:06:30
Post #2





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Trudno zeby spelnialo skoro php pluje PARSE ERROR...

Nie mozesz w " wkladac "

Tak ma byc

$result = $connect->query("SELECT * FROM `persons` where name = 'Jan Kowalski' and confirm = '1'");

przenosze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 22.09.2020, 09:12:07
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


to był błąd przy kopiowaniu na forum, wiem że musi być w takiej formie
  1. $result = $connect->query("SELECT * FROM `persons` where name = 'Jan Kowalski' and confirm = '1'");
natomiast nadal nie rozwiązuje to mojego problemu.
Go to the top of the page
+Quote Post
nospor
post 22.09.2020, 09:24:15
Post #4





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




No to teraz, jak juz masz poprawny gramatycznie kod php, to w czym dokladnie problem? Co znaczy, ze nie rozwiazuje to twojego problemu? Co sie dzieje nie tak jak powinno?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 22.09.2020, 09:33:29
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


tak jak napisałem powyżej. Mam w bazie danych dwie osoby o tym samym imieniu i nazwisku. Jeżeli jedna z osób zarejestruje konto to w bazie danych pojawi się w kolumnie confirm "1", natomiast jeżeli druga osoba o takim samym imieniu i nazwisku będzie chciała zarejestrować konto to powyższy kod php zwróci błąd "Konto o takim imieniu i nazwisku potwierdziło już rejestrację".
Go to the top of the page
+Quote Post
trueblue
post 22.09.2020, 09:44:04
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Albo umożliwiaj rejestrację osobom o tym samym imieniu i nazwisku (tak powinno być), albo uniemożliwaj (wtedy nie wpadnie do bazy drugi rekord).


--------------------
Go to the top of the page
+Quote Post
gino
post 22.09.2020, 09:52:10
Post #7





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


ale wtedy w tym drugim przypadku drugi Kowalski powie "do chrzanu taki serwis, spadam stad" smile.gif Możesz utworzyć w tabeli pole z kluczem złożony np. z nazwiska i id i będziesz wiedział który to Kowalski, bo będzie 1Kowalski, 2Kowalski jak nie masz innych danych typu pesel itd.

gino

Ten post edytował gino 22.09.2020, 09:52:25
Go to the top of the page
+Quote Post
ufo1990
post 22.09.2020, 10:13:07
Post #8





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


ok powyższe sugestie rozwiązują problem, natomiast pracuje nad podobnym projektem w którym ręcznie wprowadzane są do bazy danych imiona i nazwiska osób które będą uczestniczyć w evencie i tam też oczywiście mogą wystąpić osoby o tym samym imieniu i nazwisku. Co w sytuacji jeżeli jedna z osób potwierdzi swoje przybycie ? druga osoba o tym samym imieniu i nazwisku nie będzie mogła tego zrobić ponieważ system zwróci błąd "potwierdziłeś już przybycie". Jak rozwiązać taki przypadek ?
Go to the top of the page
+Quote Post
gino
post 22.09.2020, 10:18:03
Post #9





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


dobrze, ale na takie eventy nie logujesz się danymi imię nazwisko, tak naprawdę może zarejestrować się 1000 Kowalskich i nie może być sytuacji w której Twój kod odrzuci już drugiego. Inna sprawa: co innego jest rejestracja o co innego potwierdzenie rejestracji. Pierwszą robi zazwyczaj klient drugą robi Twój kod po zweryfikowaniu danych. W takim przypadku programowi jest wszystko jedno kto się zarejestrował, ma tylko sprawdzić poprawność danych, klepnąć pole confirm i wysłać klientowi że jest zalogowany. Jeśli ta tabela jest kompletna, to nie ma sposobu rozróżnienia który Kowalski jest który. Nie opisałeś dokładnie co chcesz robić, czy to tylko wycinek tabeli, czy klient podaje więcej danych, jak powiadamiasz osobę o klepnięciu rejestracji. Pobierz chociaż emial.

gino


edit: coś mi komp zaświrował, więc dokończę: a nawet jak zalogują się imieniem i nazwiskiem to system dla rozróżnienia osoby poprosi poprosi o email

Ten post edytował gino 22.09.2020, 10:26:10
Go to the top of the page
+Quote Post
ufo1990
post 22.09.2020, 10:31:06
Post #10





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


też myślałem że dobrym rozwiązaniem było by dorzucić kod, który wprowadzała by dana osoba i to by rozwiązało problem osób o tym samym imieniu i nazwisku. Jednak wytyczne jakie dostałem to że dana osoba ma wejść na stronę wpisać tylko i wyłącznie swoje imię i nazwisko i jeżeli się zgadza to ma otrzymać komunikat że "potwierdzono przybycie". Na ten moment tabela ma kolumny id, name, confirm. Już nawet nie chodzi o to która z osób o tym samym imieniu i nazwisku potwierdziła przybycie tylko każda z osób aby miała taką możliwość.
Go to the top of the page
+Quote Post
nospor
post 22.09.2020, 10:49:57
Post #11





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




No i super, poraz kolejny sie pytam w czym problem. Nie pisz mi prosze po raz kolejny tego co juz pisales tylko napisz co ci nei dziala. Widze ze masz kod, ktore sprawdza istnienie i zapisuje komunikat bledu. Nie masz nic wiecej, czy masz cos wiecej tylko ci nei dziala? To pokaz tez to cos wiecej i napisz konkretnie ktory kawalek nie dziala


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 22.09.2020, 10:56:56
Post #12





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


Chciałbym tak przerobić poniższe zapytanie aby mimo znalezienia jednego rekordu, który już ma confirm='1"', kolejnej osobie o tym samym imieniu i nazwisku i mającej confirm='0' pozwolił potwierdzić rejestrację.
  1. $result = $connect->query("SELECT * FROM `persons` where name = "Jan Kowalski" and confirm = '1'");
Go to the top of the page
+Quote Post
nospor
post 22.09.2020, 11:16:24
Post #13





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




No to zamien
and confirm = '1'

na
and confirm = 0

i jak bedzie choc jeden taki jeden rekord to pozwoli na potwierdzenie rejestracji.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 22.09.2020, 11:19:07
Post #14





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


To nie jest rozwiązanie bo jeżeli ktoś już potwierdzi przybycie to system ponownie go przepuści i w nieskończoność będzie mógł potwierdzać.
Go to the top of the page
+Quote Post
trueblue
post 22.09.2020, 11:54:28
Post #15





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


W nieskończoność nie, w tym przypadku dwukrotnie - raz za siebie, raz za inną osobę.
Wciąż nie dostrzegasz problemu, o którym każdy Ci wspomina?


--------------------
Go to the top of the page
+Quote Post
ufo1990
post 23.09.2020, 08:48:40
Post #16





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


Przerobiłem zapytanie według waszych sugestii i nadal to nie działa tak jak chce, ponieważ jeżeli jeden z Janów Kowalskich ma ustawione confirm='0' a drugi confirm ='1' to zapytanie zadziała w w przypadku tego pierwszego.
  1. $result= $connect->query("SELECT * FROM persons WHERE name='Jan kowalski' and confirm='0'");
  2. $how_name = $result->num_rows;
  3. if($how_name>0)
  4. {
  5. $all_OK=false;
  6. $_SESSION['e_name']="Potwierdzono przybycie na ślub!";
  7. }

Go to the top of the page
+Quote Post
trueblue
post 23.09.2020, 09:03:39
Post #17





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Przecież tu nie chodzi o zapytanie, tylko o błąd logiczny.
Musisz dodać inny identyfikator, bo nie rozróżnisz dwóch Kowalskich. Jeden może potwierdzić, a dwóch przyjdzie z informacją, że obydwaj potwierdzili. Jak udowodnisz, który z nich mówi prawdę?
Dopóki nie dodasz unikalnego identyfikatora (mail, numer telefonu, pesel), to możesz nadal głowić się nad zapytaniem.


--------------------
Go to the top of the page
+Quote Post
gino
post 23.09.2020, 09:31:18
Post #18





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Cytat
Jednak wytyczne jakie dostałem to że dana osoba ma wejść na stronę wpisać tylko i wyłącznie swoje imię i nazwisko i jeżeli się zgadza to ma otrzymać komunikat że "potwierdzono przybycie".

Więc pozostaje Ci się modlić aby nie zaszła sytuacja o dwóch osobach o takich samych personaliach albo przekonać tego kto Ci to zlecił do dołożenia pola np. mailowego. Już pisałem o tym parę postów wyżej.

gino
Go to the top of the page
+Quote Post
trueblue
post 23.09.2020, 09:35:12
Post #19





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Generuj unikalny kod dla użytkownika w czasie rejestracji (np. Q4AMU) i wyświetl na ekranie. Kiedy będzie chciał potwierdzić rejestrację, poproś o ten kod.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.04.2024 - 14:16