Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] $_POST
Forum PHP.pl > Forum > PHP
Lethys
Mam problem , pisze gre i chce zrobc skrypt karmienia

Tutaj kod karmienie.php


  1. <?php include("config.php"); ?>
  2. <?php
  3. $stat = mysql_fetch_array(mysql_query("select * from players where email='$email' and pass='$pass'"));
  4. ?>
  5. <form method=post action=karmienie.php?action=karmienie>
  6. <center><br><br>Czym chcesz karmic ?<br><input type="radio" name=karmienie><option value=sila>Wodorosla ze Smoczej Przeleczy ( dodaje sily )</option><br><input type="radio" name=karmienie><option value=zrecznosc>Jajecznica z gryfinich jaj ( dodaje zrecznosc )</option></select><br><br> 
  7. <input type=submit value=Nakarm>
  8. </form>
  9.  
  10. <?php
  11. if($_POST['karmienie'] == karmienie) {
  12.  
  13.  
  14. if ($stat['glod'] < 1) {
  15. print "<br><br>Twoja Kreatura nie jest glodna !";
  16. }
  17. mysql_query("update players set glod=0 where id=$stat[id]");
  18. mysql_query("update players set $karmienie=$karmienie+1 where id=$stat[id]");
  19. print "<br><br>Twoja kreatura zyskala <b> 1 pkt</b> wybranej umiejetnosci.";
  20.  
  21. }
  22. ?>



Chodzi mi o to ze co reset glod ustawiany jest na 1 i kiedy sie karmi odejmujemy glod=glod-1 , czyli bedzie mozna karmic raz dziennie . Wydaje mi sie ze nie ma bledu w kodzie a mimo wszytsko nie dziala sad.gif
gszesiek
pokaż błąd
revyag
Co to za temat topicu ? Proszę poprawić albo zamknę.

  1. <?php
  2. if($_POST['karmienie'] == karmienie)
  3. ?>

Co to jest ? Skad ta zmienna post, co to jest karmienie questionmark.gif Zmienna, stała ?
erix
@revyag:
Cytat
Skad ta zmienna post

Cytat
  1. <form method=post action=karmienie.php?action=karmienie>
  2. <center><br><br>Czym chcesz karmic ?<br><input type="radio" name=karmienie><option value=sila>Wodorosla ze Smoczej Przeleczy ( dodaje sily )</option><br><input type="radio" name=karmienie><option value=zrecznosc>Jajecznica z gryfinich jaj ( dodaje zrecznosc )</option></select><br><br>
  3. <input type=submit value=Nakarm>
  4. </form>


