Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Funkcja nie dziala
Forum PHP.pl > Forum > Przedszkole
Lethys
Mam tutaj pewna funkcje albo i nie bo nie wiem jak to nazwac 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 sad.gif
dr_bonzo
1. Jaka funkcja?
2. Jaki link?
3. Czy to caly kod?
4. gdzie zefiniowales stala <pass>?
if ($zamien == pass) {

Przenosze na Przedszkole
dtb
po pierwsze, to powinno byc:
== 'pass'
po drugie, dam sobie glowe obciac, ze chodzi o register globals!
Lethys
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. ?>

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. ?>
kossa
to co pisał @dj_bonzo

ten kawałek...

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


Łukasz
artur81
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).
Cysiaczek
  1. <?php
  2. if ($los == 6) {
  3.  
  4. ...
  5. }
  6. ?>


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

Tak? Przekazujesz $los?
dr_bonzo
[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
Lethys
@Cysiaczek

Nie to wogole inna bajka ( ale to dziala )

@kossa

Zrobilem tak i nietsty nic to nie dało sad.gif
Cysiaczek
@[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. ?>
Neojawor
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 smile.gif. Poprawiłem ostatecznie, ale wydaje mi się, że nazwa kolumny w GET-cie ma być w apostrofach
Lethys
Ehh zamienilem ale znowu to samo czyli poprostu jak klikne na link to poprostu nic sie nie dzieje 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



Tylko wlasnie problem w tym ze jak klikne na ten link "zamien chowanca" to nic sie nie pojawia 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. ?>
Cysiaczek
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. ?>


: )
Lethys
Ehh to samo czyli klikam i nic sie nie dzieje sad.gif
Cysiaczek
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. ?>
Lethys
Zrobilem tak ale nic sie nie wyswietla po kliknieciu poprostu tak jak wczesniej , zreszta przeciez nawet nie wyswietla "Chowance zostaly zamienione" ...
Cysiaczek
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
Lethys
Oczywiscie to kawalek kodu ale jezeli chodzi o ta linjke to jej nie pokazuje zreszta pokazalo by przeciez napis " chowaniec zostal zmieniony " ...
Cysiaczek
Nie, ponieważ nieudane zapytanie sql przerwie działanie skryptu i nie się nie wyświetli po nim.
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.