Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Skrypt poczatkujacego - pomoc
oleQ
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 3.04.2010

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


Witam (IMG:style_emoticons/default/winksmiley.jpg)
Jestem bardzo poczatkujacy, nie tylko z PHP ale i z programowaniem. Chcialbym sie nauczyc tego jezyka, ale bez pomocy watpie by zakonczyloby sie to powodzeniem.
Wiec, do rzeczy.
Dla praktyki napisalem maly skrypt, ktory dodawalby punkty po nacisnieciu na przycisk dla danej druzyny (chodzi o siatkowke ;D). I np. mozna by tego uzyc do transmisji na zywo.
Ale jest pewien problem, poniewaz nie wiem jak to napisac, ze akurat PO NACISNIECIU przycisku, funkcja zaczyna dzialac.
Kod funkcji to:
  1. function dodajpunkt() {
  2. static $punkt = 1;
  3. echo $punkt;
  4. $punkt++;
  5. }

A cala strona (samo body):

  1. <center><font size="15"><b>
  2. Asseco Resovia vs. SKRA Belchatow</font></b></center>
  3. <br>
  4. <br>
  5. <p>Punkty:
  6. <?php
  7. function dodajpunkt() {
  8. static $punkt = 1;
  9. echo $punkt;
  10. $punkt++;
  11. }
  12. ?>
  13. </p>
  14. <p>Sety:
  15. </p>
  16. <form method="post" action="resovia.php">
  17. RESOVIA <input type="checkbox" name="res">
  18. <input type="Submit" name="ok" value="OK">
  19. <input type="checkbox" name="skra"> SKRA
  20. </form>
  21. </body>

Takze, jak widac ta funkcja to jedyne w sumie co umialem napisac i nawet pewnie nie jest do konca poprawna ;)Uzylem checkbox, bo cos tam probowalem wykombinowac z 'value', ale mysle ze przycisk 'SUBMIT' z odpowiednim tekstem bylby lepszym pomyslem.
Z gory dziekuje za pomysly i poprawki ;p Wkoncu uczymy sie na bledach.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
luck
post
Post #2





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Takie coś mniej więcej. Traktuj to bardziej jako podpowiedź niż gotowca. Musisz zadbać by sesja została odpowiednio zainicjalizowana i nie wygasła w trakcie meczu, ale w siatkówce raczej nie ma długich przerw. Oczywiście najlepiej byłoby zapisywać to do bazy. Ale najpierw spróbuj prostszego sposobu.
  1. //resovia.php
  2.  
  3. function dodajpunkt($team) {
  4. ++$_SESSION['points'][$team];
  5. }
  6.  
  7. if(isset($_POST['team']))
  8. dodajpunkt($_POST['team']);
  9.  
  10. print_r($_SESSION);

  1. <form method="post" action="resovia.php">
  2. RESOVIA <input type="checkbox" name="team" value="res">
  3. <input type="Submit" name="ok" value="OK">
  4. <input type="checkbox" name="team" value="skra"> SKRA
  5. </form>
Można jeszcze tak:
  1. <form method="post" action="resovia.php">
  2. <input type="Submit" name="team" value="RESOVIA">
  3. <input type="Submit" name="team" value="SKRA">
  4. </form>


Ten post edytował luck 3.04.2010, 08:25:44
Go to the top of the page
+Quote Post
oleQ
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 3.04.2010

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


Dzieki za podpowiedzi, tylko mam pytanie, po co do tego uzywac az sesji?
Nie mozna po prostu uzyc funkcji? Przeciez te dane ciagle ulegaja zmianie i potrzeba tylko dodawac jeden caly czas (IMG:style_emoticons/default/winksmiley.jpg) Oraz jeszcze jedno pytanko, ktore juz zreszta zadalem. Jak poinformowac, albo cos (IMG:style_emoticons/default/biggrin.gif) nie wiem jak to sie dokladnie nazywa, ale chodzi o to, ze jak nacisne akurat RESOVIA (na podst. ostatniego kodu html), to bedzie wiedziec ze przyznac punkty resovii. Jak wgl zmusic to DO przyznania tych funkcji. if? z $_POST nie dziala..

Ten post edytował oleQ 3.04.2010, 17:27:20
Go to the top of the page
+Quote Post
emtiej
post
Post #4





Grupa: Zarejestrowani
Postów: 207
Pomógł: 18
Dołączył: 12.04.2009
Skąd: Rypin

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


