PDA

View Full Version : Send & Receive Json Data in PHP



mehdi.safavie
سه شنبه 22 دی 1394, 02:51 صبح
درود;

من یه برنامه با اندروید دارم که به دیتابیس روی هاست متصل میشه .
به تازگی چیز هایی از json یاد گرفتم ولی باهاش آشنایی کامل ندارم .

اطلاعاتی که میخوام اینها استند :

صفحه php مورد نیاز برای این کار چیه ؟
من از طریق برنامه اندروید یا هر برنامه دیگه ، چی رو باید به صفحه php بفرستم ؟ و صفحه چی رو به من بر میگردونه ؟


=========================
جست و جوی سایت رو میزنم این رو میگه :

connection to localhost:9312 failed (errno=111, msg=Connection refused)
تو سایت های خارجی و ایرانی هم چیزی متوجه نمیشم . اطلاعاتم از PHP هیچه ، فقط میخوام نمونه کدی باشه که دستکاریش کنم بزارم رو هاستم تا کارم راه بیفته .
کلا میخوام برنامه اندرویدم با JSON به دیتابیس وصل بشه .

پیشاپیش ممنون .

0xEHSAN
سه شنبه 22 دی 1394, 06:10 صبح
درود دوست عزیز از نظر من json یک قرار داد بین اپلیکیشن سرور و کلاینت که یک آرایه رو برمیگردونه این یک نمونه مثال ساده هست که جوابایی رو که مشخص کردم برمیگردونهhttp://s1.upload7.ir/uploads/KychEqTW.jpg/Capture.jpg

m_r_1989
سه شنبه 22 دی 1394, 21:30 عصر
json رو می تونی در php با یک آرایه بسازی و خودش همچی رو هندل می کنه فقط کافی این کار رو بکنی
آرایه رو بساز json بساز همین
خیلی کار ساده ای

echo json_encode($array)


