Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Skrypt adpocji
Wampir
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


Witam wszystkich.
Otóż jestem w trakcie pisania prostej strony, która pozwala użytkownikowi zaadoptować zwierzątko i rozwijać je.

Nie mam kompletnie pomysłu jak miałby wyglądać skrypt adopcji. Chodzi o to, że użytkownik zarejestrowany oczywiście może zadoptować maxymalnie 3 zwierzątką.

np.

1x Amstaff
1x York
1x Ratlerek

Każdy nowo zadoptowany zwierzaczek ma domyślny poziom 1.
Potem napiszę skrypt, który umożliwi dokarmianie ich.

I tu pojawia się moje pytanie jak najlepiej wykonać taki skrypt adopcji.

Jakie pola do bazy, nowa tabelka?
Od czego zacząć ten skrypt - od sprawdzenia czy jest zalogowany to na pewno. smile.gif
Go to the top of the page
+Quote Post
3 Stron V   1 2 3 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Od czego zacząć ten skrypt - od sprawdzenia czy jest zalogowany to na pewno
90% pracy za tobą.... wink.gif

Tabele:
user
zwierzak
user_zwierzak - ta tabela będzie łączyć usera z adoptowanym zwierzakiem. Ma miec pola:
ID_USER
ID_ ZWIERZAK



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

"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
Wampir
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


No to jedziemy z kolejnymi - pewnie dla Was banalnymi pytaniami.

Tabela users:
ID, Login, Hasło, Email.

Tabela adoptions:
login, zwierzak, id_login, id_zwierzak

Mniej więcej tak to miałoby wyglądać?
User u Ciebie to login u mnie.

ID_Login oraz ID_Zwierzak mają się automatycznie dodawać?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




W tabeli adoptions te dwa pola:
login, zwierzak,
są totalnie zbędne.

Cytat
ID_Login oraz ID_Zwierzak mają się automatycznie dodawać?
No Twój skrypt ma je tworzyć gdy ktos będzie adoptował zwierzaka. Wówczas ty masz wygenerować rekord w tabeli adoptions


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