włącz sobie error_reporting na all, źle odwołujesz się do zmiennej statycznej (self:(IMG:style_emoticons/default/smile.gif) w poniższym kodzie

  1. function dodajpunkt() {
  2. static $punkt = 1;
  3. echo $punkt;
  4. $punkt++;
  5. }


Cytat
Dla praktyki napisalem maly skrypt, ktory dodawalby punkty po nacisnieciu na przycisk dla danej druzyny (chodzi o siatkowke ;D). I np. mozna by tego uzyc do transmisji na zywo.


Ok, tylko kolega wyżej podał przykład na sesji, którą widzisz tylko ty, nikt więcej. Zrób sobie prostą klasę która będzie łączyła się z bazą, dodawała punkt danej drużynie, odejmowała je itp. A jeżeli jeszcze OOP nie próbowałeś no to na funkcjach.
Go to the top of the page
+Quote Post
luck
post
Post #5





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Cytat(emtiej @ 3.04.2010, 18:24:28 ) *
Ok, tylko kolega wyżej podał przykład na sesji, którą widzisz tylko ty, nikt więcej. Zrób sobie prostą klasę która będzie łączyła się z bazą, dodawała punkt danej drużynie, odejmowała je itp. A jeżeli jeszcze OOP nie próbowałeś no to na funkcjach.

Słuszna uwaga, skoro wyniki mają być prezentowane innym osobom to oczywiście powinieneś w miejsce sesji użyć innego kontenera choćby "static". Zaznaczyłem, że to co podałem to nie gotowiec, a tylko przykład, jak w prosty sposób można ugryźć temat. Wiadomo, baza danych byłaby tu świętym i najsolidniejszym rozwiązaniem.
Go to the top of the page
+Quote Post
oleQ
post
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 3.04.2010

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


Tylko jestem ciekaw po co (IMG:style_emoticons/default/winksmiley.jpg) Wlasnie przerabiam baze danych, wiec cos sprobuje wykombinowac. Naprawde dla takiego malego skryptu trzeba az baze wykorzystywac? Ja mialem pomysl na "nadpisywanie" zmiennej po prostu (IMG:style_emoticons/default/winksmiley.jpg) Plus warunki i sprawa gotowa, ale bardzo mozliwe, ze jednak jestem zbut poczatkujacy. W kazdym razie, sprawe przyciskow rozpracowalem.
Mam funkcje, ktora powinna dodawac te punkty, ale za kazdym jednak razem podaje 1.
  1. function dodajpunkt() {
  2. static $punkt = 0;
  3. ++$punkt;
  4. echo $punkt;
  5. }

Warunek:
  1. if ($_POST['team'] == 'RESOVIA') {
  2. dodajpunkt();
  3. }


Ten post edytował oleQ 3.04.2010, 23:30:12
Go to the top of the page
+Quote Post
bobo168
post
Post #7





Grupa: Zarejestrowani
Postów: 201
Pomógł: 9
Dołączył: 23.08.2006

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


  1. function dodajpunkt() {
  2. ++$punkt;
  3. echo $punkt;
  4. }

i tyle..
Go to the top of the page
+Quote Post
luck
post
Post #8





Grupa: Zarejestrowani
Postów: 317
Pomógł: 58
Dołączył: 6.11.2005

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


Zastanów się chwilę. Twoja funkcja:
  1. function dodajpunkt() {
  2. static $punkt = 0;
  3. //...
  4. }

Przecież przy każdym wywołaniu w podanej linii zerujesz licznik, więc zawsze po dodaniu punktu dostaniesz wynik 1. Co do użycia bazy to nie chodzi o to, czy skrypt jest mały, czy nie. Ważne, że ma działać tak jak oczekujesz i być przy tym niezawodny. Poza tym możesz dzięki temu prowadzić historię wyników spotkań, odtwarzać przebieg meczów punkt po punkcie itp. Możliwości jest wiele, trzeba tylko pomyśleć (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
mortus
post
Post #9





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Po co baza danych? A no po to, żeby inny użytkownik, który wejdzie na tę Twoją stronę mógł zobaczyć aktualny wynik, bo chyba o to chodzi w skrypcie relacji na żywo. Tymczasem, gdy zastosujesz wszystkie "dobre" wymienione wyżej sposoby, to nawet jeśli będą one skuteczne, to będą działać tylko dla Ciebie. Nikt inny nie zobaczy, że dodałeś punkt jednej, czy drugiej drużynie. Formularz można nieco uprościć i plik może wyglądać tak (nazwa pliku results.php):
  1. <?php
  2. if(!empty($_POST)) {
  3. if($_POST['dodaj'] == 'resovia') {
  4. // UPDATE BAZY DANYCH - DODAJEMY PUNKT RESOVII
  5. }
  6. if($_POST['dodaj'] == 'skra') {
  7. // UPDATE BAZY DANYCH - DODAJEMY PUNKT SKRZE
  8. }
  9. }
  10. // WYBIERAMY Z BAZY DANYCH AKTUALNY WYNIK I ZAPISUJEMY PUNKTY DRUŻYN DO ZMIENNYCH
  11. $punkty['resovia'] = ;
  12. $punkty['skra'] = ;
  13. ?>
  14. <form action="results.php" method="post">
  15. <button type="submit" name="dodaj" value="resovia">Dodaj punkt</button> RESOVIA <?php echo $punkty['resovia']; ?> - <?php echo $punkty['skra']; ?> SKRA <button type="submit" name="dodaj" value="skra">Dodaj punkt</button>
  16. </form>
Go to the top of the page
+Quote Post
oleQ
post
Post #10





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 3.04.2010

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


Super. Wlasnie przerabiam baze danych to chetnie to wybrobuje. Dzieki za odpowiedzi i pomoc.
A luck wspomnial, ze mozliwe byloby przeprowadzenie historii wynikow. Wtedy nie mozna nadpisywac (udpate'owac) bazy, tylko? (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
mortus
post
Post #11





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Cytat(oleQ @ 5.04.2010, 21:37:13 ) *
A luck wspomnial, ze mozliwe byloby przeprowadzenie historii wynikow. Wtedy nie mozna nadpisywac (udpate'owac) bazy, tylko? (IMG:style_emoticons/default/winksmiley.jpg)
Dodajemy kolejne rekordy za pomocą INSERT-a, choć wydaje mi się, że prowadzenie historii wyników wymagałoby raczej osobnej tabeli.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 16:38