Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Skrypt poczatkujacego - pomoc
Forum PHP.pl > Forum > Przedszkole
oleQ
Witam 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.
luck
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>
oleQ
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 winksmiley.jpg Oraz jeszcze jedno pytanko, ktore juz zreszta zadalem. Jak poinformowac, albo cos 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..
emtiej
włącz sobie error_reporting na all, źle odwołujesz się do zmiennej statycznej (self: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.
luck
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.
oleQ
Tylko jestem ciekaw po co 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 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. }
bobo168
  1. function dodajpunkt() {
  2. ++$punkt;
  3. echo $punkt;
  4. }

i tyle..
luck
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ć winksmiley.jpg
mortus
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>
oleQ
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? winksmiley.jpg
mortus
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? winksmiley.jpg
Dodajemy kolejne rekordy za pomocą INSERT-a, choć wydaje mi się, że prowadzenie historii wyników wymagałoby raczej osobnej tabeli.
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.