Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP]Wyodrębnianie parametrów i wartości z tablicy
Czapla
post 19.04.2010, 08:18:07
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


Posiadam tablice w takim formacie
Kod
reports    {"rpt_RaportID":9,"rpt_NazwaRaportu":"test","rpt_SciezkaXL":"test/test","rpt_Opis":"opisgasd",
"rpt_FormatWydruku":"Clarion","rpt_CzyWUzyciu":"tak"}

Chciałbym zrobić poniższy UPDATE na bazę, jednak poszczególne wartości są trzymane w tablicy zmiennej reports.
  1. $reports = json_decode(stripslashes($_REQUEST['reports']));
  2.  
  3. $query = "UPDATE dbo.Raporty SET rpt_NazwaRaportu = '".$_POST["rpt_NazwaRaportu"]."' ,rpt_SciezkaXL = '".$_POST["rpt_SciezkaXL"]."', rpt_Opis = '".$_POST["rpt_Opis"]."', rpt_FormatWydruku = '".$_POST["rpt_FormatWydruku"]."', rpt_CzyWUzyciu = '".$_POST["rpt_CzyWUzyciu"]."' WHERE rpt_RaportID = '".$_POST["reports"]."'";
  4. $doQuery = mssql_query($query);

Jak pobrać poszczególne wartości z tablicy i zapisać je do poszczególnych $_POSTÓW w moim zapytaniu?

Ten post edytował Czapla 19.04.2010, 09:36:55


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
nospor
post 19.04.2010, 09:36:46
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. $reports = json_decode(stripslashes($_REQUEST['reports']));
  2. var_dump($reports);

Pokazalo ci tablice? Znaczy ze tam masz swoje dane. No to teraz zamiast $_POST pisz $reports. W czym problem?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Czapla
post 19.04.2010, 10:40:34
Post #3





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


$reports zwraca NULL gdy mam ustawione json_decode
natomiast zwraca
Kod
string(224) ""{\"rpt_RaportID\":9,\"rpt_NazwaRaportu\":\"test\",\"rpt_SciezkaXL\":\"test\/testjkl\",
\"rpt_Opis\":\"{\"rpt_RaportID\":23,\"rpt_NazwaRaportu\":\" as\",\"rpt_S\",\"rpt_FormatWydruku\":\"Clarion\",\"rpt_CzyWUzyciu\":\"tak\"}""

gdy mam json_encode

Jak napisze wszędzie reports to zapisze mi całą tablice do danego pola,
natomiast $reports[2] nie zapisze mi wartości dla pola rpt_SciezkaXL

W jaki sposób pobrać odpowiednie wartości z tej jednoelementowej tablicy? smile.gif

Ten post edytował Czapla 19.04.2010, 10:47:18


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
nospor
post 19.04.2010, 10:51:07
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. $t = '{"rpt_RaportID":9,"rpt_NazwaRaportu":"test","rpt_SciezkaXL":"testtest","rpt_Opis":"opisgasd","rpt_FormatWydruku":"Clarion","rpt_CzyWUzyciu":"tak"}';
  2. $ar = json_decode($t,true);
  3. print_r($ar);

Zwraca mi tablice a nie jakies NULL. Patrzyles czy oby na pewno $_REQUEST['reports'] zawiera to co myslisz ze zawiera?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
phpion
post 19.04.2010, 10:52:39
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Pokaż co siedzi w $_REQUEST['reports'] bo wrzucenie tego co podałeś poprawnie pokazuje tablicę:
  1. $s = '{"rpt_RaportID":9,"rpt_NazwaRaportu":"test","rpt_SciezkaXL":"test/test","rpt_Opis":"opisgasd",
  2. "rpt_FormatWydruku":"Clarion","rpt_CzyWUzyciu":"tak"}';
  3.  
  4. print_r(json_decode($s, TRUE));
Go to the top of the page
+Quote Post
Czapla
post 19.04.2010, 11:06:06
Post #6





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


Dziwne, tak zwrócił mi Internal error 500
  1. $reports = json_decode(stripslashes($_REQUEST['reports']));
  2. print_r($reports, TRUE);

Tak poprawnie zwrócił mi tablice - subtelna różnica
  1. $reports = stripslashes($_REQUEST['reports']);
  2. print_r(json_decode($reports, TRUE));

WYNIK
Kod
Array
(
    [rpt_RaportID] => 9
    [rpt_NazwaRaportu] => test
    [rpt_SciezkaXL] => test/test
    [rpt_Opis] => zmieniłem ten rekord
    [rpt_FormatWydruku] => Clarion
    [rpt_CzyWUzyciu] => tak
)