"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
Wampir
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


  1. CREATE TABLE `adoptions` (
  2. `id_login` mediumint(8) NOT NULL auto_increment,
  3. `id_pet` mediumint(8) NOT NULL auto_increment,
  4. `pet_name` varchar(25) NOT NULL,
  5. PRIMARY KEY (`id_pet`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;


id_login musi być takie same jak id usera z tabelki users.
id_pet będzie tworzyło się automatycznie gdy użytkownik stworzy nowego zwierzaczka.
pet_name użytkownik będzie za pomocą formularzu nadawał imię zwierzaczkowi. Max 25 znaków.

Myślę, że dobrze zrozumiałem? wink.gif
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




źle...
w tabeli adoptions nie ma być żadnych autoincrement. Wartości tych pól będziesz nadawał Ty.
Kluczem głównym ma być klucz złozony (id_login, id_pet)

pet_name - ok

Cytat
id_pet będzie tworzyło się automatycznie gdy użytkownik stworzy nowego zwierzaczka.
Sądziłem, że zwierzaki już będziesz miał w bazie. Czyli masz np. w tabeli PET zwierzaki:
tygrys,
małpa
wąz
.....

A koleś wybiera z nich co adoptuje
Powód edycji: [nospor]:


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

"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
Wampir
post
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


  1. CREATE TABLE `adoptions` (
  2. `id_login` mediumint(8) NOT NULL,
  3. `id_pet` mediumint(8) NOT NULL,
  4. `pet_name` varchar(25) NOT NULL,
  5. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;


Czy po prostu z varcharem mam to zrobić - co jak co, ale w zapytaniach jestem cieńki.

Cytat
Sądziłem, że zwierzaki, a raczej ich rodzaje/gatunki już będziesz miał w bazie. Czyli masz np. w tabeli PET zwierzaki:
tygrys,
małpa
wąz
.....

A koleś wybiera z nich co adoptuje


Hmm tym systemem staram wzorować się na skrypcie Smoki.Nightwood.net po wejściu w adopt.php użytkownik widzi 3 pola.

- Wąż
- Tygrys
- Żółw

No i wybiera sobie np. Węża i klika dalej, a potem ma puste pole, w ktorym może wpisać pet_name - czyli nazwę zwierzątka.
No i oczywiście na jednego użytkownika przypada max 3 zwierzątka.
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ok, czyli nie mamy do wyboru zwierzaków jako takich tylko rodzaj zwierzaka.
Tabela adoptions:
ID - klucz główy, autoincrement
ID_LOGIN
ID_PET_TYPE - czyli typ zwierzaka. ID z tabeli PET_TYPE
PET_NAME


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

"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
Wampir
post
Post #9





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


  1. CREATE TABLE `adoptions` (
  2. `id` mediumint(8) NOT NULL auto_increment,
  3. `id_login` varchar(25) NOT NULL,
  4. `pet_type` varchar(25) NOT NULL,
  5. `pet_name` varchar(25) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;


Nie jestem pewny czy tak - zaraz otworzę manual'a mysql..
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




id_login
pet_type

To mają być pola liczbowe a nie varchar. Te pola to ID z odpowiedających im tabel. Nie kombinuj, tylko pisz poprawnie.

I przestan dla pól liczbowych używać (8). To niczemu nie służy.


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

"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
Wampir
post
Post #11





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


Aa, faktycznie.
  1. CREATE TABLE `adoptions` (
  2. `id` mediumint(8) NOT NULL auto_increment,
  3. `id_login` INT (25) NOT NULL,
  4. `pet_type` INT (25) NOT NULL,
  5. `pet_name` varchar(25) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;




Tzn. 8 jest zbędna? wink.gif
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




INT (25)
(25) Tez jest zbędne. Każdla liczba w nawiasie dla pól liczbowych jest zbędna
http://nospor.pl/int11-kontra-int.html


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

"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
Wampir
post
Post #13





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


  1. CREATE TABLE `adoptions` (
  2. `id` mediumint unsigned NOT NULL auto_increment,
  3. `id_login` int unsigned NOT NULL,
  4. `pet_type` int unsigned NOT NULL,
  5. `pet_name` varchar(25) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;


Zastosowałem się do wyjaśnień z Twojej strony
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A czy w tabeli LOGIN id to jest INT czy może MEDIUMINT ? Bo wcześniej pisałeś mediumint. Zdecyduj sie.

Czy typow zwierzaków będziesz miał naprawdę aż kilka miliardów, że dajesz im TYP INT? Myśle, ze tinyint z powodzeniem wystarczy.


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

"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
Wampir
post
Post #15





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


Nie, nie aż tak dużo to nie będzie z 3-4 typy.

  1. CREATE TABLE `adoptions` (
  2. `id` mediumint unsigned NOT NULL auto_increment,
  3. `id_login` mediumint unsigned NOT NULL,
  4. `pet_type` tinyint unsigned NOT NULL,
  5. `pet_name` varchar(25) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=2 ;
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No i super.

Jedyne co mnie draźni to nazwa id_login. Toż to powinno być id_user. Masz tabele user a nie tabele login. Login to pole w tabeli user


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

"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
Wampir
post
Post #17





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


A, właśnie. Co z domyślnymi poziomami ? Nowo stworzony zwierzaczek powinien mieć jeden. Czyli stworzyć nową kolumnę

level i ustawić domyślnie 1 ? snitch.gif

@up
Poprawione

Ten post edytował Wampir 28.02.2012, 14:28:30
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Czyli stworzyć nową kolumnę

level i ustawić domyślnie 1 ?
Tak. Pole level typu tinyint unsigned - zakładam, że więcej niż 255 poziomów mieć nie będziesz. No chyba ,że będziesz, to wówczas daj większe pole


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

"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
Wampir
post
Post #19





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 26.02.2012
Skąd: Wrocław

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


Oj poziomów będzie dużo więcej.

  1. CREATE TABLE `adoptions` (
  2. `id` mediumint unsigned NOT NULL auto_increment,
  3. `id_user` mediumint unsigned NOT NULL,
  4. `pet_type` tinyint unsigned NOT NULL,
  5. `pet_name` varchar(25) NOT NULL,
  6. `level` mediumint unsigned NOT NULL default '1',
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8_general_ci AUTO_INCREMENT=2 ;
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie: default '1'
a: default 1
Skoro dopiero zaczynasz, to ucz się pisać poprawnie. 1 to liczba a nie tekst.

http://dev.mysql.com/doc/refman/5.0/en/integer-types.html
Cytat
MEDIUMINT 3 -8388608 8388607
0 16777215

Kurde, co to za gra, w której ktoś może dojśc do 16mln poziomów? WOW wink.gif
Wiem, czepiam się, ale nie lubie bezsensu nadmiarowych pól.

Cytat
SMALLINT 2 -32768 32767
0 65535
Czy max 65 tys nie jest już wystarczające?


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

"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

3 Stron V   1 2 3 >
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 Aktualny czas: 22.08.2025 - 07:41