Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Przlicznik pieniedzy
Forum PHP.pl > Forum > Przedszkole
Greg0
Więc próbowałem zrobić taki monitor konta bankowego dla kolegi który zbiera pieniądze na serwer.
miało by to wyglądać tak:

Serwer na Shooters.pl 12slotów za miesiac.
1 slot: 3.50zł
Stan konta: 0zł
Koszt: 42zł
Brakuje: 42zł
Narzaie każda z osób powinna wpłacić: 5,25zł

Do wpłaty się zobowiazali:
-

Wplacili:
-


Tu na dole pole zeby dodac chetnego i zeby dodac nick osoby ktora wplacila i ile wplacila i zeby wszystkie pieniadze zostaly przeliczone i wyswietlilo u gory stan konta ile brakuje oraz ile kazda osoba powinna wplacic(zaleznie ile sie zobowiazalo, 42zł przez ilosc osóB) z lista ludzi problemu nie mialem ale z tym przeliczaniem tak i prosiłbym o skrypt jak to zrobić lub naprowadzić, jestem praktycznie zielony w PHP
in5ane
A więc powinieneś zacząć od stworzenia tabeli w bazie danych MySQL, przykładowo o nazwie serwer tak:

pole o nazwie id typu int
pole o nazwie slot typu text
pole o nazwie stan typu text
pole o nazwie koszt typu text

ile brakuje to wyliczymy z tak:
koszt - stan = brakuje <-- odejmowanie
podobnie obliczmy i powinna zapłacić każda osoba:
koszt / ilosc_osob (to weźmiemy z tej drugiej tabeli (poniżej)) = ilosc_wplaty_osoby <-- dzielenie


I teraz trzeba tych zobowiązanych zrobić, a więc tworzymy znów tabele przykładowo o nazwie osoby:

pole o nazwie id typu int
pole o nazwie nick typu text
pole o nazwie id_serwera typu int


Trzeba utworzyć kolejną tabele o nazwie wplacili:

pole o nazwie id typu int
pole o nazwie kto_nick typu text
pole o nazwie id_serwera typu int


I teraz pozostało php. Później Ci powiem co z php, bo teraz muszę mykać.
Greg0
ja budowałem to na plikach tekstowych i chciałbym się tym dalej kierować
in5ane
Czyli mam Ci dalej nie pisać? Wątpię czy coś zdziałasz dobrego na plikach. Jeśli jednak chcesz bym tamto kontynuował to pisz.
Greg0
dobra to dawaj dalej z bazą danych tylko mówie jestem zielony wieć te tabele mam stworzyc ręcznie??
Hazel
tak, polecenie CREATE TABLE...
PhpMyAdmin Ci sie przyda...
Bo pisać ręcznie kod SQL dość niewygodnie jest...
Chcesz kod, czy masz serwer z PhpMyAdminem?
Greg0
spoko w serwer z mysQl jestem zaopatrzony. tylko musze sie dowiedziec jak konkretnie przez to php tabele zrobić winksmiley.jpg
in5ane
Zrób te tabele przez phpMyAdmin <-- jest to skrypt zazwyczaj zawsze na każdym serwerze do obsługi bazy MySQL i tam to porób.

P.S.: Zaraz dalej Ci pomogę z tym przelicznikiem.


----