Ten post edytował Czapla 19.04.2010, 11:13:36


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
nospor
post 19.04.2010, 11:07:45
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no i dobra, masz tablice. czego teraz nie wiesz? Mowilem: zamiast POST uzyj elementow ze swojej tablicy.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Czapla
post 19.04.2010, 11:16:29
Post #8





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


Próbuje tak:
  1. include '../../drivers/dataConnection.php';
  2.  
  3. //print_r(json_decode($s, TRUE));
  4.  
  5. $reports = stripslashes($_REQUEST['reports']);
  6. print_r($reports, TRUE);
  7.  
  8. $query = "UPDATE dbo.Raporty SET rpt_NazwaRaportu = '".$reports[1]."' ,rpt_SciezkaXL = '".$reports[2]."', rpt_Opis = '".$reports[3]."', rpt_FormatWydruku = '".$reports[4]."', rpt_CzyWUzyciu = '".$reports[5]."' WHERE rpt_RaportID = '".$reports[0]."'";
  9. $doQuery = mssql_query($query);
  10.  
  11. echo $_REQUEST['callback'] . "{success:true, records : { rpt_RaportID : ".json_encode($reports)."}}";


Ten post edytował Czapla 19.04.2010, 11:20:50


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
nospor
post 19.04.2010, 11:19:13
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$reports[1]
$reports[5]
....

czy ty nie widzisz, ze twoja tablica $reports nie zawiera indexow liczbowych tylko teksty?
$reports['rpt_RaportID']
$reports['rpt_NazwaRaportu']
.....

skad ty zes te liczby jako indexy wytrzasnal?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Czapla
post 19.04.2010, 11:28:15
Post #10





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


A z tymi liczbowymi elementami tablicy tak mi się wydawało że można tongue.gif
  1. $query = "UPDATE dbo.Raporty SET rpt_NazwaRaportu = '".$reports['rpt_NazwaRaportu']."' ,rpt_SciezkaXL = '".$reports['rpt_SciezkaXL']."', rpt_Opis = '".$reports['rpt_Opis']."', rpt_FormatWydruku = '".$reports['rpt_FormatWydruku']."', rpt_CzyWUzyciu = '".$reports['rpt_CzyWUzyciu']."' WHERE rpt_RaportID = '".$reports['rpt_RaportID']."'";

No więc w ten sposób też nie działa


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
nospor
post 19.04.2010, 11:31:01
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
A z tymi liczbowymi elementami tablicy tak mi się wydawało że można tongue.gif
Nie pokazuj mi jezyka bez konkretnego powodu. Twoja pomylka nie jest konkretnym powodem by mi jezyk pokazywac.

Cytat
No więc w ten sposób też nie działa
Co nie działa?
Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie
i nastepnie zadaj pytanie.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Czapla
post 22.04.2010, 12:11:48
Post #12





Grupa: Zarejestrowani
Postów: 130
Pomógł: 3
Dołączył: 10.12.2007
Skąd: Bielsko-Biała

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


BUMP

  1. <?php
  2. include '../../drivers/dataConnection.php';
  3.  
  4. $reports = json_decode(stripslashes($_REQUEST['reports']));
  5.  
  6. $query = "UPDATE dbo.Raporty SET rpt_NazwaRaportu = '".$reports['rpt_NazwaRaportu']."' ,rpt_SciezkaXL = '".$reports['rpt_SciezkaXL']."', rpt_Opis = '".$reports['rpt_Opis']."', rpt_FormatWydruku = '".$reports['rpt_FormatWydruku']."', rpt_CzyWUzyciu = '".$reports['rpt_CzyWUzyciu']."' WHERE rpt_RaportID = '".$reports['rpt_RaportID']."'";
  7. mssql_query($query);
  8. echo $query;
  9.  
  10. echo $_REQUEST['callback'] . "{success:true, records : { rpt_RaportID : ".json_encode($reports['rpt_RaportID'])."}}";
  11. ?>

Po zastosowaniu
  1. <?php
  2. ini_set('display_errors','1');
  3. ?>

Wyświetla błąd
Kod
<br />
<b>Fatal error</b>:  Cannot use object of type stdClass as array in <b>C:\Inetpub\wwwroot\test\php\report\reportUpdate.php</b> on line <b>9</b><br />

Screen z debugu w Firebugu
http://www.fotosik.pl/pokaz_obrazek/687ed522bf8fc164.html

Ten post edytował Czapla 22.04.2010, 12:13:03


--------------------
Life is a game, continue playing and try to be a pr0.
Go to the top of the page
+Quote Post
phpion
post 22.04.2010, 12:19:37
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Zobacz jaki drugi parametr przyjmuje json_decode i co powoduje jego podanie/niepodanie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.06.2025 - 08:35