Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem ze zmienną
Forum PHP.pl > Forum > Przedszkole
Kryszic
Witam

mam następującą linijke w kodzie:
'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/',

i wszystko gra. Na końcu tej linijki musze wstawić zmienną z liczbą kiedy robie to tak

'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/7/',

jest dobrze ale iedy chce zeby to szlo ze zmiennej tak jak poniżej to nie dziala

'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/'.$idg.'/',

nie znam sie na programowaniu obiektowym prawdopodobnie zle wstawilem zmienna czy ktos moze mi pomoc

Z góry dzieki
CuteOne
To nie ma nic wspólnego z obiektówką..

  1. //wstaw tego var_dump'a przed $xx = array(
  2. var_dump($idg);
  3. 'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/'.$idg.'/',
Kryszic
No ale to co mi wkleiles to nic nie daje dalej jest blad przeciez nic nie zmieniles

SyntaxError: JSON.parse: unexpected character

moze za malo kodu wkleilem poprzednio

  1. $this->options = array(
  2. 'script_url' => $this->getFullUrl().'/',
  3. 'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/3/',
  4. 'upload_url' => $this->getFullUrl().'/files/3/',
  5. 'param_name' => 'files',


trzeba za ta "3" podstawic zmienna dokladniej mowiac z $_GET[idg]
CuteOne
..... brak mi słów - z łaski swojej mogłeś chociaż zobaczyć do czego służy var_dump()

Odpal ten skrypt tak jak normalną stronę (adres.pl/plik.php?idg=4) i zobacz co wywali
Kryszic
ale ja tak zrobilem jak mi napisales i wlasnie dalej mam


po wywolaniu skryptu
SyntaxError: JSON.parse: unexpected character
viking
Kod który tu wkleiłeś nie ma nic wspólnego z komunikatem błędu. Poszukaj przyczyny w JSON, czyli np json_encode
Kryszic
to skoro nie ma nic wspolnego to czemu sie pojawia w chwili gdy wstawiam zmienna

'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/'.$idg.'/',

kiedy jest tak


'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/7/',

to jest ok

jak robie nawet tak zeby nie bylo

$idg=7;
'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/'.$idg.'/',

jest znowu błąd


Greg0
Bo ta tablica jest pewnie konwertowana do JSONa
CuteOne
1. Mówiłem odpal skrypt tak jak normalną stronę nie przez ajaxa
2. Pokaż cały kod z $_GET
3. Pokaż cały kod podczas ustawiania zmiennej (to co wyżej napisałeś z tym $idg=7)
scanner
=> Przedszkole
Kryszic
Dobra jetsem na takim etapie aktualnie

  1. class UploadHandler
  2. {
  3.  
  4. /*
  5. w miejsce "7" musze wstawic zmienna $_GET[idg] ale kiedy to robie to wywala mi bląd że gdzies cos jest niedomkniete itp
  6. Parse error: syntax error, unexpected '"' in /var/www/html/users/g/l/gloswww/stary.glospasleka.pl/image/php/upload.class.php on line 31
  7. */
  8. var $zmienna="7";
  9.  
  10. function nazwafunkcji()
  11. {
  12. print $this->zmienna;
  13. }
  14. protected $options;
  15.  
  16. function __construct($options=null) {
  17. $this->options = array(
  18. 'script_url' => $this->getFullUrl().'/',
  19. 'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/'.$this->zmienna.'/',
  20. 'upload_url' => $this->getFullUrl().'/files/'.$this->zmienna.'/',
  21. 'param_name' => 'files',
CuteOne
  1. protected $get;
  2. function __construct($options=null) {
  3. $this->get = $_GET;
  4. $this->options = array('a' => $this->get['aaa']);
  5. }

od razu mówię, że taki zapis jest nie właściwy (nawet jeżeli działa)
scanner
Kryszic, pokaż URL jakim to wywołujesz.
Czy na pewno na indeksie idg masz wartość w GET?
Kryszic
Pewnei tu wssztsko gra

... image/php/index.php?idg=7

No i kod razem z wywolaniem

  1. class UploadHandler
  2. {
  3. public $zmienna;
  4.  
  5. public function ss ($zmienna)
  6. {
  7. $this->zmienna = $zmienna;
  8. // return $this->zmienna;
  9. }
  10. protected $options;
  11.  
  12. function __construct($options=null) {
  13. $this->options = array(
  14. 'script_url' => $this->getFullUrl().'/',
  15. 'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/'.$this->zmienna.'/',
  16. 'upload_url' => $this->getFullUrl().'/files/'.$this->zmienna.'/',
  17. 'param_name' => 'files',
  18.  
  19.  
  20. //------------- wywolanie
  21.  
  22. $upload_handler = new UploadHandler();
  23. $upload_handler-> ss ($_GET['idg']);
  24.  


za cholere nei wiem czemu wartosc $_GET nie chce wejsc do funkcji construct

scanner
Jak krowie na miedzy:

linijka 22: Tworzysz nowy obiekt klasy UploadHandler, co powoduje magiczne wywołanie metody __construct().
Metoda __construct() tworzy jakiś zestaw danych, używając między innymi właściwości $zmienna.
Właściwość $zmienna jest niezainicjowana żadną wartością.
Linijka 23: Ustawiasz wartość właściwości $zmienna na wartość odczytana z GET.

Widzisz zaburzony ciąg chronologiczny?
Kryszic
a czy możesz mi powiedziec w prost co mam zmienic ? ja jestem grafikiem i walcze z tym od godziny 16:00
ja sobie to jutro na spokojnie przeanalizuje ale teraz robi sie coraz pozniej a jescze musze dwa projekkty zrobic



scanner
Zabezpiecz $_GET['idg'] żeby Ci ktoś krzywdy nie zrobił jakims *injection, przekaż je jako drugi parametr do konstruktora, użyj tego parametru zamiast $this->zmienna.
Wywal $zmienna z właściwości
Wywal ss()

I skoro jesteś grafikiem, to gdzie jest programista? Jak trzeba coś na obrazku poprawić, to on się tym zajmuje?
Kryszic
a jak to przekazac jako drugi parametr do konstruktora?

Ja nigdy nie zajmowałem się programowaniem obiektowym a ty używasz takiego języka jak to nby było wszystko oczywiste
markonix
Cytat(Kryszic @ 5.09.2012, 00:22:14 ) *
a jak to przekazac jako drugi parametr do konstruktora?

Ja nigdy nie zajmowałem się programowaniem obiektowym a ty używasz takiego języka jak to nby było wszystko oczywiste

Po przecinku..

Mało to ma wspólnego z obiektówką.
Kryszic
a czy tu ma cos zmienic?

  1. $upload_handler = new UploadHandler();
  2. $upload_handler-> ss ($_GET['idg']);


no i pozniej jak wywolac ten parametr i wstawic zamaist $this->zmienna?
scanner
  1. <?php
  2. class UploadHandler {
  3. protected $options;
  4.  
  5. function __construct($options=null, $idg) {
  6. $this->options = array(
  7. 'script_url' => $this->getFullUrl().'/',
  8. 'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/'.$idg.'/',
  9. 'upload_url' => $this->getFullUrl().'/files/'.$idg.'/',
  10. 'param_name' => 'files',
  11. // ...
  12. }
  13. // ...
  14. }
  15.  
  16. //------------- wywolanie
  17. $idg = (int) $_GET['idg']; // najprosciej, pod warunkiem, ze idg ma tylko inty
  18. $upload_handler = new UploadHandler(null, $idg);
  19. //...
  20.  


Jeszcze raz zapytam, gdzie jest Twój programista? Bo męczysz się z czymś, o czym pojęcia nie masz, co nie powinno leżeć w Twoim zakresie zainteresowań. chyba, że robisz za team jednoosobowy - wtedy współczuję projektowi.
Kryszic
Podstawiłem to co mi dałeś i jak wywołuję skrypt sam skrypt z bzpośredneigo adresu to wsztsko działa jednak jak odpalam wszystko przez stronę to coś nie łapie mam błąd

SyntaxError: JSON.parse: unexpected character
scanner
Proponuję, abyś przetestował stronę z włączonym dodatkiem Firebug (dla Firefoxa) lub w Chrome - Narzędzia dla programistów - zakładka bodajże "Network" - zobaczysz tam bezpośredni request jaki idzie do serwera oraz response przez ten serwer zwracany. Wtedy możesz wkleić response tutaj i zobaczymy co masz popsute.
Kryszic
No własnei ale to jest ajax wszytsko dzieje sie asynchronicznie wiec ak wgrywam zdjecia dzieje sie to bez przeladowania strony i firebug nic nei pokazuje

cos sie dzieje nie tak kiedy konstruktor dostaje dwie wartosci bo jak jest po staremu i wpisuje na na sztywno np "7" do


  1. 'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/7/',
  2.  
  3. //--- to jest ok
  4.  


To co mi wkleileś działa przy bezpośredniim dojściu w adresie przegladarki do skryptu ale jak przechodzi przez ajax to ejst bląd
scanner
Problem z rozumieniem tekstu czytanego widzę.
Na przykładzie Chrome i Narzędzi dla programistów ( [Ctrl]+[Shift] + [I] ):



Konsola pokazuje każdy request który wychodzi z przeglądarki i ma w 4literach czy to jest grafika, ajax, czy modlitwa do Latającego Potwora Spaghetti.
Kryszic

dobra juz czaje tak to wyglada

[16:06:09.420] POST http://domena/image/php/ [HTTP/1.1 200 OK 1804ms]
po kliknieciu w to mam
Nagłówki odpowiedzi
Δ1804ms

X-Powered-By:PHP/5.3.16Vary:User-AgentServer:ApacheDate:Wed, 05 Sep 2012 14:06:11 GMTContent-Type:text/htmlContent-Length:4220Connection:close

Nagłówki żądania
16:07:55.682

X-Requested-With:XMLHttpRequestUser-Agent:Mozilla/5.0 (Windows NT 6.0; rv:15.0) Gecko/20100101 Firefox/15.0Referer:http://domena/edycja_mc/index.php?id=hurt_zdj&idg=7Pragma:no-cacheHost:domenaContent-Type:multipart/form-data; boundary=---------------------------16541483331115Content-Length:662988Connection:keep-aliveCache-Control:no-cacheAccept-Language:pl,en-us;q=0.7,en;q=0.3Accept-Encoding:gzip, deflateAccept:application/json, text/javascript, */*; q=0.01
scanner
To jest request. a response jakiś masz?
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.