I teraz jak chcesz wyświetlić informacje o tym serwerze no to dajesz tak:
index.php
  1. <?php
  2. $link = mysql_connect("localhost", "login", "haslo") // tutaj ustaw dane do bazy
  3. or die ("Blad polaczenia z baza");
  4.  
  5. mysql_select_db ("nazwa_bazy") // tutaj wpisz nazwę bazy
  6. or die ("Nie wybrano bazy");
  7.  
  8. echo 'Serwer na Shooters.pl 12 slotów za miesiąc.';
  9.  
  10. $query = "SELECT * FROM serwer"; // tutaj wybieramy tabelę te o nazwie serwer
  11. $result = mysql_query($query); 
  12.  
  13.  
  14. while($row = mysql_fetch_assoc($result)) {
  15.  
  16. $id = $row[id]; $slot = $row[slot]; $stan = $row[stan]; $koszt = $row[koszt];
  17.  
  18. $querys = "SELECT * FROM osoby"; // tutaj wybieramy tabelę te o nazwie osoby
  19. $ilosc_osob = mysql_num_rows($querys);
  20.  
  21. $brakuje = $koszt - $stan;
  22. $ilosc_wplaty_osoby = $koszt / $ilosc_osob;
  23.  
  24. echo '
  25. 1 slot: '.$slot.'<br>
  26. Stan konta: '.$stan.'<br>
  27. Koszt: '.$koszt.'<br>
  28. Brakuje: '.$brakuje.'<br>
  29. Narazie każda z osób powinna wpłacić: '.ilosc_wplaty_osoby.'
  30. ';
  31.  
  32. }
  33.  
  34.  
  35. echo '<br><br>Zobowiązali się do zapłaty:<br>'; // pod tym wyświetlimy tych co się zobowiązali do zapłaty
  36.  
  37. $queryse = "SELECT * FROM osoby"; // tutaj wybieramy tabelę te o nazwie osoby
  38. $results = mysql_query($queryse);
  39.  
  40.  
  41. while($rows = mysql_fetch_assoc($results)) {
  42.  
  43. $id = $rows[id]; $nick = $rows[nick]; $id_serwera = $rows[id_serwera]
  44.  
  45. echo ''.$nick.'<br>';
  46.  
  47. }
  48.  
  49.  
  50. echo '<br><br>Wpłacili:<br>'; // pod tym wyświetlimy tych co dokonali już zapłaty
  51.  
  52. $queryses = "SELECT * FROM wplacili"; // tutaj wybieramy tabelę te o nazwie wplacili
  53. $resultse = mysql_query($queryses);
  54.  
  55.  
  56. while($rowse = mysql_fetch_assoc($resultse)) {
  57.  
  58. $id = $rowse[id]; $kto_nick = $rowse[kto_nick]; $id_serwera = $rowse[id_serwera]
  59.  
  60. echo ''.$kto_nick.'<br>';
  61.  
  62. }
  63.  
  64.  
  65. ?>


P.S.: Aha i w tych polach co masz id_serwera to musisz wpisać numerek id z tabeli o nazwie serwer.
P.S.2: Ja tego nigdzie nie sprawdzałem, wszystko pisałem z głowy, więc mogą być jakieś błędy.
P.S.3: Pięć złoty się należy biggrin.gif
P.S.4: Napisz czy działa smile.gif
Hazel
No, zazwyczaj na każdym jest, ale nie zawsze chyba (chociaż nie znam serwera, na którym by nie było, ale nie jestem szczególnie oblatany w takich tematach jak znajomość 150 dostępnych serwerów WWW, bo w życiu korzystałem zaledwie z kilku...), dlatego się pytałem...

@Greg0
Nie, nie, mi nie chodziło o serwer z MySQL, tylko z PhpMyAdmin...
To trochę różnicy worriedsmiley.gif
Greg0
Ok zrobiłtak jak mówiłeś myśle że dobrze, tu daje screen: http://img254.imageshack.us/img254/3417/soldb3.jpg mam serwer wamp na localhoscie tam jest wszystko az taki tempy nie jestem biggrin.gif

Edit:
Rozumiem że na linii 20 jest literówka zamiast
ilosc_wplaty_osoby = $koszt / $ilosc_osob;
ma być
$ilosc_wplaty_osoby = $koszt / $ilosc_osob;

Edit:
I mam problem z tym id wpisałem 1 bo chyba tak ma być ale nie działa

Edit:
Wyświetla mi dwa bledy:
Kod
Serwer na Shooters.pl 12 slotów za miesišc.