پکیج تصفیه فاضلاب (http://campkrupp.net)

کلید و پریز
(http://adsa.ir/mosaic.htm)ثبت شرکت (http://saadatandishan.ir)

مهرداد سیف زاده
سه شنبه 22 دی 1394, 22:22 عصر
json‌و xml یک نوع بسیار خوب برای portable کردن داده‌هایی هست که قراره رد و بدل بشه هست
در json داده‌ها بصورت key:value ذخیره میشه. خوبی این روش اینه که براحتی بین همه زبانها میتونید دیتا رد و بدل کنید. مثلا در php متونید آرایه(که همون داده‌های دیتابیس هست) رو تبدیل به json کنید و برنامه آندروید بخونه و decode کنه
شما در دیتابیس هاست جدول زیر رو با دستور sql داده شده بسازید

CREATE TABLE `namecity` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`id` mediumint,
`name` varchar(255) default NULL,
`family` varchar(255) default NULL,
`country` varchar(100) default NULL,
PRIMARY KEY (`id`)
) AUTO_INCREMENT=1;

INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (1,"Byron","Damon V. Bonner","Belize"),(2,"Garrett","Dominic T. Baker","Jersey"),(3,"Yoshio","Zenaida Y. Campos","Uzbekistan"),(4,"Tanner","Hedwig J. Mathis","Nicaragua"),(5,"Fulton","Vernon T. Lowery","Virgin Islands, United States"),(6,"Craig","Amaya Y. Mckee","Aruba"),(7,"Lamar","Mason A. Ellison","Belize"),(8,"Dexter","Len B. Allen","Korea, North"),(9,"Abel","Gray H. Austin","Brunei"),(10,"Silas","Eagan N. Blankenship","French Southern Territories");
INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (11,"Yasir","Eleanor I. Dotson","Brunei"),(12,"Guy","Jameson H. Rich","Namibia"),(13,"Lucas","Hadley F. Underwood","Saint Pierre and Miquelon"),(14,"Beau","Desirae U. Norman","Montenegro"),(15,"Amery","Vivien S. Mcmahon","Georgia"),(16,"Kane","Hayfa P. Mckay","Malaysia"),(17,"Isaac","Craig H. Floyd","Portugal"),(18,"Cameron","Addison L. Middleton","Tuvalu"),(19,"Vincent","Briar D. Levy","Barbados"),(20,"Wallace","Alec R. Jarvis","France");
INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (21,"Dylan","Helen G. Gillespie","Belarus"),(22,"Elvis","Angelica D. Luna","Belgium"),(23,"Dorian","Eleanor G. Patton","South Sudan"),(24,"Graiden","Barbara R. Higgins","Bosnia and Herzegovina"),(25,"Eric","Velma K. Vance","French Polynesia"),(26,"Daniel","Charlotte Y. Fowler","Vanuatu"),(27,"Orson","Sara Y. Serrano","Jersey"),(28,"Kenneth","Roanna Q. Hayes","Burundi"),(29,"Adam","Reagan L. Hoffman","Luxembourg"),(30,"Emmanuel","Acton M. White","Saint Vincent and The Grenadines");
INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (31,"Roth","Caesar S. Bernard","Lithuania"),(32,"Lucian","Unity Y. Watson","Gibraltar"),(33,"Channing","Brianna N. Charles","Saint Lucia"),(34,"Kamal","Alexis K. Zimmerman","Colombia"),(35,"Erich","Isabella S. Cooper","Tajikistan"),(36,"David","Tucker U. Walker","Suriname"),(37,"Ray","Iona E. Franklin","Botswana"),(38,"Patrick","Miranda F. Nash","Malta"),(39,"Xavier","Gavin P. Logan","Morocco"),(40,"Chester","Ginger F. Holt","Iceland");
INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (41,"Harlan","Carissa M. Carney","Qatar"),(42,"Axel","Carly X. Kirk","Tanzania"),(43,"Charles","Mary J. Hunter","Montserrat"),(44,"Logan","Wyoming X. Waters","Switzerland"),(45,"Brandon","Kirsten R. Sanchez","Korea, North"),(46,"Mark","Carlos A. Copeland","Iraq"),(47,"Victor","Flynn L. Mcfadden","Turkmenistan"),(48,"Oscar","Cody D. Soto","Belgium"),(49,"Tyrone","Finn D. Wells","Hong Kong"),(50,"Grant","Ursa W. White","Belgium");
INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (51,"Quinn","Quemby Q. Lawson","Niger"),(52,"Victor","Malachi K. Holloway","Svalbard and Jan Mayen Islands"),(53,"Alan","Sean F. Mack","Russian Federation"),(54,"Neville","Alea U. Obrien","Japan"),(55,"Andrew","Byron D. Mccarty","Saint Lucia"),(56,"Robert","Russell Q. Jarvis","Singapore"),(57,"Eric","Briar D. Ruiz","Northern Mariana Islands"),(58,"Dieter","Drake C. Gonzales","Morocco"),(59,"Camden","Bianca H. Morgan","Philippines"),(60,"Castor","Anjolie E. Reese","Iraq");
INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (61,"Samson","Ivory J. Puckett","Lesotho"),(62,"Craig","Armando W. Hays","Brazil"),(63,"Rashad","Anastasia X. Chapman","Heard Island and Mcdonald Islands"),(64,"Ahmed","Madeson O. Willis","Slovakia"),(65,"Chaney","Hayes F. Wilkinson","Virgin Islands, British"),(66,"Flynn","Hammett A. Stewart","United Kingdom (Great Britain)"),(67,"Hilel","Oleg M. Chase","Germany"),(68,"Paul","Cameran A. Grimes","Brazil"),(69,"Wing","Kristen B. Hughes","Ghana"),(70,"Bernard","Sonia N. Parks","San Marino");
INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (71,"Jamal","Delilah N. Coffey","Saint Vincent and The Grenadines"),(72,"Branden","Hanna D. Trujillo","Azerbaijan"),(73,"Aladdin","Eric R. Maldonado","Christmas Island"),(74,"Harding","Shaeleigh K. Harrington","Brazil"),(75,"Carlos","Brady J. Holcomb","Finland"),(76,"Cody","Germane X. Boyd","Chile"),(77,"Carson","Serena O. Stevenson","Mayotte"),(78,"Dolan","Noelani G. Gallagher","Zimbabwe"),(79,"Ferris","Aretha U. Melton","Rwanda"),(80,"Gage","Jackson U. Pierce","Ghana");
INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (81,"Gavin","Zeph Y. Cook","Malta"),(82,"Flynn","Kirsten U. Hutchinson","Indonesia"),(83,"Ezekiel","Kelsey O. Barker","Bulgaria"),(84,"Reed","Kenyon B. Harper","Papua New Guinea"),(85,"Plato","Randall Y. Marks","Hong Kong"),(86,"Dante","Maggy C. Kramer","Bouvet Island"),(87,"Brandon","Nayda U. Haney","Bouvet Island"),(88,"Elliott","Darryl K. Moore","Italy"),(89,"Graiden","Michael V. Wheeler","Libya"),(90,"Brian","Sybil L. Hall","Puerto Rico");
INSERT INTO `namecity` (`id`,`name`,`family`,`country`) VALUES (91,"Phillip","Hoyt Y. Beach","Viet Nam"),(92,"Lionel","Harriet A. Zimmerman","Macao"),(93,"Avram","Chastity C. Schroeder","Isle of Man"),(94,"Carlos","Vivien E. Townsend","French Southern Territories"),(95,"Victor","Imogene K. Cherry","Bhutan"),(96,"Hoyt","Margaret T. Whitfield","Saint Helena, Ascension and Tristan da Cunha"),(97,"Adam","Kelly V. Sharp","Saint Pierre and Miquelon"),(98,"Hamilton","Dustin M. Cantrell","Mali"),(99,"Oleg","Sean A. Ferguson","Togo"),(100,"Caleb","Cailin B. Joyce","Togo");



بعدش فایل php زیر رو بنام getjson.php بر روی هاستت ذخیره کن. که اگر اسم سایت رو با نام فایل زدی این فایل رو فراخوانی کنه site.com/getjson.php


<?php
$database = 'yourDatabasesName';
$username = 'username';
$password = 'password';


$dsn = 'mysql:host=localhost;dbname='.$database;
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);


