правильное получение информации из БД(web)
| |
d0x | Дата: Четверг, 06 Апреля 2017, 16:09 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Приветствую. Помогите разобраться с выводом информации из БД. Хочу сделать в отдельной сцене вывод информации из полученного скрипта php, делаю таким образом:
Код private string categoriya = "info"; private string url = "http://сайт/show_info.php"; //Переменная для хранения адреса public List<string> nameUI = new List<string>(); //public List<string> opisanieUI = new List<string>(); //public List<string> priceUI = new List<string>(); //private string cartinLink; //public RawImage imageUI; private bool check;
public IEnumerator Connects(string online) { if (online == "ok") { WWWForm form = new WWWForm (); form.AddField ("categoriya", categoriya); WWW connectW = new WWW (url, form); yield return connectW; if (connectW.isDone) { string[] arr = connectW.text.Split('+'); //тут парсинг полученной строки, разделяю строку с помощью +
for(int i=0; i < 20; i++) { nameUI[i] = arr[i]; check = true; }
} else if (connectW.error == null) { Debug.Log ("Ошибка подключения, проверьте интернет соединение!"); } } } void OnGUI() { if (check) { for (int i = 0; i < nameUI.Count; i++) { GUI.Label (new Rect (10, 10*i*i, 250, 100), " " + nameUI[i]); } } }
void Start() { StartCoroutine(Connects("ok")); }
код ужасный я понимаю) много ошибок и т.д. я хочу понять как сделать логику правильно, а потом доводить его до ума.
код на сайте:
Код $categoriya = $_REQUEST['categoriya'];
if($categoriya == "info") {
$result = mysql_query("SELECT name,opisanie,price FROM images"); if($result) {
while ($rows = mysql_fetch_array($result)) { echo "+Имя: ".$rows['name']; echo "+Описание: ".$rows['opisanie']; echo "+Цена: ".$rows['price']; } } } mysql_close();
выводит информацию в сцену, но нужно чтобы при добавлению данных в БД на сайте, автоматически в сцене добавлялась информация как на скриншоте prntscr.com/et5qrs
есть 1,2,3,4 когда добавиться в БД еще информация по 2м товарам, они как на скрине добавляются в 5,6 и т.д.... Подтолкните куда копать?)
Сообщение отредактировал d0x - Четверг, 06 Апреля 2017, 17:53 |
|
| |
Xakep | Дата: Четверг, 06 Апреля 2017, 19:03 | Сообщение # 2 |
めちゃくちゃちゃ
Сейчас нет на сайте
| Цитата d0x ( ) Подтолкните куда копать?) Если я правильно понял, то тебе копать в сторону соккетов.
|
|
| |
d0x | Дата: Суббота, 08 Апреля 2017, 00:17 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Цитата Xakep ( ) Если я правильно понял, то тебе копать в сторону соккетов. это можно, но все равно будет вопрос как полученную информацию распределить как список. Допустим хоть через сокет, хоть через WWW я получу информацию из БД, но как мне выставлять автоматически список информации как тут http://prntscr.com/et5qrs в 5 и 6 на скрине, если до этого там было пусто. Информацию я получаю, не получается именно выравнивать это что ли))) Пример в тексте: 1 - Информация по товару( имя, описание, цена ) 2 - Информация по товару( имя, описание, цена ) 3 - Информация по товару( имя, описание, цена ) 4 - Информация по товару( имя, описание, цена ) 5 - тут нет ничего 6 - тут нет ничего 7 - тут нет ничего 8 - тут нет ничего ..... .....
там где "тут нет ничего" вставляются данные( не динамически ) которые добавляются в БД на сервере.
У меня в данный момент в БД 2 информации по 2-м товарам , мне даже не получается нормально вывести так:
1 - Информация по товару( имя, описание, цена ) 2 - Информация по товару( имя, описание, цена )
У меня вообще выводится криво как то все... Объясните пожалуйста как работать правильно с полученной информацией + UI(а именно Text)
Понимаю что это нужно делать в циклах..но как правильно...
Вроде бы расписал проблему)Добавлено (08 апреля 2017, 00:17) --------------------------------------------- никто не подскажет?((
Сообщение отредактировал d0x - Четверг, 06 Апреля 2017, 22:48 |
|
| |
Эргалон | Дата: Суббота, 08 Апреля 2017, 11:49 | Сообщение # 4 |
Вездесущий
Сейчас нет на сайте
| Почитай про POST/GET, а также про JSON.
Кубариум Rise of the dark lords
|
|
| |
d0x | Дата: Суббота, 08 Апреля 2017, 13:08 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Цитата Эргалон ( ) Почитай про POST/GET, а также про JSON. Так я же информацию получаю нормально в unity, проблема именно работы с этой информацией в UI именно.
|
|
| |
Эргалон | Дата: Суббота, 08 Апреля 2017, 13:34 | Сообщение # 6 |
Вездесущий
Сейчас нет на сайте
| d0x, Получать информацию
Цитата echo "+Имя: ".$rows['name']; echo "+Описание: ".$rows['opisanie']; echo "+Цена: ".$rows['price']; В таком виде, это не нормально.
Кубариум Rise of the dark lords
|
|
| |
d0x | Дата: Среда, 12 Апреля 2017, 14:02 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Цитата Эргалон ( ) d0x, Получать информацию Цитата echo "+Имя: ".$rows['name']; echo "+Описание: ".$rows['opisanie']; echo "+Цена: ".$rows['price'];
В таком виде, это не нормально.
Это да)) буду в json изменять, в коде вообще нужно много изменить... Но вот самое главное в данный момент - это именно правильно связать с UI(Text) это все...
Добавлено (09 апреля 2017, 20:15) --------------------------------------------- С этим вопросом разобрался...в json гораздо удобнее) как и говорили.
Теперь проблема в другом... Не могу вывести картинки. В бд к каждому товару есть картинки( линк на картинку), пробую по всякому..не получается...помогите) код:
Код private string categoriya = "40-50"; private string url = "http://сайт/show_info.php"; //Переменная для хранения адреса public JSONObject JO; public WWW connectW; public Texture[] imgCor; public List<string> linkList = new List<string>();
void Start() { WWWForm form = new WWWForm (); //Создаём новую форму //Добавляем в форму новые данные form.AddField ("categoriya", categoriya); //Создаём новое подключение connectW = new WWW (url, form);
}
void Update() { if (connectW != null && connectW.isDone) { if(connectW.error == null) { JO = new JSONObject(connectW.text); connectW = null; } } }
public IEnumerator ConnectImage(string listy) { WWW connectWImage = new WWW (listy.ToString ()); yield return connectWImage; imgCor[0] = connectWImage.texture; }
void OnGUI() { if (JO != null) { GUILayout.BeginArea (new Rect (10, 10, 1000, 1000)); foreach(var json in JO.list) { var data = json.ToDictionary ();
for (int i = 0; i < 2; i++) { linkList [i] = data ["link"].Replace ("\\", ""); } GUILayout.Label(imgCor[0]);
GUILayout.Label("Название: " + data["name"]); GUILayout.Label("Описание: " + data["opisanie"]); GUILayout.Label("Цена: " + data["price"]); GUILayout.Label("Линк: " + data["link"]);
} StartCoroutine (ConnectImage(linkList[0])); GUILayout.EndArea (); } }
Добавлено (10 апреля 2017, 01:26) --------------------------------------------- получилось сделать циклами.. А теперь проблема в GUI... Не выводится(( в чем может быть проблема?
Код void OnGUI() { if (JO != null) {
for (int i = 0; i < 1; i++) { if (check2 == false) { foreach (var json in JO.list) { GUILayout.BeginArea (new Rect (10, 10, 1000, 1000)); var data = json.ToDictionary (); linkList [i++] = data ["link"].Replace ("\\", ""); GUILayout.Label (imgCor [i]); GUILayout.Label ("Название: " + data ["name"]); GUILayout.Label ("Описание: " + data ["opisanie"]); GUILayout.Label ("Цена: " + data ["price"]); GUILayout.Label ("Линк: " + data ["link"]);
StartCoroutine (ConnectImage(i));
GUILayout.EndArea (); }
check2 = true; }
}
} }
Добавлено (12 апреля 2017, 14:02) --------------------------------------------- никто не подскажет как порядок сделать нормальный в UI? Сейчас товар добавляется лесенкой по вертикали...хотелось бы в 2 колонки.... где 1 - это есть товар, 0 - нет товара...пусто
1 1 1 1 1 0 0 0 ...... и т.д.
А сейчас
1 1 1 0 0 ...............
Сообщение отредактировал d0x - Среда, 12 Апреля 2017, 14:02 |
|
| |
Vinchensoo | Дата: Среда, 12 Апреля 2017, 19:58 | Сообщение # 8 |
Злобный социопат с комплексом Бога
Сейчас нет на сайте
| То, что тебе нужно- называется long pooling. Еще можно почитать про push notifications. Сокеты для этой задачи не нужны, будет сильно сложнее и не сильно лучше/быстрее.
|
|
| |
Эргалон | Дата: Четверг, 13 Апреля 2017, 00:46 | Сообщение # 9 |
Вездесущий
Сейчас нет на сайте
| Цитата никто не подскажет как порядок сделать нормальный в UI? Сейчас товар добавляется лесенкой по вертикали...хотелось бы в 2 колонки.... где 1 - это есть товар, 0 - нет товара...пусто Не совсем понятно, что тебе надо. Любой элемент интерфейса имеет локальные/глобальные координаты, а также размеры, вот и располагай блоки с информацией, опираясь на эти данные.
Кубариум Rise of the dark lords
Сообщение отредактировал Эргалон - Четверг, 13 Апреля 2017, 00:51 |
|
| |
d0x | Дата: Четверг, 13 Апреля 2017, 01:12 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| Цитата Эргалон ( ) Не совсем понятно, что тебе надо. Любой элемент интерфейса имеет локальные/глобальные координаты, а также размеры, вот и располагай блоки с информацией, опираясь на эти данные. Верно, но координаты получается будут с каждым новым товаром разные, будут как бы сдвигаться вниз, соответственно по x и по y будут сдвигаться
|
|
| |
Эргалон | Дата: Четверг, 13 Апреля 2017, 01:44 | Сообщение # 11 |
Вездесущий
Сейчас нет на сайте
| d0x, Ну они будут сдвигаться вниз, если ты так напишешь, то есть когда ты создаешь объект интерфейса программным путем, он по умолчанию находится в 0:0 координатах. Соответственно, с каждой новой записью, ты опускаешь блоки по Y. Если надо в 2 колонки, то проводишь сортировку, там где 1, смещение только по Y, там где 0, смещение по X и по Y. Ну вернее там где 1, может быть смещение и по X, если к примеру надо всё расположить в центре экрана. Ну в общем суть ты понял я думаю.
Кубариум Rise of the dark lords
Сообщение отредактировал Эргалон - Четверг, 13 Апреля 2017, 01:46 |
|
| |
d0x | Дата: Пятница, 28 Апреля 2017, 21:32 | Сообщение # 12 |
частый гость
Сейчас нет на сайте
| я так понимаю нужно менять в GUILayout.BeginArea (new Rect (20*12*i, 10, 500, 900)); что то:
Код void OnGUI() { if (JO != null) {
for (int i = 0; i < 1; i++) { foreach (var json in JO.list) { GUILayout.BeginArea (new Rect (20*12*i, 10, 500, 900)); // Тут пробую ставить разные значения, все равно не та как нужно ставит( иногда лесенкой вниз, иногда по горизонтали... scrollPosition = GUILayout.BeginScrollView (scrollPosition, GUILayout.Width (500), GUILayout.Height (900));
var data = json.ToDictionary (); linkList [i++] = data ["link"].Replace ("\\", "");
GUILayout.Label (imgCor [i-1]); GUILayout.Label ("Название: " + data ["name"]); GUILayout.Label ("Описание: " + data ["opisanie"]); GUILayout.Label ("Цена: " + data ["price"]); GUILayout.Label ("\n"); if (check2 == false) { StartCoroutine (ConnectImage(i)); } GUILayout.EndScrollView (); GUILayout.EndArea (); }
} check2 = true;
}
}
помогите понять как именно сдвигать в две колонки вертикальныеДобавлено (14 апреля 2017, 22:12) --------------------------------------------- все еще нуждаюсь в помощи... пытаюсь как то сортировать, все равно сдвигаются сразу все товары... пробовал через четные нечетные... не понимаю, вроде и читал, именно про это нигде не нашел. Добавлено (16 апреля 2017, 23:53) --------------------------------------------- подскажите кто-нибудь...или как можно сделать альтернативный вариант с UI, точно такое же добавление информации. В ui вроде бы проще сделать такую сортировку... Но как добавлять(создавать) новый элемент UI...
public List<Text> info; - тут допустим выровняю в 2 колонки и закину нужные элементы текста. Но как сделать их создание вниз по колонке? Instantiate ? Добавлено (28 апреля 2017, 21:32) --------------------------------------------- все еще не решил задачку(
Сообщение отредактировал d0x - Четверг, 13 Апреля 2017, 11:41 |
|
| |
|