Zobowišzali się do zapłaty:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Grego\Pulpit\WWW\serwer\SERWER\index.php on line 41


Wpłacili:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Grego\Pulpit\WWW\serwer\SERWER\index.php on line 56

pmój plik index (troche poprawiony):
  1. <?php
  2. $link = mysql_connect("localhost", "root", "") // tutaj ustaw dane do bazy
  3.   or die ("Blad polaczenia z baza");
  4.  
  5. mysql_select_db ("SERWER") // tutaj wpisz nazwę bazy
  6.   or die ("Nie wybrano bazy");
  7.  
  8. echo 'Serwer na Shooters.pl 12 slotów za miesiąc.';
  9.  
  10. $query = "SELECT * FROM serwer"; // tutaj wybieramy tabelę te o nazwie serwer
  11. $result = mysql_query($query); 
  12.  
  13.  
  14. while($row = mysql_fetch_assoc($result)) {
  15.  
  16. $id = $row[id]; $slot = $row[slot]; $stan = $row[stan]; $koszt = $row[koszt];
  17.  
  18. $querys = "SELECT * FROM osoby"; // tutaj wybieramy tabelę te o nazwie osoby
  19. $ilosc_osob = mysql_num_rows($querys);
  20.  
  21. $brakuje = $koszt - $stan;
  22. $ilosc_wplaty_osoby = $koszt / $ilosc_osob;
  23.  
  24. echo '
  25. 1 slot: '.$slot.'<br>
  26. Stan konta: '.$stan.'<br>
  27. Koszt: '.$koszt.'<br>
  28. Brakuje: '.$brakuje.'<br>
  29. Narazie każda z osób powinna wpłacić: '.ilosc_wplaty_osoby.'
  30. ';
  31.  
  32. }
  33.  
  34.  
  35. echo '<br><br>Zobowiązali się do zapłaty:<br>'; // pod tym wyświetlimy tych co się zobowiązali do zapłaty
  36.  
  37. $queryse = "SELECT * FROM osoby"; // tutaj wybieramy tabelę te o nazwie osoby
  38. $results = mysql_query($queryse);
  39.  
  40.  
  41. while($rows = mysql_fetch_assoc($results)) {
  42.  
  43. $id = $rows[id]; $nick = $rows[nick]; $id_serwera = $rows[1];
  44.  
  45. echo ''.$nick.'<br>';
  46.  
  47. }
  48.  
  49.  
  50. echo '<br><br>Wpłacili:<br>'; // pod tym wyświetlimy tych co dokonali już zapłaty
  51.  
  52. $queryses = "SELECT * FROM wplacili"; // tutaj wybieramy tabelę te o nazwie wplacili
  53. $resultse = mysql_query($queryses);
  54.  
  55.  
  56. while($rowse = mysql_fetch_assoc($resultse)) {
  57.  
  58. $id = $rowse[id]; $kto_nick = $rowse[kto_nick]; $id_serwera = $rowse[1];
  59.  
  60. echo ''.$kto_nick.'<br>';
  61.  
  62. }
  63.  
  64.  
  65. ?>
in5ane
Tak, tam była literówka. // już poprawiłem

Z tym ID musi działać, i jeżeli żeś takie ID wpisał przy serwie to musisz takie samo dać w tych polach id_serwera.


---odpowiedź---
Po pierwsze żeś nie utworzył tamtych dwóch tabeli.
Po drugie używaj odpowiedniego kodowania do kodu php.
Po trzecie dodaj jakieś testowe dane w bazie.
Greg0
ale jsak mam sprawdzić jakie id ma ta tabela... przegapiłem te dwie tabele juz zrobione bledu nie ma ale id dalej nie wiem
in5ane
Łobosz...

Wejdź no w tego phpMyAdmin. Wybierz no te tabele serwer i tam będziesz miał opcję "DODAJ" i wejdź w to i dodaj jakieś przykładowe dane typu:
id: 1
slot: 1
stan: 10
koszt: 42

