![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 3 Dołączył: 26.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Jestem amatorem jeśli chodzi o php i mysqla, uczę się go od kilku dni. Problemem nie jest dla mnie składnia php, bo dobrze znam składnię C++, która jest podobna, lecz ogranicza mnie wyobraźnia... Mianowicie, chciałem zrobić sobie taką mini grę. Tzn rejestrujesz się, logujesz i masz jakąś tam postać, której możesz rozdać np 20 statystyk (np do siły, zręczności itp). Potem, wybierasz innego usera i walczysz z nim. Stworzyłem (a raczej połączyłem 2 i przerobiłem lekko) system logowania i rejestrowania. I tutaj zaczyna się problem. Może po kolei. Tabela do logowania wygląda tak:
Podczas rejestracji, zapisywany jest login oraz zakodowane md5 hasło. No i co dalej? Myślę, że stworzyć tabelę np wojownik, w której będzie wojownik_id, user_id (z tabeli users), sila, zrecznosc etc... I tu się już gubię... Nie wiem jak powiązać te tabele, tak, by jak ktoś zalogiuje się swoim loginem i haslem, zobaczył statystyki czyli nick, sila itp tylko swojego wojownika. Tzn logując się by miał dostęp do swojej postaci i jej statystyk, które są zapisane w innej tabeli. Nie wiem nawet jak wyświetlić owe statystyki przypisane do zalogowanego użytkownika. Prosiłbym o pomoc, za którą bardzo bym podziękował. Jeśli potrzeba, wrzucę kod wszystkich obecnych plików. Ten post edytował batman 26.06.2008, 15:05:04
Powód edycji: poprawiłem temat
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wiesz, ogólnie trudno będzie przeprowadzić dla Ciebie cały kurs języka sql i powiązania go z php. Poucz się za pomocą jakiegoś kursu tworzyć bardziej złożone zapytania, to czasem może być fajna zabawa
![]() tak na szybko najprostsze zapytanie wybierające wojowników użytkownika numer 1 to:
Nie wiem jak logujesz co prawda, ale pewnie do user_id gdzies tam dostęp masz. Jesli nie masz, to wyłuskaj go z zapisywanych podczas logowania danych. Jeśli w tabeli wojownik dasz identyfikator usera, to te dwie tabele już automatycznie będą połączone ze sobą. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 3 Dołączył: 26.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedź to po pierwsze.
Next to, jaki kurs byś polecał? Przerabiałem już sporo, może jakiś ominąłem. Widzisz, zapytanie, które mi napisałeś miałem już wcześnej, ale chodzi mi o to, by php z mysqlem automatycznie łączyło statystyki z zalogowanym userem. Tzn, nie aby ręcznie podawać id, bo nie mam pojęcia przecież jakie ktoś może mieć id, tylko, że jak logujesz się np masz user_id=12, to jak wypisać dla tego usera informacje z tabeli wojownik? Aby nie ręcznie ustawiać user_id, tylko automatycznie? Sorry, że tak nie po ludzku napisane, ale nie wiem sam dokładnie jak to wytłumaczyć. Dzięki :-) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie - jak się logujesz masz id (pisałam o tym wcześniej, być może za mało wyraźnie). Zapisz sobie gdzieś to id (na przykład w zmiennej, w sesji, byle nie w ciastku, bo mało bezpieczne). I potem zamiast na stałe wpisywać user_id = 1 wpisz user_id = $zmienna_z_id
http://manta.univ.gda.pl/~postkurs/wyklad.html#od3 - tutaj masz co nieco, z tego co się zdążyłam zorientować dość przystępnie napisane, w tym i o złączeniach tabel http://kursy.skryptoteka.pl/kurs.php?kurs=sql&strona=1 - tutaj masz całą możliwą składnię select Jeszcze poczytaj sobie na wszelki wypadek o podzapytaniach. Nie wiem które przerobiłeś, jeśli te również, to po prostu kombinuj. I nie zapominaj o sile zmiennych w phpie, i o tym, że z bazy danych możesz wyciągnąć każdy potrzebny Ci rekord - w tym i po zalogowaniu jakiegoś usera id tego usera. ps. Kobietą jestem ^^ |
|
|
-Namariee- |
![]()
Post
#5
|
Goście ![]() |
Ja wiem o co Tobie chodzi
![]() Ja na przykład męczyłem się jak według zalogowanego usera wyciągnąć ile ma ziemi, jedzenia, drewna itd. Zrobiłem to tak:
I tam gdzie chcesz wstawić to co się ma wyświetlać na przykład siła:
Oczywiście '".$_SESSION['logowanie']."' musisz zastąpić tak jaką Ty masz zrobioną sesję. Mam nadzieję że to jakoś Tobie pomogło. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 3 Dołączył: 26.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Shili, wybacz, nie zwróciłem uwagi na płeć. Mea culpa :-P
Btw, tych kursów nie widziałem, na pewno przestudiuję, dzięki ![]() Namariee, nie do końca rozumiem. Ty podałeś przykład z jedną tabelą chyba, tak? I tak dla pewności czy wszystko jest OK (bo lekko zmieniłem system logowania z jakiegoś kursu), wstawię kod plików php i zaraz po tym zabieram się za czytanie ![]() index.php
rejestracja.php
ustawienia.php
sprawdz.php
main.php
Btw, przydała by się na forum opcja ukrywania i pokazywania części postu, po kliknięciu w button. ![]() Chciałem też przeprosić, jeśli coś powinienem załapać, a nie załapałem ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 1 Dołączył: 26.06.2008 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Tak podałem przykład z jedną tabelą, ale to chyba nie problem zrobić takie coś z dwoma tabelami
![]() Jeśli masz sesje według loginu to tym bardziej jest łatwo to zrobić. Masz tak jak napisałeś tabele users
Robisz drugą tabelę na przykład wojownik
Wtedy podczas rejestracji musisz dodać kolejne zapytanie aby dodał Tobie w tabeli wojownik user_id i user_login takie same dane jak w tabeli users ![]() I robisz tamte zapytanie co jest podane wyżej
I wstawiasz gdzieś na stronie to co chcesz wyświetlić czyli jego Siłę i życie
Ten post edytował Namariee 26.06.2008, 11:52:15 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 3 Dołączył: 26.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak jak mówiłeś (mam nadzieję).
Nie byłem pewny tylko co do tego "$_SESSION['logowanie']" co napisałeś, chyba chodziło Ci o stworzenie w indexie $_SESSION['login'] i przekazanie jej wartości zmiennej $login, a potem sprawdzenie: $wynik2 = mysql_query("SELECT * FROM wojownik WHERE login='".$_SESSION['login']."'"); tak? Stworzyłem w indexie czyli w miejscu logowania zmienną sesji o nazwie login, przypisałem jej wartość w tym miejscu:
Moj plik main.php gdzie mają być wypisywane statystyki wygląda teraz tak:
No i gdy się rejestruję (oczywiscie podczas rejestracji wysyłam do bazy dane z id, loginem, siłą i zyciem jak pisałeś) i loguję potem, próbuję wejśc na main.php i wyskakuje taki błąd: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in sciezka/main.php on line 13 Trochę się już zagmatwałem :/ |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Masz błędne zapytanie, sprawdź, czy nie popełniłeś jakiejś literówki, czy masz w bazie tabelę z polami o takiej nazwie, jaką zadeklarowałeś w zapytaniu.
Wypisz sobie zapytanie na ekran, na przykład przez echo (sam ciąg znaków) i spróbuj przekleić do phpMyAdmina, sprawdź czy działa. W ogóle spróbuj wyświetlić i porównaj to z tym, co chciałeś otrzymać. @edit Widać, że czytałeś sobie o bezpieczeństwie kodu, ale trzeba tutaj nadmienić, że ten wcale nie jest bezpieczny. htmlspecialchars używa się przy wyświetlaniu wyników, a przy dodawaniu do bazy o wiele lepsza jest mysql_real_escape_string. Ten post edytował Shili 26.06.2008, 14:17:27 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 3 Dołączył: 26.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nooo
![]() Na razie kończę bo mi już głowa paruje ![]() Dzięki Shili oraz Namariee za pomoc. Jak będę miał kolejne pytania odnośnie dalszej pracy nad gierką, nie omieszkam zapytać ![]() Miłego dnia, odezwę się potem tutaj. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.07.2025 - 02:58 |