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
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
Go to the top of the page
+Quote Post
nospor
post
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?
Go to the top of the page
+Quote Post
Czapla
post
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? (IMG:style_emoticons/default/smile.gif)

Ten post edytował Czapla 19.04.2010, 10:47:18
Go to the top of the page
+Quote Post
nospor
post
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?
Go to the top of the page
+Quote Post
phpion
post
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
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
Go to the top of the page
+Quote Post
nospor
post
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.
Go to the top of the page
+Quote Post
Czapla
post
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
Go to the top of the page
+Quote Post
nospor
post
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?
Go to the top of the page
+Quote Post
Czapla
post
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 (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
nospor
post
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 (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
Czapla
post
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
Go to the top of the page
+Quote Post
phpion
post
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 22:50