Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Podstawienie funkcji - problem
Forum PHP.pl > Forum > Przedszkole
mrRosso
Witam smile.gif


Jak widać jestem nowy na tym forum, znam HTML'a a z PHP to tylko początek...
i co do php mam pewien problem, myślę, że Wam uda się go rozwikłać. (jest to na pewno bardzo proste ale w php jestem naprawdę zielony)

GG Network pokazało przykład bota na swojej stronie https://boty.gg.pl/przyklady/
więc postanowiłem zrobić sobie bota który jak nie będzie mnie na GG to pokaże o której jestem, aczkolwiek żebym mógł aktualizować info o tym kiedy będę potrzebna jest funkcja do zapisu do pliku. (z odczytem nie będę miał problemu:) ) Nie będę owijał w bawełnę i przejdę do rzeczy,

  1. <?
  2. require_once 'GGBotApi/PushConnection.php';
  3. require_once('GGBotApi/MessageBuilder.php');
  4.  
  5. $info = 1; // info 1-on 0-off
  6. $info_file = 'temat.txt'; // Sciezka do pliku info.txt
  7.  
  8. $M=new MessageBuilder();
  9. $czas=date("G:i:s - m - j - Y");
  10.  
  11.  
  12.  
  13. switch ($HTTP_RAW_POST_DATA) {
  14.  
  15. case "/ver": $M->addBBcode('Wersja Bota v1.0[br] Autor: Mateusz Pietrzak [15:01 2012-01-02]'); break;
  16. case "/czas": $M->addText('aktualny czas: ."$czas".''); break;
  17.  
  18.  
  19.  
  20. default: $M->addBBcode('Nie ma mnie aktualnie na GG. Będę... $przykład'); break;
  21. }
  22. $M->reply();


i funkcja czas działa pięknie i bot tak samo. A chcę stworzyć komendę np. /info która będzie aktualizowała zapytanie
  1. $info


Zrobiłem taką funkcję:

  1.  
  2. $info = (implode(" ", $msg));
  3. if($fp = fopen($info_file, 'a+'));
  4. if(fwrite($fp, $info." "));
  5. if(fclose($fp));


ale nie wiem jak ją podstawić pod komendę 'case'. Nie mam na myśli abyście wykonali za mnie całą robotę bo nie w tym rzecz tylko żebyście mogli mnie jakoś nakierować smile.gif

dzięki i pozdrawiam, Mateusz wink.gif

czyli nikt mi nie pomoże...? ;|
shinuexx
rozumiem że chcesz wpisywać komende w postaci
Kod
/info informacja o tym kiedy będziesz

gdzie potem $msg="informacja o tym kiedy będziesz";
Niestety do tego nie użyjesz switch(a bynajmniej nie bezpośrednio z $HTTP_RAW_POST_DATA), ponieważ on wybiera spośród możliwych wartości(jak w przypadku "/ver" i "/czas") a tutaj masz wartość zmienną. Możesz albo wcześniej na $HTTP_RAW_POST_DATA użyć explode() i wtedy switchem, albo od razu w if'ach to zrobić.
mrRosso
czyli wyglądałoby to tak?

  1. } else if($msg[0] == "/info") {
  2. unset($msg[0]);
  3. $info = (implode(" ", $msg));
  4. if($fp = fopen($info_file, 'a+'));
  5. if(fwrite($fp, $info." "));
  6. if(fclose($fp));


wstawiłem to wyżej i wygląda to tak:


  1. <?
  2. require_once 'GGBotApi/PushConnection.php';
  3. require_once('GGBotApi/MessageBuilder.php');
  4.  
  5.  
  6. $M=new MessageBuilder();
  7. $czas=date("G:i:s - m - j - Y");
  8.  
  9.  
  10.  
  11. switch ($HTTP_RAW_POST_DATA) {
  12.  
  13. case "/ver": $M->addBBcode('Wersja Bota v1.0[br] Autor: Mateusz Pietrzak [15:01 2012-01-02]'); break;
  14.  
  15. else if($msg[0] == "/info" && $user_is_online == 1)
  16. unset($msg[0]);
  17. $info = (implode(" ", $msg));
  18. if($fp = fopen($info_file, 'a+'));
  19. if(fwrite($fp, $info." "));
  20. if(fclose($fp));
  21.  
  22.  
  23.  
  24.  
  25. default: $M->addBBcode('Nie ma mnie aktualnie na GG.'); break;
  26. }
  27. $M->reply();
  28.  


i po uruchomieniu skryptu oddaje błąd taki:

  1. <br />
  2. <b>Parse error</b>: syntax error, unexpected T_ELSE in <b>/home/gaduczat/public_html/ggbot.php</b> on line <b>15</b><br />
nospor
żeby używać ELSE, najpierw musi być IF. U ciebie nie ma IF
shinuexx
Czym jest zmienna $msg[0]? Dodaj komentarze do linijek, żeby można było wiedzieć jak ten kod interpretujesz.
mrRosso
zrobiłem to tak jak kazaliście z tą zmienną $msg i wyszło to tak:

  1. <?
  2. require_once('GGBotApi/PushConnection.php');
  3. require_once('GGBotApi/MessageBuilder.php');
  4.  
  5.  
  6. $M=new MessageBuilder();
  7. $czas=date("G:i:s - m - j - Y");
  8.  
  9.  
  10.  
  11. switch ($HTTP_RAW_POST_DATA) {
  12. $message = trim($HTTP_RAW_POST_DATA);
  13. $msg = explode(" ", $message);
  14.  
  15. case "/ver": $M->addBBcode('Wersja Bota v1.0[br] Autor: Mateusz Pietrzak [15:01 2012-01-02]'); break;
  16.  
  17. else if($msg[0] == "/info" && $user_is_online == 1)
  18. unset($msg[0]);
  19. $info = (implode(" ", $msg));
  20. if($fp = fopen($info_file, 'a+'));
  21. if(fwrite($fp, $info." "));
  22. if(fclose($fp));
  23.  
  24.  
  25.  
  26.  
  27. default: $M->addBBcode('Nie ma mnie aktualnie na GG...'.$msg.""); break;
  28. }
  29. $M->reply();


ale nie za bardzo rozumiem Ciebie @nospor co mam dokładnie z IF'ami zrobić smile.gif
nospor
.....
Uzywasz ELSE nie wiedzac co to robi i jak to robi. Tlumacze ci ze ELSE bez IF jest bez sensu. Jak nie kumasz, to zajrzyj łaskawie do manuala, bo takich podstaw ci nikt tlumaczyc nie bedzie....
http://pl.php.net/manual/en/control-structures.if.php
gorden
if, switch
przeczytaj, a potem

wsadziłeś niekompletny warunek w środek switcha. zrób to na warunku a nie na switchu
mrRosso
niby ok

  1. <?
  2. require_once('GGBotApi/PushConnection.php');
  3. require_once('GGBotApi/MessageBuilder.php');
  4.  
  5.  
  6. $M=new MessageBuilder();
  7. $czas=date("G:i:s - m - j - Y");
  8.  
  9.  
  10.  
  11. switch ($HTTP_RAW_POST_DATA) {
  12. $message = trim($HTTP_RAW_POST_DATA);
  13. $msg = explode(" ", $message);
  14.  
  15.  
  16.  
  17. if($msg[0] == "/info")
  18. unset($msg[0]);
  19. $info = (implode(" ", $msg));
  20. if($fp = fopen($info_file, 'a+'));
  21. if(fwrite($fp, $info." "));
  22. if(fclose($fp));
  23.  
  24.  
  25.  
  26.  
  27. default: $M->addBBcode('Nie ma mnie aktualnie na GG...'.$msg.""); break;
  28. }
  29. $M->reply();


ale taki błąd teraz jest

  1. <br />
  2. <b>Parse error</b>: syntax error, unexpected T_VARIABLE, expecting T_CASE or T_DEFAULT or '}' in <b>/home/gaduczat/public_html/ggbot.php</b> on line <b>12</b><br />


boję się cokolwiek ruszać bo doszczętnie zepsuje...;/
shinuexx
z tego co pokazujesz to wnioskuje że nie masz zielonego pojęcia co piszesz. Dodaj komentarze na końcu linijek jak po kolei interpretujesz kod, to powiem ci co robisz źle.
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.