@[Lethys]:
http://pl.php.net/manual/pl/language.types.string.php
Lethys
Bledu nie ma poprostu nic sie nie dzieje a co do nazwy tematu to nie wiem jak nazwac moze cos zaproponuj ...
fx69
sprobuj:
  1. <?php
  2. if(isset($_POST['karmienie'])) {
  3. $karmienie = $_POST['karmienie'];
  4. ...
  5. ?>
Lethys
Dziwne bo teraz wyskakuje "ze kreatura nie jest glodna"

A przeciez warunek jest = ($stat['glod'] < 1)

Specjalnie sprawdzalem jeszcze raz w bazie i jest rowny 1 sad.gif
gszesiek
napisz sobie przed if'em smile.gif echo $stat['glod']; i będziesz wiedział co masz
erix
Cytat
<?php
$stat = mysql_fetch_array(mysql_query("select * from players where email='$email' and pass='$pass'"));
?>


Co wywala mysql_error" title="Zobacz w manualu php" target="_manual?
Sprawdź jeszcze co znajduje się w $stat.
Lethys
Nie ma zadnego bledu a co do $stats to napewno dobrze bo w innych funkcjach dziala dobrze ..

A moze jest inny sposob na to co chce stworzyc.Chodzi mi o to zeby wybieralo sie jedna z 2 opcji ( sila lub zrecznosci ) i przy wykonywaniu akcji odejmowala $glod=$glod - 1 . No i zeby zabespieczyc jak $glod=0 to nie mozna nakarmic .

Tym razem zrobilem prosty kod karmienia

  1. <?php
  2.  
  3. include("config.php");
  4. $stat = mysql_fetch_array(mysql_query("select * from players where email='$email' and pass='$pass'"));
  5.  
  6. if ($stat['glod'] == 0) {
  7. print "<br><br>Twoja Kreatura nie jest glodna !";
  8.  
  9. }
  10.  
  11. if ($stat['glod'] == 1) {
  12.  
  13.  
  14.  
  15. mysql_query("update players set glod=0 where id=$stat[id]");
  16. mysql_query("update players set $stat[zrecznosc]=$stat[zrecznosc]+1 where id=$stat[id]");
  17. mysql_query("update players set $stat[nastroj]=$stat[nastroj]+1 where id=$stat[id]");
  18. print "<br><br>Twoj chowaniec zyskal jeden punkt zrecznosci!";
  19.  
  20. }
  21.  
  22.  
  23. ?>


I wyskakuje ten sam blad czyli ze chowaniec nie jest glodny a glod w bazie jest rowny 1 sad.gif Juz naprawde nie wiem co jest grane ...
erix
Cytat
No i zeby zabespieczyc jak $glod=0 to

bez komentarza

Cytat
  1. <?php
  2. mysql_query("update players set glod=0 where id=$stat[id]");
  3. mysql_query("update players set $stat[zrecznosc]=$stat[zrecznosc]+1 where id=$stat[id]");
  4. mysql_query("update players set $stat[nastroj]=$stat[nastroj]+1 where id=$stat[id]");
  5. ?>


Zamiast nazw pól po SET podajesz wartość=wartość...
Lethys
To nie ma znaczenia

Btw . zmienilem dla sprawdzenia i ten sam blad ...
D4rky
Wy wszyscy pieprzycie PIERDOŁY, a błąd widać na kilometr
Na początek
  1. <?php
  2. $stat = mysql_fetch_array(mysql_query("select * from players where email='$email' and pass='$pass'"));
  3. ?>

Już tutaj masz 2 błedy w samym stylu pisania, i opieprzę cię tak dla pewności tongue.gif Jeśli uzywasz $stat['nazwa'], to stosuj fetch_assoc nie array. Poaz tym '".$email."' jak już winksmiley.jpg

Dalej:
  1. <?php
  2. if($_POST['karmienie'] == karmienie) {
  3. ?>

Powinno ci wywalić undefined const karmienie. Nie dałeś "", więc php łapie karmienie jako stałą (define i te sprawy).

No i jeszcze
  1. <?php
  2. mysql_query("update players set glod=0 where id=$stat[id]");
  3. mysql_query("update players set $karmienie=$karmienie+1 where id=$stat[id]");
  4. ?>

Po pierwsze jak już mówiłem "'.$stat['id']."' (tutaj dodatkowo zgubiłeś ' ' w $stat), a drugi błąd polega na tym, że chcesz zmienić zmienna SQLa czyli karmienie, a łapiesz tam zmienną PHPową czyli $karmienie, której nigdzie tu nie widzę. Wywal $ w obu karmieniach i będize ok.

No i na drugi raz przyjdź najpierw do mnie, bo widzisz, że tu nikt pomóc nie chce dry.gif
jarrod
Dodam od siebie że bez sensu jest robić kilka zapytań tego samego tympu do tej samej bazy...
  1. <?php
  2. $sql = "update players set glod=0,karmienie=karmienie+1,zrecznosc=zrecznosc+1 where id={$stat[id]}";
  3. ?>

Wówczas zamiast 3 zapytań masz tylko 1. OPTYMALIZACJA!

Cytat(D4rky @ 17.10.2006, 20:34:11 ) *
Jeśli uzywasz $stat['nazwa'], to stosuj fetch_assoc nie array.

Tu się zgodzę
Cytat(D4rky @ 17.10.2006, 20:34:11 ) *
Poaz tym '".$email."' jak już winksmiley.jpg

Nie widzę takiej potrzeby. Jest to kwestia użytych cudzysłowów. Jeżeli masz --> " <-- to parser sprawdza co jest wewnątrz i jeżeli jest to jakaś zmienna to próbuje ją przetworzyć. Zatem w tym zapytaniu nie ma blędu jeśli chodzi o zmienne. Jeżeli byłby to --> ' <-- to wówczas parser to pomija i w zapytaniu do bazy poszło by dokałdnie email='$email'. Dla pewności (w nawiasach podwójnych) można zmienną "opakować" w klamry co powie parserowi że jest ro zmienna do parsowania.
Lethys
Niby wszystko poprawione a jak wlaczam to nic sie nie dzieje ( klikam na karmienie i nic sad.gif )


Poprawiony kod

  1. <?php include("config.php"); ?>
  2. <?php
  3. $stat = mysql_fetch_assoc(mysql_query("select * from players where email='".$email."' and pass='".$pass."'"));
  4. ?>
  5. <form method="post" action="karmienie.php?action=karmienie">
  6. <center><br><br>Czym chcesz karmic ?<br><input type="radio" name=karmienie><option value=sila>Wodorosla ze Smoczej Przeleczy ( dodaje sily )</option><br><input type="radio" name=karmienie><option value=zrecznosc>Jajecznica z gryfinich jaj ( dodaje zrecznosc )</option></select><br><br> 
  7. <input type=submit value=Nakarm>
  8. </form>
  9.  
  10. <?php
  11. if($_POST['karmienie'] == "karmienie") {
  12.  
  13.  
  14. if ($stat['glod'] < 1) {
  15. print "<br><br>Twoja Kreatura nie jest glodna !";
  16. }
  17. mysql_query("update players set glod=0 where id='".(int)$stat[id]."'");
  18. mysql_query("update players set karmienie=karmienie+1 where id='".(int)$stat[id]."'");
  19. print "<br><br>Twoja kreatura zyskala <b> 1 pkt</b> wybranej umiejetnosci.";
  20.  
  21. }
  22. ?>
jarrod
hmmm....
wydawało mi się że pole typu radio trochę inaczej wygląda....

  1. <form method="post" action="karmienie.php?action=karmienie">
  2. <br/><br/><center>Czym chcesz karmic ?</center><br/>
  3. <input type="radio" name="karmienie" value="sila" id="sila"/><label for="sila">Wodorosla ze Smoczej Przeleczy ( dodaje sily )</label><br/>
  4. <input type="radio" name="karmienie" value="zrecznosc" id="zrecznosc"/><label for="zrecznosc">Jajecznica z gryfinich jaj ( dodaje zrecznosc )</label>
  5. <br/><br/> <input type="submit" value="Nakarm"/></form>


Tamten formularz ZUPEŁNIE NIC NIE PRZENOSIŁ. Bo niby jak?

a całość:

  1. <?php
  2. include("config.php"); 
  3. $stat = mysql_fetch_assoc(mysql_query("select * from players where email='".$email."' and pass='".$pass."'"));
  4. ?>
  5. <form method="post" action="karmienie.php?action=karmienie">
  6. <br/><br/><center>Czym chcesz karmic ?</center><br/>
  7. <input type="radio" name="karmienie" value="sila" id="sila"/><label for="sila">Wodorosla ze Smoczej Przeleczy ( dodaje sily )</label><br/>
  8. <input type="radio" name="karmienie" value="zrecznosc" id="zrecznosc"/><label for="zrecznosc">Jajecznica z gryfinich jaj ( dodaje zrecznosc )</label>
  9. <br/><br/> <input type="submit" value="Nakarm"/></form>
  10.  
  11. <?php
  12. if($_GET['action'] == "karmienie") 
  13. {
  14.  if ($stat['glod'] < 1) 
  15.  {
  16.  print "<br><br>Twoja Kreatura nie jest glodna !";
  17.  exit();
  18.  }
  19.  mysql_query("update players set glod=0 where id='".(int)$stat[id]."'");
  20.  mysql_query("update players set karmienie=karmienie+1 where id='".(int)$stat[id]."'");
  21.  print "<br><br>Twoja kreatura zyskala <b> 1 pkt</b> wybranej umiejetnosci.";
  22. }

Tyle że wpowyższym if-ie nie ma igdzie powiedziane czym ją karmisz...
To czym jest karmiona jest przechowywane w zmiennej:
  1. <?php
  2. $_POST['karmienie'];
  3. ?>
Lethys
No i teraz pisze ze nie jest glodna a wdl warunku jest sad.gif Nie wiem czy kiedys to zrobie .....
jarrod
Zrób tak:
  1. <?php
  2. include("config.php"); 
  3. $stat = mysql_fetch_assoc(mysql_query("select * from players where email='".$email."' and pass='".$pass."'"));
  4.  
  5. var_dump($stat);
  6. var_dump($_POST);
  7. ?>


i przeklej to tutaj.
jarrod
Cytat


I nic ci to nie mówi??

To zrób jeszcze tak:

  1. <?php
  2. $sql = "select * from players where email='".$email."' and pass='".$pass."'";
  3. $res = mysql_query($sql);
  4.  
  5. echo '<br/>'.$sql;
  6. ?>

i też przekopiuj tutaj.
Lethys
Teraz wyskakuje


select * from players where email='' and pass='' " title="Zobacz w manualu php" target="_manual


Niestety nie wiem za bardzo co jest zle poniewaz od niedawna ucze sie php metada prob i bledow ale tutaj juz mi rece opadaja tongue.gif

Jak mozesz i wiesz jak to napisz mi ja ma byc zeby bylo dobrze , z gory dzieki.
jarrod
to jeszcze mi powiedz skąd bierzesz dane $email oraz $pass.

Ewidentnie ich nie ma - nie są zainicjowane. Dlatego mysql_error() nie pokazuje błędów (bo ich nie ma) a pytanie nie wykonuje się prawidłowo (nie zwraca rekordu).

Zatem sprawdź gdzie są inicjowane te zmienne i dlaczego one się nie inicjują.
Jak się z tym uporasz to wówczas powinno zadziałać.
Lethys
Wydaje mi sie ze to jest poprawnie

  1. <?php
  2. $stat = mysql_fetch_array(mysql_query("select * from players where email='".$email."' and pass='".$pass."'"));
  3. ?>


Tak mam zrobione w innym pliku php i wszystko dziala , a teraz jak to wpisalem wyskakuje blad

Leere Abfrage.
?>" title="Zobacz w manualu php" target="_manual
jarrod
To Ci przypomnę co sam napisałeś:

Cytat( @ 18.10.2006, 21:28:50 ) *
Teraz wyskakuje
select * from players where email='' and pass=''


W tych zmiennych nic nie ma. Tam gdzie się to udaje musi być includowany jakiś plik w którym jest to robione. Poszukaj.
Lethys
No wlasnie o to chodzi z tylko config ..


  1. <?php include("config.php"); session_start(); ?>
  2.  
  3. <?php
  4. if (!session_is_registered("email") || !session_is_registered("pass")) {
  5. print "Sesja sie skaczyla! .";
  6. }
  7. $stat = mysql_fetch_array(mysql_query("select * from players where email='$email' and pass='$pass'"));
  8. if (empty ($stat[id])) {
  9. print "Niepoprawny Login.";
  10. }
  11. $numer = ********];
  12. $numer1 =********;
  13. $potworek = ********;
  14. $potworek2 = ********);
  15. $jajko = ********;
  16. $potwor = ********;
  17. $potwor2 = ********;
  18. $potwor3 = ********;
  19. $ctime = time();
  20. mysql_query("update players set lpv=$ctime where id=$stat[id]");
  21. $ip = "$HTTP_SERVER_VARS[REMOTE_ADDR]";
  22. mysql_query("update players set ip='$ip' where id=$stat[id]");
  23. ?>