$dbh = new PDO($dsn, $username, $password, $options);


$stmt = $dbh->query("SELECT * FROM `namecity` ");
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);


echo json_encode($data);


حالا باید در برنامه نویسی آندروید این لینک رو فراخوانی کنید تا داده json رو بگیرید. بعدش دنبال decode کردن و گرفتن داده‌ها باشید

mehdi.safavie
چهارشنبه 23 دی 1394, 14:57 عصر
ممنون از جوابتون ، متوجه شدم به چی نیاز دارم .

خب آقا مهرداد این فایل php شما فقط Get هست . تو کد های سایت های دیگه هم تقریبا با این قسمتش مشکل داشتم . تو خط 2 ، 3 و 4 که اسم دیتابیس ، یوزر و پسورد هست ، من چطور میتونم بهشون مقدار بدم ؟ این سوال من مربوط به تخصص شما تو php میشه یا باید از بچه های اندروید بپرسم ؟

به عنوان مثال من داخل برنامه میخوام یه دستور SQL بنویسم به جای خط شماره 16 که شما ("SELECT * FROM `namecity` ") رو نوشتید .
صفحه ای که مقدار رو از برنامه اندروید من بگیره و Set کنه و در انتها نتیجه رو Result کنه یک صفحه جدا از این صفحه هست یا باید در کد نویسی اندروید روی همین صفحه که شما برام گذاشتید کار کنم ؟

H:Shojaei
چهارشنبه 23 دی 1394, 15:14 عصر
ممنون از جوابتون ، متوجه شدم به چی نیاز دارم .

خب آقا مهرداد این فایل php شما فقط Get هست . تو کد های سایت های دیگه هم تقریبا با این قسمتش مشکل داشتم . تو خط 2 ، 3 و 4 که اسم دیتابیس ، یوزر و پسورد هست ، من چطور میتونم بهشون مقدار بدم ؟ این سوال من مربوط به تخصص شما تو php میشه یا باید از بچه های اندروید بپرسم ؟

به عنوان مثال من داخل برنامه میخوام یه دستور SQL بنویسم به جای خط شماره 16 که شما ("SELECT * FROM `namecity` ") رو نوشتید .
صفحه ای که مقدار رو از برنامه اندروید من بگیره و Set کنه و در انتها نتیجه رو Result کنه یک صفحه جدا از این صفحه هست یا باید در کد نویسی اندروید روی همین صفحه که شما برام گذاشتید کار کنم ؟
نام دیتابیس و یوزر و رمز رو هم شما میتونید ارسال کنید با هر درخواست و یا اگر دیتابیس کلا یکیه تو کدها خود برنامه نویس ست میکنه و شما کلا کاری بهشون ندارید...

مهرداد سیف زاده
چهارشنبه 23 دی 1394, 17:03 عصر
ممنون از جوابتون ، متوجه شدم به چی نیاز دارم .

خب آقا مهرداد این فایل php شما فقط Get هست . تو کد های سایت های دیگه هم تقریبا با این قسمتش مشکل داشتم . تو خط 2 ، 3 و 4 که اسم دیتابیس ، یوزر و پسورد هست ، من چطور میتونم بهشون مقدار بدم ؟ این سوال من مربوط به تخصص شما تو php میشه یا باید از بچه های اندروید بپرسم ؟

به عنوان مثال من داخل برنامه میخوام یه دستور SQL بنویسم به جای خط شماره 16 که شما ("SELECT * FROM `namecity` ") رو نوشتید .
صفحه ای که مقدار رو از برنامه اندروید من بگیره و Set کنه و در انتها نتیجه رو Result کنه یک صفحه جدا از این صفحه هست یا باید در کد نویسی اندروید روی همین صفحه که شما برام گذاشتید کار کنم ؟

یه دستابیس روی هاست درست کن و مقدارهای user,pass و نام دیتابیس رو در اون مقدارها قرار بده. چون در حالت عادی دیتابیس قرار نیست هر بار عوض بشه.
بعدش باید query رو اون طور که میخوای براش request بفرستی و اونم جواب بده. از اون جا که با کد بیشتر متوجه میشی من نمونه کد زیر رو میزارم که برای این فایل شماره id رو ارسال میکنه و اونم همون id رو میگیره و به کاربر نشون میده. برای ادامه باید با دستورات پایه mysql آشنایی داشته باشی. و مطالعه کنی




<?php


$id = isset($_GET['id'])?$_GET['id']:null;


$database = 'yourDatabasesName';
$username = 'username';
$password = 'password';


$dsn = 'mysql:host=localhost;dbname='.$database;
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);


$dbh = new PDO($dsn, $username, $password, $options);
$data = array();


if($id == null)
{
$stmt = $dbh->query("SELECT * FROM `namecity` ");
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
else
{
$stmt = $dbh->query("SELECT * FROM `namecity` WHERE `id`='{$id}' ");
$data = $stmt->fetch(PDO::FETCH_ASSOC);
}


echo json_encode($data);