I druga sprawa, to utwórz tamte dwie tabele.


---weź ten kod, bo go poprawiłem---

  1. <?php
  2. $link = mysql_connect("localhost", "login", "haslo") // tutaj ustaw dane do bazy
  3. or die ("Blad polaczenia z baza");
  4.  
  5. mysql_select_db ("nazwa_bazy") // tutaj wpisz nazwę bazy
  6. or die ("Nie wybrano bazy");
  7.  
  8. echo 'Serwer na Shooters.pl 12 slotów za miesiąc.';
  9.  
  10. $query = "SELECT * FROM serwer"; // tutaj wybieramy tabelę te o nazwie serwer
  11. $result = mysql_query($query); 
  12.  
  13.  
  14. while($row = mysql_fetch_assoc($result)) {
  15.  
  16. $id = $row[id]; $slot = $row[slot]; $stan = $row[stan]; $koszt = $row[koszt];
  17.  
  18. $querys = "SELECT * FROM osoby"; // tutaj wybieramy tabelę te o nazwie osoby
  19. $ilosc_osob = mysql_num_rows($querys);
  20.  
  21. $brakuje = $koszt - $stan;
  22. $ilosc_wplaty_osoby = $koszt / $ilosc_osob;
  23.  
  24. echo '
  25. 1 slot: '.$slot.' zł.<br>
  26. Stan konta: '.$stan.' zł.<br>
  27. Koszt: '.$koszt.' zł.<br>
  28. Brakuje: '.$brakuje.' zł.<br>
  29. Narazie każda z osób powinna wpłacić: '.ilosc_wplaty_osoby.'
  30. ';
  31.  
  32. }
  33.  
  34.  
  35. echo '<br><br>Zobowiązali się do zapłaty:<br>'; // pod tym wyświetlimy tych co się zobowiązali do zapłaty
  36.  
  37. $queryse = "SELECT * FROM osoby"; // tutaj wybieramy tabelę te o nazwie osoby
  38. $results = mysql_query($queryse);
  39.  
  40.  
  41. while($rows = mysql_fetch_assoc($results)) {
  42.  
  43. $id = $rows[id]; $nick = $rows[nick]; $id_serwera = $rows[id_serwera]
  44.  
  45. echo ''.$nick.'<br>';
  46.  
  47. }
  48.  
  49.  
  50. echo '<br><br>Wpłacili:<br>'; // pod tym wyświetlimy tych co dokonali już zapłaty
  51.  
  52. $queryses = "SELECT * FROM wplacili"; // tutaj wybieramy tabelę te o nazwie wplacili
  53. $resultse = mysql_query($queryses);
  54.  
  55.  
  56. while($rowse = mysql_fetch_assoc($resultse)) {
  57.  
  58. $id = $rowse[id]; $kto_nick = $rowse[kto_nick]; $id_serwera = $rowse[id_serwera]
  59.  
  60. echo ''.$kto_nick.'<br>';
  61.  
  62. }
  63.  
  64.  
  65. ?>
Greg0
tylko jeszcze na tej stronie przewidziałem formularz przez który bede mogl dodac przez strone nick chetnego; nick i kase jaka wplacil
in5ane
To już nie dzisiaj synku... spać....exclamation.gif

I do tych dwóch tabeli też dodaj jakieś dane testowe, tzn.:
do osoby:
id: 1
nick: tester
id_serwera: 1
---drugi rekord---
id: 2
nick: tester
id_serwera: 1

do wplacili:
id: 1
kto_nick: tester
id_serwera: 1


Do jutra, pozdro smile.gif
Greg0
też ide spać bo gówno z tego wychodzi
Oto rezultat czyli nic:
Serwer na Shooters.pl 12 slotów za miesi¹c.

Zobowi¹zali siê do zap³aty:


Wp³acili:
in5ane
Kurde mać... człowieku słuchaj mnie exclamation.gif

