Воскресенье, 16 Декабря 2018, 13:30

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » правильное получение информации из БД(web)
правильное получение информации из БД(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 ()
Подтолкните куда копать?)

Если я правильно понял, то тебе копать в сторону соккетов.




Проекты:
Aphalin Compiler - новый язык программирования
E2DIT - Среда разработки, редактор уровней для 2D игр на Haxe
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
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » правильное получение информации из БД(web)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2018 Рейтинг