Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Funkcja nie dziala
Lethys
post
Post #1





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Mam tutaj pewna funkcje albo i nie bo nie wiem jak to nazwac (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Tutaj kod :


  1. <?php
  2. if ($los == 6) {
  3.  
  4.  
  5. (...)
  6.  
  7.  
  8. print "<br><br><b><center><font color="#FF0000"><a href="jezioro.php?zamien=pass">Zamien Chowanca!</a></font></b><br>";
  9.  
  10. if ($zamien == pass) {
  11.  
  12. mysql_query("update players set mob=2 where id='".(int)$stat[id]."'");
  13.  
  14. print "Chowance zostaly zamienione";
  15.  
  16. }
  17.  
  18. }
  19. ?>



Kiedy klikam na link poprostu nic sie nie dzieje (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


1. Jaka funkcja?
2. Jaki link?
3. Czy to caly kod?
4. gdzie zefiniowales stala <pass>?
if ($zamien == pass) {

Przenosze na Przedszkole
Go to the top of the page
+Quote Post
dtb
post
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


po pierwsze, to powinno byc:
== 'pass'
po drugie, dam sobie glowe obciac, ze chodzi o register globals!
Go to the top of the page
+Quote Post
Lethys
post
Post #4





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Chodzi o ten link

  1. <?php
  2. jezioro.php?zamien=pass
  3. ?>



To nie jest caly kod ale tutak tkwi problem

jezeli chodzi o definiowanie pass to nie jest to ?


  1. <?php
  2. jezioro.php?zamien=pass
  3. (...)
  4. if ($zamien == pass) {
  5. ?>

(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Zmienilem na "pass" ale to nic nie dalo a jezeli chodzi o register globals to mam wlaczone bo wszystki inne skrypty tego typu chodza ...


Tutaj zamieszczam caly kod :

  1. <?php
  2. if ($los == 6) {
  3. Print "Podczas podróży złapałes innego chowanca , mozesz go zatrzymac ale musisz p
    amietac ze twoj 
  4.  
  5. obecny chowaniec zostanie wypuszczony na wolnosc (statystyki chowanca pozostana te same jednak wiek ulegnie zmianie)";
  6.  
  7. $potwor = mysql_fetch_array(mysql_query('select * from mob1 WHERE id=2'));
  8. mysql_query("update players set ruch=ruch-1 where id=$stat[id]");
  9.  
  10. print "<b><center>$potwor[nazwa]</b><br>";
  11. print "<center><img border="0" src="$potwor[rys]" width="100" height="100">";
  12. print "<b><center>Rodzaj:$potwor[rodzaj]</b><br>";
  13.  
  14.  
  15. print "<br><br><b><center><font color="#FF0000"><a href="jezioro.php?zamien=pass">Zamien Chowanca!</a></font></b><br>";
  16.  
  17. if ($zamien == "pass") {
  18.  
  19. mysql_query("update players set mob=2 where id='".(int)$stat[id]."'");
  20.  
  21. print "Chowance zostaly zamienione";
  22.  
  23. }
  24.  
  25. }
  26. ?>
Go to the top of the page
+Quote Post
kossa
post
Post #5





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


to co pisał @dj_bonzo

ten kawałek...

  1. <?php
  2. if ($_GET["zamien"] == "pass")
  3. ?>


Łukasz
Go to the top of the page
+Quote Post
artur81
post
Post #6





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

Ostrzeżenie: (10%)
X----


taka luźna dygresja...
zamiast printa, polecałbym echo - jest szybsze, poza tym lepiej by było jakbyś robiąc kilka printów pod rząd, wrzucił to w jeden (a najlepiej w echo).
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #7





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




  1. <?php
  2. if ($los == 6) {
  3.  
  4. ...
  5. }
  6. ?>


A ten fragment ma się tez wykonać?
?los=6&zamien=pass

Tak? Przekazujesz $los?

Ten post edytował Cysiaczek 29.11.2006, 17:00:55
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


[quote]taka luźna dygresja...
zamiast printa, polecałbym echo - jest szybsze[...].[/quote
@#$@#$@
Policz najpierw ile na tym zaoszczedzi i jaki to jest promil czasu wykonania jednego zapytania SQL
Go to the top of the page
+Quote Post
Lethys
post
Post #9





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


@Cysiaczek

Nie to wogole inna bajka ( ale to dziala )

@kossa

Zrobilem tak i nietsty nic to nie dało (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #10





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




@[Lethys] - Jak nie ta bajka, to co kod, który chcesz wykonać robi w bloku, który jest wywoływany przez $los?
  1. <?php
  2. if ($los == 6) {
  3. ?>


Spójrz jak są domknięte nawiasy blokowe
  1. <?php
  2. if ($los == 6) { //otwieramy 1
  3.  
  4. (...)
  5.  
  6. if ($zamien == "pass") { //otwieramy 2
  7.  
  8. mysql_query("update players set mob=2 where id='".(int)$stat[id]."'");
  9.  
  10. print "Chowance zostaly zamienione";
  11.  
  12. } //zamykamy 2
  13.  
  14. } //zamykamy 1
  15. ?>


Ten post edytował Cysiaczek 29.11.2006, 20:29:05
Go to the top of the page
+Quote Post
Neojawor
post
Post #11





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 2.12.2005
Skąd: Jaworzno

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


jeśli będziesz miał:
  1. <?php
  2. if ($_GET['zamien'] == "pass")
  3. {
  4.  mysql_query("update players set mob=2 where id='".(int)$stat[id]."'");
  5.  print "Chowance zostaly zamienione";
  6. }
  7. ?>

Przy tym co podyktowałem proponuję zwrocić uwagę na wszystkie apostrofy, cudzysłowy i backslash-e przed niektórymi cudzysłowami. Do tego wypisuj jakie błędy Ci zwraca

EDIT
WOW to ja pomyliłem cudzyslowy, mój błąd zwracam honor (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Poprawiłem ostatecznie, ale wydaje mi się, że nazwa kolumny w GET-cie ma być w apostrofach

Ten post edytował Neojawor 29.11.2006, 20:45:40
Go to the top of the page
+Quote Post
Lethys
post
Post #12





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Ehh zamienilem ale znowu to samo czyli poprostu jak klikne na link to poprostu nic sie nie dzieje (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)


Jednak moze da sie to zrobic w inny sposob , pokaze wam o co mi chodzi :

if ($los == 6) to wyswietla sie cos takiego

(IMG:http://img357.imageshack.us/img357/8987/bladbw2.jpg)

Tylko wlasnie problem w tym ze jak klikne na ten link "zamien chowanca" to nic sie nie pojawia (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) no a powinno zadzialac :

  1. <?php
  2. mysql_query("update players set mob=2 where id='".(int)$stat[id]."'");
  3.  
  4. print "Chowance zostaly zamienione";
  5. ?>


Ten post edytował [Lethys] 29.11.2006, 21:20:24
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #13





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Zmienisz w końcu te nawiasy, czy nie? Uwierz mi - nie zadziała inaczej. : )

  1. <?php
  2. if ($los == 6) {
  3. Print "Podczas podróży złapałes innego chowanca , mozesz go zatrzymac ale musisz p
    amietac ze twoj 
  4.  
  5. obecny chowaniec zostanie wypuszczony na wolnosc (statystyki chowanca pozostana te same jednak wiek ulegnie zmianie)";
  6.  
  7. $potwor = mysql_fetch_array(mysql_query('select * from mob1 WHERE id=2'));
  8. mysql_query("update players set ruch=ruch-1 where id=$stat[id]");
  9.  
  10. print "<b><center>$potwor[nazwa]</b><br>";
  11. print "<center><img border="0" src="$potwor[rys]" width="100" height="100">";
  12. print "<b><center>Rodzaj:$potwor[rodzaj]</b><br>";
  13.  
  14.  
  15. print "<br><br><b><center><font color="#FF0000"><a href="jezioro.php?zamien=pass">Zamien Chowanca!</a></font></b><br>";
  16.  
  17. //tu sie kończy blok polecenia $los=6
  18. }
  19.  
  20. //a tu sie zaczyna blok polecenia $zamien=="pass"
  21. if ($zamien == "pass") {
  22.  
  23. mysql_query("update players set mob=2 where id='".(int)$stat[id]."'");
  24.  
  25. print "Chowance zostaly zamienione";
  26.  
  27. }
  28. ?>


: )

Ten post edytował Cysiaczek 29.11.2006, 21:41:27
Go to the top of the page
+Quote Post
Lethys
post
Post #14





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Ehh to samo czyli klikam i nic sie nie dzieje (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #15





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




1. Sprawdz, co zawiera (i czy wogóle coś) zmienna $stat[id]
2.
  1. <?php
  2. mysql_query("update players set mob=2 where id='".(int)$stat[id]."'") or die ("Bład: ".mysql_error()); //i napisz, jaki jestkomunikat błędu.
  3. ?>
Go to the top of the page
+Quote Post
Lethys
post
Post #16





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Zrobilem tak ale nic sie nie wyswietla po kliknieciu poprostu tak jak wczesniej , zreszta przeciez nawet nie wyswietla "Chowance zostaly zamienione" ...
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #17





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Oczywiście. Najpierw wywołujesz jezioro.php?los=6, który wyświetla takiego linka
  1. <a href=\"jezioro.php?zamien=pass\">Zamien Chowanca!</a>


Ten link wywoła po kliknięciu drugi blok.
Mam nadzieję, że plik, który podałeś, to nie jest cały plik, bo jeśli tak, to nie ma szansy, aby zadziałało.
Wstaw dodatkową linijkę
  1. <?php
  2. if ($zamien == "pass") {
  3. print 'test - jak się pojawiam, to znaczy, że blok się wykonuje';
  4.  
  5. mysql_query("update players set mob=2 where id='".(int)$stat[id]."'") or die ("Bład: ".mysql_error());
  6.  
  7. //jeśłi poniższe się nie pojawia, to znaczy, że zapytanie wyżej przerwało skrypt.
  8. print "Chowance zostaly zamienione";
  9.  
  10. }
  11. ?>


Włącz raportowanie błędów w php.ini na E_ALL ~E_NOTICE, bo możesz mieć wyłączone
Linijki:
Kod
error_reporting  =  E_ALL & ~E_NOTICE
display_errors = On


Ten post edytował Cysiaczek 30.11.2006, 08:41:38
Go to the top of the page
+Quote Post
Lethys
post
Post #18





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Oczywiscie to kawalek kodu ale jezeli chodzi o ta linjke to jej nie pokazuje zreszta pokazalo by przeciez napis " chowaniec zostal zmieniony " ...
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #19





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Nie, ponieważ nieudane zapytanie sql przerwie działanie skryptu i nie się nie wyświetli po nim.
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: 23.08.2025 - 03:35