Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по DB 
:(
    Опции темы
Aliance
Дата 19.5.2006, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Доброго времени суток!

Пытался осуществить свою задумку, но никак не получается smile

Есть текст:
Код

$matches[2][28] = "clip80=Серьги Кровавой Луны\nДолговечность: 1/43,kulon207=Sunrise Amulet\nУровень жизни: +33\nДолговечность: 1/59,mace67=Булава Кровавой Луны +5\nУдар: 27 - 39\nДолговечность: 40/45\nНа ручке выгравирована надпись: чупа-чупс + 5,armor106=Броня Кровавой Луны\nУровень жизни: +126\nБроня корпуса: 19-54 (18+d36)\nДолговечность: 40/95,belt36=Пояс Кровавой Луны\nБроня пояса: 19-63 (18+d45)\nДолговечность: 29/40,ring116=Кольцо Кровавой Луны\nУровень жизни: +33\nДолговечность: 0/42,ring116=Кольцо Кровавой Луны\nУровень жизни: +33\nДолговечность: 7/34,ring116=Кольцо Кровавой Луны\nУровень жизни: +33\nДолговечность: 0/43,helmet80=Шлем Кровавой Луны\nУровень жизни: +33\nБроня головы: 10-36 (9+d27)\nДолговечность: 40/54,knife72=Кинжал Кровавой Луны\nУдар: 6 - 17\nДолговечность: 40/50,naruchi77=Перчатки Кровавой Луны\nДолговечность: 15/28,boots22=Ботинки Кровавой Луны\nУровень жизни: +33\nБроня ног: 9-35 (8+d27)\nДолговечность: 39/46,naruchi82=Наручи Одаренности\nДолговечность: 7/40,roba_s1=Футболка БК\nУровень жизни: +6\nБроня корпуса: 2-4 (1+d3)\nДолговечность: 0/9\nНомер: #3824,cloak1=Плащ Ветерана\nДолговечность: 73/98\nВстроена магия: Лечение тяжелых травм / 51 шт.\nНа плаще вышита надпись: Достойным..."


Разбиваю его функцией explode():
Код

$objects = explode(',', $matches[2][28]);


Далее идет подключение в БД:
Код

$link = mysql_connect('---', '---', '---');
if (!$link) {
   die('Ошибка подключения к БД.\n<br />');
}

if(!mysql_select_db("---")) {
   die('Неверно выбранна БД.\n<br />');
}


Затем сам проблемный код:
Код

for ($i = 0; $i < count($objects); $i++) {
   $items[$i] = explode('=', $objects[$i]);
}

for ($i = 0; $i < count($items); $i++) {
   for ($j = 0; $j < count($items); $j++) {

      $ring1 = mysql_query("SELECT * FROM `encyclopedia` WHERE `link` = '{$items[$i][$j]}' LIMIT 1") or die('Не удалость выполнить запрос!');

      if ($ring1) {
         while ($row = mysql_fetch_array($ring1, MYSQL_ASSOC)) {
            $data[] = $row;
         }
         $section = $data[0]['section'];
         if ($section == "cloak") {
            $cloak = $data[0]['link'];
         }
         if ($section == "belt") {
            $belt = $data[0]['link'];
         }
      }
   }
}


И не получается то что я запланировал. Теперь расскажу что именно:
после окончательных разбивок, мы получаем массив $items. Возьмем для примера его первый элемент. Там должна хранится такая строка: clip80
Далее мы ищем по базе столбец, в котором поле link был бы точно равен clip80. Если такая строка найдена, то мы берем поле section этой строки и запоминаем в переменную $section. Вроде все правильно написал...
Далее идет простейшее сравнение ее с константой и при положительном ответе в переменную записывается поле link этого же столбца.
Помогите найти ошибку smile 
PM MAIL WWW ICQ Skype   Вверх
-=Ustas=-
Дата 20.5.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



А ты уверен, что вот здесь правильно?
Код

for ($i = 0; $i < count($items); $i++) {
   for ($j = 0; $j < count($items); $j++) {



Наверное все-таки ты так хотел:
Код

for ($i = 0; $i < count($items); $i++) {
   for ($j = 0; $j < count($items[$i]); $j++) {



Добавлено @ 11:32 
И по-моему правильнее будет так smile
Код

for ($i = 0; $i < count($objects); $i++) {
   $items[$i] = explode('=', $objects[$i]);
}

for ($i = 0; $i < count($items); $i++) {
    $ring1 = mysql_query("SELECT * FROM `encyclopedia` WHERE `link` = '".$items[$i][0]."' LIMIT 1") or die('Не удалость выполнить запрос!');
    if ($obj = mysql_fetch_object($ring1)) {
        $section = $obj->section; // Заносим в section
        $$section = $obj->link; // Заносим значение link в переменную с именем, которое содержится в $section
        // т.е. если у тебя $section равен cloak , то в этой строке появиться переменная $cloak
    }
}
  

Это сообщение отредактировал(а) -=Ustas=- - 20.5.2006, 11:34


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Aliance
Дата 21.5.2006, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Спасибо, помогло. Все работает замечательно, но есть проблема.
Как мне поступить в, скажем, такой ситуации. Есть такая строка:
Код

$matches[2][28] = "ring116=Кольцо Кровавой Луны\nУровень жизни: +33\nДолговечность: 0/42,ring116=Кольцо Кровавой Луны\nУровень жизни: +33\nДолговечность: 7/34,ring115=Кольцо Ума\nУровень жизни: +99\nДолговечность: 0/100"


После разбивки получается следующее:
Код

$objects = explode(',', $matches[2][28]);

$objects[0] = "ring116=Кольцо Кровавой Луны\nУровень жизни: +33\nДолговечность: 0/42";
$objects[1] = "ring116=Кольцо Кровавой Луны\nУровень жизни: +33\nДолговечность: 7/34";
$objects[2] = "ring115=Кольцо Ума\nУровень жизни: +99\nДолговечность: 0/100";


И мне нужно получить в переменные $ring1, $ring2 и $ring3 соответственно строки:
ring116, ring116 и ring115.

Не знаю даже как это осуществить. Тоесть нужно исправить вот этот код:
Код

         if ($section == "ring") {
            $ring1 = $data->link;
         }
         if ($section == "ring") {
            $ring2 = $data->link;
         }
         if ($section == "ring") {
            $ring3 = $data->link;
         }


Он работает, но занесет, естественно, во все три переменные только первое вхождение smile 
PM MAIL WWW ICQ Skype   Вверх
-=Ustas=-
Дата 22.5.2006, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



Может быть так:
Код

$countRing = 1;
for ($i = 0; $i < count($items); $i++) {
    $ring1 = mysql_query("SELECT * FROM `encyclopedia` WHERE `link` = '".$items[$i][0]."' LIMIT 1") or die('Не удалость выполнить запрос!');
    if ($obj = mysql_fetch_object($ring1)) {
        $section = $obj->section; // Заносим в section
        $$section = $obj->link; // Заносим значение link в переменную с именем, которое содержится в $section
        // т.е. если у тебя $section равен cloak , то в этой строке появиться переменная $cloak
        if ($section == 'ring') {
            $ring.$countRing = $data->link;
            $countRing++;
        }
    }
}
 


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Aliance
Дата 22.5.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 3
Всего: 137



Вот так - не сработало:
Код

         if ($section == "ring") {
            $ring.$countRing = $data->link;
            $ring_name.$countRing = $data->name;
            $countRing++;
         }

Хотя ошибку не выдавал (обращался к переменной потом, как $ring1 и $ring_name1)

Добавлено @ 19:21 
Но отлично сработало вот так:
Код

$ring = array();
$countRing = 1;
for ($i = 0; $i < count($items); $i++) {

      $objects_from_db = mysql_query("---") or die('Не удалость выполнить запрос!');

      if ($data = mysql_fetch_object($objects_from_db)) {

         $section = $data->section;

         if ($section == "ring") {
            $ring[$countRing] = $data->link;
            $ring_name[$countRing] = $data->name;
            $countRing++;
         }
      }
}
 
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.