Jak Ci każe dodać jakieś testowe informacje do bazy (nawet Ci je napisałem) tzn., że masz tak zrobić.


Czekam, aż zrobisz to co Ci każe, a później pisz w sprawie formularza.


@edit: skasuj te wszystkie tabele, ja jeszcze raz napiszę Ci jak je zrobić (będzie lepiej) i wtedy dodaj te testowe dane.

tabela serwer:

pole o nazwie id typu int (weź no jak będziesz tworzył w polu dodatkowo wybierz auto_increment oraz zaznacz taki kluczyk (obok pola dodatkowo), dzięki temu nie będziesz musiał wprowadzać tutaj nic, będzie się samo robiło)
pole o nazwie slot typu text (pamiętaj, że tutaj możesz dodać tylko coś takiego typu 1,22 albo 13, nie wolno dodawać liter)
pole o nazwie stan typu text (pamiętaj, że tutaj możesz dodać tylko coś takiego typu 1,22 albo 13, nie wolno dodawać liter)
pole o nazwie koszt typu text (pamiętaj, że tutaj możesz dodać tylko coś takiego typu 1,22 albo 13, nie wolno dodawać liter)


tabela osoby:

pole o nazwie id typu int (weź no jak będziesz tworzył w polu dodatkowo wybierz auto_increment oraz zaznacz taki kluczyk (obok pola dodatkowo), dzięki temu nie będziesz musiał wprowadzać tutaj nic, będzie się samo robiło)
pole o nazwie nick typu text
pole o nazwie id_serwera typu int (tutaj numer id serwera (tego z tabeli wyżej))


tabela wplacili:

pole o nazwie id typu int (weź no jak będziesz tworzył w polu dodatkowo wybierz auto_increment oraz zaznacz taki kluczyk (obok pola dodatkowo), dzięki temu nie będziesz musiał wprowadzać tutaj nic, będzie się samo robiło)
pole o nazwie kto_nick typu text
pole o nazwie id_serwera typu int (tutaj numer id serwera (tego z tabeli wyżej))



A teraz powiem Ci jeszcze raz jak masz to wypełnić:


tabela serwer:

id: (tutaj zostawiasz puste, gdyż wypełni to za Ciebie "auto_increment")
slot: 2
stan: 10
koszt: 20


tabela osoby:

id: (tutaj zostawiasz puste, gdyż wypełni to za Ciebie "auto_increment")
nick: tester
id_serwera: (tutaj wpisujesz ID serwera, zależy jakie tam doda "auto_increment")
---drugi rekord---
id: (tutaj zostawiasz puste, gdyż wypełni to za Ciebie "auto_increment")
nick: testerek
id_serwera: (tutaj wpisujesz ID serwera, zależy jakie tam doda "auto_increment")


tabela wplacili:

id: (tutaj zostawiasz puste, gdyż wypełni to za Ciebie "auto_increment")
kto_nick: tester
id_serwera: (tutaj wpisujesz ID serwera, zależy jakie tam doda "auto_increment")



P.S.: Jak to wszystko zrobisz, to napisz jaki rezultat i zajmiemy się formularzem.
Greg0
Ogólnie wychodzi mi dalej to samo, czyli nic; wyświetlił mi się tylko nick testerek. Wogóle jak przypisuje jakąś wartość w pole wartość przy twporzeniu pola to potem jej przy edycji nie ma, a drugi rekord to już kompletnie nie wiem jak zrobić a ten testerek wyskoczył chyba tylko dlatego że dałem u góry dodaj i to tam wpisałem, ogólnie nie ogarniam phpMyAdmin.
Edit:
Ok pojąłem że trzeba po utworzeniu pola dodać jeszcze rekordy więc zrobiłem i dodało ale wyskoczyły tez dwa błędy:
Kod
Serwer na Shooters.pl 12 slotów za miesišc.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Grego\Pulpit\WWW\serwer\SERWER\index.php on line 19