tyle ...
jarrod
To spróbuj może:

  1. <?php
  2. $stat = mysql_fetch_array(mysql_query("select * from players where email='".$_SESSION['email']."' and pass='".$_SESSION['pass']."'"));
  3. ?>


Sprawdź czy w tym zapytaniu masz zmienne.

Pozatym:
  1. <?php
  2. include("config.php"); session_start();
  3. ?>

czy:
  1. <?php
  2. session_start(); include("config.php");
  3. ?>

bo wykonujesz kawałek kodu bez inicjacji sesji.
Lethys
Teraz dziala ale nie do konca biggrin.gif bo odejmuje juz wartosc glod i wyswietla ze nakarmiles chowanca ale nie dodaje pkt statystyk wiec cos zle ...

btw. powodem wczesniejszego nie dzialania bylo brak session_start(); tongue.gif

Aktualny kod :

  1. <?php
  2. include("config.php"); session_start();
  3. $stat = mysql_fetch_array(mysql_query("select * from players where email='".$_SESSION['email']."' and pass='".$_SESSION['pass']."'"));
  4. echo '<br/>'.$sql;
  5. ?>
  6.  
  7.  
  8.  
  9.  
  10. <form method="post" action="karmienie.php?action=karmienie">
  11. <br/><br/><center>Czym chcesz karmic ?</center><br/>
  12. <input type="radio" name="karmienie" value="sila" id="sila"/><label for="sila">Wodorosla ze Smoczej Przeleczy ( dodaje sily )</label><br/>
  13. <input type="radio" name="karmienie" value="zrecznosc" id="zrecznosc"/><label for="zrecznosc">Jajecznica z gryfinich jaj ( dodaje zrecznosc )</label>
  14. <br/><br/> <input type="submit" value="Nakarm"/></form>
  15.  
  16. <?php
  17. if($_GET['action'] == "karmienie") 
  18. {
  19.  if ($stat['glod'] < 1) 
  20.  {
  21.  print "<br><br>Twoja Kreatura nie jest glodna !";
  22.  exit();
  23.  }
  24.  mysql_query("update players set glod=0 where id='".(int)$stat[id]."'");
  25.  mysql_query("update players set karmienie=karmienie+1 where id='".(int)$stat[id]."'");
  26.  print "<br><br>Twoja kreatura zyskala <b> 1 pkt</b> wybranej umiejetnosci.";
  27. }
  28. ?>


