![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam tabelę w której zapisywani są uczestnicy eventów. Tabela składa się między innymi z pola id, event_id oraz email. Każdy kolejny uczestnik który się zapisze dostaje wpis z kolejnym id ale też z event_id które się powtarzają. Mój problem polega na tym, że chcę zablokować możliwość rejestracji użytkownikowi, który już raz zarejestrował się w danym evencie. Chcę to robić na podstawie maila. Sprawdzam więc na początku kto jest zalogowany, następnie jego mail. Na tym etapie mam problem. Jak skonstruować zapytanie aby sprawdzić czy user z danym mailem jest już w bazie pod danym event_id? Grzebałem trochę na forum i w necie i uskrobałem coś takiego:
proszę o jakąś podpowiedź |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
nie: $rekordy = mysql_query("select email from jos_events_members where event_id='$row->id'");
a: $rekordy = mysql_query("select email from jos_events_members where event_id='{$row->id}'"); Podstawy tekstów. Wypadałoby się z nimi zapoznać: http://www.php.net/manual/pl/language.types.string.php Oraz zapoznaj się z tym: Temat: Jak poprawnie zada pytanie Też bardzo ciekawe rzeczy dla początkujących -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem ten błąd i zapoznałem się też z podanymi przez Ciebie linkami. Jednak ta poprawka niczego nie zmieniła. Proszę o wskazówkę co zrobiłem źle.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Co zrobiłeś źle to ja ci już poprawiłem.
Jeśli nadal ci nie działa, to zapoznaj się jeszcze raz z tym linkiem: Temat: Jak poprawnie zada pytanie I do niego zastosuj. Pojawią się wówczas dodatkowe dane do analizy. Bo przecież z fusów nie oczekujesz od nas wróżenia? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zastosowałem się do wskazówek i posprawdzałem zmienne i zapytanie do bazy. Wszystkie są ok. Problem pojawia się na etapie samego porównywania czy email jest w tabeli. Wystarczy że jest tam jakikolwiek i wyświetla, że istnieje.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to w takim razie warunek:
event_id='{$row->id}' jest spełniony. Jeśli więc to ci nie pasuje, to zmień to na taki, jaki ci będzie pasował. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli dobrze pojmuje to ten kod sprawdza czy w tabeli w kolumnie email przy konkretnym event_id jest wpis. Ja potrzebuje jednak sprawdzić konkretnie czy w kolumnie posiadającej event_id=10 jest email cos@cos.pl tu mam problem.
btw. Chciałem dodać, że mimo tego, że nie sprecyzowałem pytania to jednak dział przedszkole, a po Twoich odpowiedziach nie bardzo rozumiem czy chcesz mi pomóc czy udowodnić, że jestem idiotą. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat a po Twoich odpowiedziach nie bardzo rozumiem czy chcesz mi pomóc czy udowodnić, że jestem idiotą. Skąd taki wniosek? To, że odsyłam cię do przydatnych linków nie jest oznaką, że traktuję cię jak idiotę a że próbuje ci pomóc. Czy Twoim zdaniem pomoc polega tylko i wyłącznie na dawaniu wszystkiego pod nos?Cytat Jeśli więc to ci nie pasuje, to zmień to na taki, jaki ci będzie pasował. Jeśli zaś czepiasz się tej odpowiedzi to jak ci niby miałem odpowiedzieć![]() Cytat Ja potrzebuje jednak sprawdzić konkretnie czy w kolumnie posiadającej event_id=10 jest email cos@cos.pl tu mam problem. Ciężko było tak od razu napisać? Jakbyś napisał to już dawno byś dostał taką odpowiedź:to dodaj ten drugi warunek do zapytania: event_id='{$row->id}' and email='cos@cos.pl' I trochę luzu na przyszłość. Nikt cię tu za idiotę nie uważa. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie wyjaśniłem w pierwszym poście o co mi chodzi. Prosiłem o wskazówki a nie o podanie na tacy. W zasadzie to dostałem:D Dziękuję za odpowiedź. W międzyczasie wymyśliłem inne rozwiązanie. Szkoda, że główkowałem nad tym zamiast poszukać innego rozwiązania
![]() ps.ja mam sporo luzu, ale czasem na tym forum odnoszę wrażenie, że moglibyście je wyłączyć i napisać na głównej odsyłamy do manuala ![]() pozdrawiam |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Dokładnie wyjaśniłem w pierwszym poście o co mi chodzi. Wybacz, może nie doczytałem. Skupiłem się na błędzie, który powodował wywalenie się zapytania.Cytat ale czasem na tym forum odnoszę wrażenie, że moglibyście je wyłączyć i napisać na głównej odsyłamy do manuala Forum nie jest od wyjasniania totalnych podstaw. Jak ktoś ma z tym problem, a ty z tym stringiem miałeś, to podajemy mu link, gdzie może się dokształcić. Czemu mamy wyjasniać komuś coś, co jest już wyjaśnione i opisane na przykładach w dokumentacji i dany user powinien w pierwszej kolejności tam zajrzeć.Cytat if (in_array( $email, $rec)) { To jest nieoptymalne. Zrób tak jak ja ci podałem. Nie ma sensu pobierać z bazy rekordów tylko po to by potem w php i tak to wszystko sprawdzać. Lepiej by to baza wykonała pracę za ciebie i zwróciła tylko to co potrzebujesz. Ucz się pisać optymalnie i luz chłopie ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dwa pytania średnio odbiegające od tematu. Co do optymalizacji kodu. Czy jest aż taka różnica czy to się wykona w php czy bezpośrednio w bazie? W zasadzie i tak wykona się na tym samym serwerze. Druga sprawa czy ma sens o tym rozmyślać kiedy zamierzam pobierać z bazy maksymalnie 20-30 wpisów przy zapytaniu?
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Widać nigdy nie miałeś do czynienia z sytuacjami, gdy:
- serwer SQL był na innej, DEDYKOWANEJ maszynie - rąbnąłeś się w zapytaniu i dostałeś tak ze 100 razy więcej danych (100*1=100, 100*20=2000). Pod rozwagę: - zapytania SQL w zasadzie mogą być spowolnione tylko przez narzut potrzebny na odczytanie danych z dysku (+lagi na sieci, ale dla localhosta to nie problem) - najprostszy test: policz posty na dowolnym forum, zarówno w wersji zliczania wprost w zapytaniu SQL, jak i w obróbce danych przez PHP. Jako przykład weź różne fora, z tym włącznie (strona główna forum zeznaje: "Nasi użytkownicy napisali 874 541 postów"). Weź pod uwagę, że dla każdego z tych postów w wersji z liczeniem w PHP musisz przetransferować dane każdego posta, z treścią włącznie. Zaświeciła się czerwona lampka? |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 2.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Przepaliła się prawie.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.06.2025 - 20:27 |