Warning: Division by zero in C:\Documents and Settings\Grego\Pulpit\WWW\serwer\SERWER\index.php on line 22
1 slot: 12 zł.
Stan konta: 0 zł.
Koszt: 42 zł.
Brakuje: 42 zł.
Narazie każda z osób powinna wpłacić: ilosc_wplaty_osoby

Zobowišzali się do zapłaty:
testerek
tester


Wpłacili:
tester


Czyżby zabrakło pola z ilością osób?? bo z tego wywnioskowałem szukając po liniach w pliku
Linia 19 i 22:
  1. <?php
  2. $ilosc_osob = mysql_num_rows($querys);
  3. $ilosc_wplaty_osoby = $koszt / $ilosc_osob;
  4. ?>

i potem sie posypalo wszystko. Dobrze wnioskuje? biggrin.gif
in5ane
Bierz ten kod:

  1. <?php
  2. $link = mysql_connect("localhost", "login", "haslo") // tutaj ustaw dane do bazy
  3. or die ("Blad polaczenia z baza");
  4.  
  5. mysql_select_db ("nazwa_bazy") // tutaj wpisz nazwę bazy
  6. or die ("Nie wybrano bazy");
  7.  
  8. echo 'Serwer na Shooters.pl 12 slotów za miesiąc.';
  9.  
  10. $query = "SELECT * FROM serwer"; // tutaj wybieramy tabelę te o nazwie serwer
  11. $result = mysql_query($query); 
  12.  
  13.  
  14. while($row = mysql_fetch_assoc($result)) {
  15.  
  16. $id = $row[id]; $slot = $row[slot]; $stan = $row[stan]; $koszt = $row[koszt];
  17.  
  18. $querys = "SELECT * FROM osoby"; // tutaj wybieramy tabelę te o nazwie osoby
  19. $ilosc_osob = mysql_num_rows($querys);
  20.  
  21. $brakuje = $koszt - $stan;
  22. $ilosc_wplaty_osoby = $koszt / $ilosc_osob;
  23.  
  24. echo '
  25. 1 slot: '.$slot.' zł.<br>
  26. Stan konta: '.$stan.' zł.<br>
  27. Koszt: '.$koszt.' zł.<br>
  28. Brakuje: '.$brakuje.' zł.<br>
  29. Narazie każda z osób powinna wpłacić: '.$ilosc_wplaty_osoby.'
  30. ';
  31.  
  32. }
  33.  
  34.  
  35. echo '<br><br>Zobowiązali się do zapłaty:<br>'; // pod tym wyświetlimy tych co się zobowiązali do zapłaty
  36.  
  37. $queryse = "SELECT * FROM osoby"; // tutaj wybieramy tabelę te o nazwie osoby
  38. $results = mysql_query($queryse);
  39.  
  40.  
  41. while($rows = mysql_fetch_assoc($results)) {
  42.  
  43. $id = $rows[id]; $nick = $rows[nick]; $id_serwera = $rows[id_serwera]
  44.  
  45. echo ''.$nick.'<br>';
  46.  
  47. }
  48.  
  49.  
  50. echo '<br><br>Wpłacili:<br>'; // pod tym wyświetlimy tych co dokonali już zapłaty
  51.  
  52. $queryses = "SELECT * FROM wplacili"; // tutaj wybieramy tabelę te o nazwie wplacili
  53. $resultse = mysql_query($queryses);
  54.  
  55.  
  56. while($rowse = mysql_fetch_assoc($resultse)) {
  57.  
  58. $id = $rowse[id]; $kto_nick = $rowse[kto_nick]; $id_serwera = $rowse[id_serwera]
  59.  
  60. echo ''.$kto_nick.'<br>';
  61.  
  62. }
  63.  
  64.  
  65. ?>


Pisz dalej, jak nie działa.


@edit: Teraz się skapnąłem, że trzeba jeszcze raz tabele przerobić i trochę kod, ale to już jutro. Zmęczony po meczu Widzewa i oglądam Sopot Festiwal.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.