Prosze mi pomoc z naprawieniem karmienia tongue.gif
1010
te zapytanie daj tak
  1. <?php
  2. mysql_query("update players set karmienie=(karmienie+1) where id='".(int)$stat[id]."'");
  3. ?>

i powinno działać
Lethys
Nie dziala , poprostu nie dodaje pkt sad.gif
D4rky
Cytat(jarrod @ 17.10.2006, 19:04:44 ) *
Nie widzę takiej potrzeby. Jest to kwestia użytych cudzysłowów. Jeżeli masz --> " <-- to parser sprawdza co jest wewnątrz i jeżeli jest to jakaś zmienna to próbuje ją przetworzyć. Zatem w tym zapytaniu nie ma blędu jeśli chodzi o zmienne. Jeżeli byłby to --> ' <-- to wówczas parser to pomija i w zapytaniu do bazy poszło by dokałdnie email='$email'. Dla pewności (w nawiasach podwójnych) można zmienną "opakować" w klamry co powie parserowi że jest ro zmienna do parsowania.


Kwestia przyzwyczajen, aczkolwiek wydaje mi sie, ze metoda ktora podajesz nie zadziala np (int)$stat['id']. wiec lepiej sie przyzwyczajac do ". ." winksmiley.jpg
Lethys
Ok dziekuje wam wszystkim za pomoc , nareszcie udalo sie .

Prosze o zamkniecie tamatu tongue.gif
jarrod
Cytat
' date='19.10.2006, 16:31:08 ' post='302486']
Ok dziekuje wam wszystkim za pomoc , nareszcie udalo sie .

Prosze o zamkniecie tamatu tongue.gif


Zakładam że chodziło o to że w bazie nie było rekordu dla tego użytkownika i UPDATE się wykonywał i zwracał info: "#Zmodyfikowanych rekordów 0" winksmiley.jpg

Przed wykonaniem update musisz być pewny że istnieje rekord na którym to robisz bo niczego nie z-update-ujesz.
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.