Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос к полю с массивом?
 
 автор: xpom   (08.11.2006 в 20:26)   письмо автору
 
 

Уважаемые профессионалы!
Подскажите как сделать запрос к полю в таблице которое содержит массив?

   
 
 автор: Trianon   (08.11.2006 в 20:32)   письмо автору
 
   для: xpom   (08.11.2006 в 20:26)
 

Вообще-то такого типа в MySQL нет.
Впрочем, запрос к полю в таблице выглядит независимо от типа:

SELECT имя_поля FROM имя_таблицы

   
 
 автор: xpom   (08.11.2006 в 21:31)   письмо автору
 
   для: Trianon   (08.11.2006 в 20:32)
 

Я с помощью такого запроса делаю

SELECT имя_поля FROM имя_таблицы 


и вывожу данные определенного поля в html и вот что оно выводит: Array)

   
 
 автор: Trianon   (08.11.2006 в 21:36)   письмо автору
 
   для: xpom   (08.11.2006 в 21:31)
 

значит как-то не так выводите. С типом поля это не связано совершенно.

   
 
 автор: xpom   (08.11.2006 в 21:52)   письмо автору
 
   для: Trianon   (08.11.2006 в 21:36)
 

Можете подсказать как еще можно выводить данные?
Я вот как вывожу:

 $opr = mysql_query("SELECT * FROM Info WHERE INID=$t",$db);

       while ($tup= mysql_fetch_row($opr))
      {
                $frt=$tup[9];

       print ("$frt");

        }

и получается Array)?

   
 
 автор: cheops   (08.11.2006 в 23:26)   письмо автору
 
   для: xpom   (08.11.2006 в 21:52)
 

Не должно бы такого получаться, если только строка "Array)" не попала в базу данных. Выведите содержимое массива $tup - что в нём?
<?php
  
echo "<pre>";
  
print_r($tup);
  echo 
"</pre>";
?>

   
 
 автор: xpom   (09.11.2006 в 23:05)   письмо автору
 
   для: cheops   (08.11.2006 в 23:26)
 

Вывел по этому коду:

<?php 
  
echo "<pre>"
  
print_r($tup); 
  echo 
"</pre>"
?> 

получается вывело содержимое всех полей таблицы:

Array
(
    [0] => 2
    [1] => 4
    [2] => er
    [3] => hgfhjgfjhcfj
    [4] => jhgcjfgcghfh
    [5] => hjfgjhgjhgj
    [6] => gjghjgjhgf
    [7] => hgfjhfghjfgj
    [8] => 
    [9] => Array)
)



Можите подсказать как правильно данные из массива array занести в одно определенное поле?

   
 
 автор: cheops   (09.11.2006 в 23:17)   письмо автору
 
   для: xpom   (09.11.2006 в 23:05)
 

Ага всё-таки поле содержит строку "Array)"...
>Можите подсказать как правильно данные из массива array занести в одно определенное поле?
Тут два подхода, но оба они основаны на преобразовании массива в строку. Первый заключается в использовании фукнкции implode($raz, $arr), которая объединяет элементы массива $arr в строку, разделяя их разделителем $raz, например
<?php
  $str 
implode("|"$arr);
?>

Рзабить полученную строку на отдельные элементы можно при помощи функции implode(). Однако такой способ не всегда удобен, так как элементы массива могут содержать разделитель, кроме того, сам массив $arr может быть многомерным. В этом случае прибегают к функции serialize(), предназначенной для упаковки массивов и объектов
<?php
  $str 
serialize($arr);
?>

Получить массив из строки обратно можно при помощи функции unserialize().

   
 
 автор: xpom   (10.11.2006 в 17:33)   письмо автору
 
   для: cheops   (09.11.2006 в 23:17)
 

Эти функции

<?php 
  $str 
serialize($arr); 
?> 



<?php 
  $ght 
unserialize(); 
?> 

помещаются в цикл?

   
 
 автор: cheops   (10.11.2006 в 18:51)   письмо автору
 
   для: xpom   (10.11.2006 в 17:33)
 

Если у вас много массивов, которые нужно преобразовать в строку, да, они помещаются в цикл.

   
 
 автор: xpom   (10.11.2006 в 21:31)   письмо автору
 
   для: cheops   (10.11.2006 в 18:51)
 

Можите показать как это будет выглядеть?

   
 
 автор: xpom   (10.11.2006 в 22:12)   письмо автору
 
   для: xpom   (10.11.2006 в 21:31)
 

Я вот попробывал применить эти функции, в строку преобразовать получилось, а вот из строки в массив выдает array

 $arr = array();
             if(mysql_num_rows($twn))
             {
                 while($town = mysql_fetch_array($twn))
                {
                   if(!empty($_POST[$town['GID']])) $arr[] = $town['GID'];
                }
             }


         
             echo "<pre>";
               print_r($arr);
              echo "</pre>";

            for($i = 0; $i < count($arr); $i++){ $arr[$i] = "('".$arr."')";
             $str = serialize($arr);

             }

           $gfty=unserialize($str);

            echo "<pre>";
               print_r($gfty);
              echo "</pre>";


Вот что выводит
До преобразования:

Array
(
    [0] => 2
    [1] => 3
)



После преобразования:

Array
(
    [0] => ('Array')
    [1] => ('Array')
)


Подскажите пожалуйста в чем ошибка?

   
 
 автор: xpom   (10.11.2006 в 23:56)   письмо автору
 
   для: xpom   (10.11.2006 в 22:12)
 

В этом я ошибку нашел!

Подскажите пожалуйста как можно вытащить из массива только чифры после стрелки

Array 

    [0] => 2 
    [1] => 3 



