|
|
|
| Уважаемые профессионалы!
Подскажите как сделать запрос к полю в таблице которое содержит массив? | |
|
|
|
|
|
|
|
для: xpom
(08.11.2006 в 20:26)
| | Вообще-то такого типа в MySQL нет.
Впрочем, запрос к полю в таблице выглядит независимо от типа:
SELECT имя_поля FROM имя_таблицы
|
| |
|
|
|
|
|
|
|
для: Trianon
(08.11.2006 в 20:32)
| | Я с помощью такого запроса делаю
SELECT имя_поля FROM имя_таблицы
|
и вывожу данные определенного поля в html и вот что оно выводит: Array) | |
|
|
|
|
|
|
|
для: xpom
(08.11.2006 в 21:31)
| | значит как-то не так выводите. С типом поля это не связано совершенно. | |
|
|
|
|
|
|
|
для: 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)? | |
|
|
|
|
|
|
|
для: xpom
(08.11.2006 в 21:52)
| | Не должно бы такого получаться, если только строка "Array)" не попала в базу данных. Выведите содержимое массива $tup - что в нём?
<?php
echo "<pre>";
print_r($tup);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: 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 занести в одно определенное поле? | |
|
|
|
|
|
|
|
для: 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(). | |
|
|
|
|
|
|
|
для: cheops
(09.11.2006 в 23:17)
| | Эти функции
<?php
$str = serialize($arr);
?>
|
<?php
$ght = unserialize();
?>
|
помещаются в цикл? | |
|
|
|
|
|
|
|
для: xpom
(10.11.2006 в 17:33)
| | Если у вас много массивов, которые нужно преобразовать в строку, да, они помещаются в цикл. | |
|
|
|
|
|
|
|
для: cheops
(10.11.2006 в 18:51)
| | Можите показать как это будет выглядеть? | |
|
|
|
|
|
|
|
для: 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 в 22:12)
| | В этом я ошибку нашел!
Подскажите пожалуйста как можно вытащить из массива только чифры после стрелки
Array
(
[0] => 2
[1] => 3
)
|
т.е. в нашем случае чифры 2 и 3, чтобы потом можно было сравнить эти значения? | |
|
|
|
|
|
|
|
для: xpom
(10.11.2006 в 23:56)
| | Следует обратиться по индексу массива,
<?php
echo $arr[0]; // 2
echo $arr[1]; // 3
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.11.2006 в 00:13)
| | Подскажите а как это сделать в цикле?
Вот я делаю, что-то не выходит
while($top= mysql_fetch_array($tfs))
{
if(!empty($town['FID']))
{
$oro[] = $town['TID'];
if($oro == $reet)
}
}
|
Вот это $oro и $reet массивы,подскажите как сделать чтобы их значения индексов не зависимо от того какой индекс у этого значения, сравнивались и если равны иначе ?Помогите плиз!!! | |
|
|
|
|
|
|
|
для: xpom
(11.11.2006 в 13:20)
| | >Вот это $oro и $reet массивы, а как сделать чтобы ихние индексы сравнивались?
Именно индексы? Что содержаит массив $reet и что подразумевается здесь под равенством массивов? Равенство их соответствующих членов? Или вы хотите проверить наличие какого-то элемента в другом массиве? | |
|
|
|
|
|
|
|
для: cheops
(11.11.2006 в 14:46)
| | Нет не индексы а значение индексов,т.е. проверить наличие каких-то элементов в другом массиве?
Массив $oro содержит:
Array
(
[0] => 3
[1] => 4
|
Массив $reet содержит:
Array
(
[0] => 4
[1] => 5
[2] => 6
|
нужно проверить есть ли елементы первого массива, в нашем случае 3 и 4, во втором массиве, если да
иначе
| |
|
|
|
|
|
|
|
для: xpom
(11.11.2006 в 15:22)
| | Уже более понятно, однако остаётся вопрос все значения массива $oro должны быть найдены в массиве $reet, чтобы вывести info1 или достаточно, чтобы совпал лишь один элемент? Вот допустим 4 из $oro входит в $reet, а 3 - нет - что в этом случае выводить? | |
|
|
|
|
|
|
|
для: cheops
(11.11.2006 в 16:19)
| | Проверится должны все значения на совпадение.
Когда значения совпадают - выводим info1.
Когда значения не совпадают - выводим info2. | |
|
|
|
|
|
|
|
для: xpom
(11.11.2006 в 17:31)
| | В массивах много значений, сравнивать их можно множествам способов - если число элементов в массивах различно - это разные массивы или одинаковые? Массив (2, 3) и массив (3, 2) одинаковые? А массивы (1, 1) и (1, 1, 2)? Напишите конечную цель, чего вы хотите добиться? | |
|
|
|
|
|
|
|
для: cheops
(11.11.2006 в 22:31)
| | Число элементов в массивах различно.
Второй массив сделан из первого, т.е. второй-это до преобразования в строку, а первый это некоторые элементы второго преобразованный из строки.
Цель следующая: сранить массивы и те значения которые совпадут чтобы отображались в checkbox с флажками. | |
|
|
|
|
|
|
|
для: xpom
(11.11.2006 в 23:14)
| | В этом случае разумно воспользоваться функцией array_intersect(), которая возвращает схождение массивов
<?php
$arr = array_intersect($oro, $reet);
?>
|
Массив $arr будет содержать все значения массива $oro, которые входят в состав массива $reet. | |
|
|
|
|
|
|
|
для: cheops
(11.11.2006 в 23:21)
| | Есть еще вопросик: вот эти значения массива $oro, которые входят в состав массива $reet мы лтобразим в checkbox с флажками, а как отобразить остальные, которые не вгодят в состав массива $reet только без флажко? | |
|
|
|
|
|
|
|
для: 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>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(12.11.2006 в 12:31)
| | Большое Вам человеческое спасибо!!! | |
|
|
|
|
|
|
|
для: xpom
(08.11.2006 в 21:52)
| | А что в этой ячейке показывает phpMyAdmin? | |
|
|
|
|
|
|
|
для: Trianon
(08.11.2006 в 23:45)
| | А как это можно посмотреть? | |
|
|
|
|
|
|
|
для: xpom
(09.11.2006 в 23:07)
| | Зайти в phpMyAdmin =) | |
|
|
|