т.е. в нашем случае чифры 2 и 3, чтобы потом можно было сравнить эти значения?

   
 
 автор: cheops   (11.11.2006 в 00:13)   письмо автору
 
   для: xpom   (10.11.2006 в 23:56)
 

Следует обратиться по индексу массива,
<?php
  
echo $arr[0]; // 2
  
echo $arr[1]; // 3
?>

   
 
 автор: xpom   (11.11.2006 в 13:20)   письмо автору
 
   для: cheops   (11.11.2006 в 00:13)
 

Подскажите а как это сделать в цикле?
Вот я делаю, что-то не выходит

while($top= mysql_fetch_array($tfs))
      {

        if(!empty($town['FID']))
        {
          $oro[] = $town['TID'];
        
          if($oro == $reet)
            }
        }

Вот это $oro и $reet массивы,подскажите как сделать чтобы их значения индексов не зависимо от того какой индекс у этого значения, сравнивались и если равны
 echo 'info1';
иначе
 echo 'info2';
?Помогите плиз!!!

   
 
 автор: cheops   (11.11.2006 в 14:46)   письмо автору
 
   для: xpom   (11.11.2006 в 13:20)
 

>Вот это $oro и $reet массивы, а как сделать чтобы ихние индексы сравнивались?
Именно индексы? Что содержаит массив $reet и что подразумевается здесь под равенством массивов? Равенство их соответствующих членов? Или вы хотите проверить наличие какого-то элемента в другом массиве?

   
 
 автор: xpom   (11.11.2006 в 15:22)   письмо автору
 
   для: cheops   (11.11.2006 в 14:46)
 

Нет не индексы а значение индексов,т.е. проверить наличие каких-то элементов в другом массиве?
Массив $oro содержит:

Array
(
    [0] => 3
    [1] => 4


Массив $reet содержит:

Array
(
    [0] => 4
    [1] => 5
    [2] => 6


нужно проверить есть ли елементы первого массива, в нашем случае 3 и 4, во втором массиве, если да

echo 'info1'; 

иначе

echo 'info2'; 

   
 
 автор: cheops   (11.11.2006 в 16:19)   письмо автору
 
   для: xpom   (11.11.2006 в 15:22)
 

Уже более понятно, однако остаётся вопрос все значения массива $oro должны быть найдены в массиве $reet, чтобы вывести info1 или достаточно, чтобы совпал лишь один элемент? Вот допустим 4 из $oro входит в $reet, а 3 - нет - что в этом случае выводить?

   
 
 автор: xpom   (11.11.2006 в 17:31)   письмо автору
 
   для: cheops   (11.11.2006 в 16:19)
 

Проверится должны все значения на совпадение.

Когда значения совпадают - выводим info1.
Когда значения не совпадают - выводим info2.

   
 
 автор: cheops   (11.11.2006 в 22:31)   письмо автору
 
   для: xpom   (11.11.2006 в 17:31)
 

В массивах много значений, сравнивать их можно множествам способов - если число элементов в массивах различно - это разные массивы или одинаковые? Массив (2, 3) и массив (3, 2) одинаковые? А массивы (1, 1) и (1, 1, 2)? Напишите конечную цель, чего вы хотите добиться?

   
 
 автор: xpom   (11.11.2006 в 23:14)   письмо автору
 
   для: cheops   (11.11.2006 в 22:31)
 

Число элементов в массивах различно.
Второй массив сделан из первого, т.е. второй-это до преобразования в строку, а первый это некоторые элементы второго преобразованный из строки.
Цель следующая: сранить массивы и те значения которые совпадут чтобы отображались в checkbox с флажками.

   
 
 автор: cheops   (11.11.2006 в 23:21)   письмо автору
 
   для: xpom   (11.11.2006 в 23:14)
 

В этом случае разумно воспользоваться функцией array_intersect(), которая возвращает схождение массивов
<?php
  $arr 
array_intersect($oro$reet);
?>

Массив $arr будет содержать все значения массива $oro, которые входят в состав массива $reet.

   
 
 автор: xpom   (12.11.2006 в 12:22)   письмо автору
 
   для: cheops   (11.11.2006 в 23:21)
 

Есть еще вопросик: вот эти значения массива $oro, которые входят в состав массива $reet мы лтобразим в checkbox с флажками, а как отобразить остальные, которые не вгодят в состав массива $reet только без флажко?

   
 
 автор: cheops   (12.11.2006 в 12:31)   письмо автору
 
   для: xpom   (12.11.2006 в 12:22)
 

Для этого обычно флажки формируют по максимальному массиву $reet, а отмечают по массиву $oro. Тут удобнее воспользоваться функцией in_array(), которая позволяет выяснить входит текущее значение в массив или нет.
<?php
  
for($i 0$i count($reet); $i++)
  {
    if(
in_array($reet[$i], $oro)) $checked "checked";
    else 
$checked "";
    echo 
"<input type=checkbox name=flag[".$reet[$i]."] $checked><br>";
  }
?>

   
 
 автор: xpom   (12.11.2006 в 15:39)   письмо автору
 
   для: cheops   (12.11.2006 в 12:31)
 

Большое Вам человеческое спасибо!!!

   
 
 автор: Trianon   (08.11.2006 в 23:45)   письмо автору
 
   для: xpom   (08.11.2006 в 21:52)
 

А что в этой ячейке показывает phpMyAdmin?

   
 
 автор: xpom   (09.11.2006 в 23:07)   письмо автору
 
   для: Trianon   (08.11.2006 в 23:45)
 

А как это можно посмотреть?

   
 
 автор: Unkind   (11.11.2006 в 15:29)   письмо автору
 
   для: xpom   (09.11.2006 в 23:07)
 

Зайти в phpMyAdmin =)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования