Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Ассоциативный массив


Автор: Гость_Марат 16.9.2005, 15:18
После SQL запроса сформировал массив вида:
Array
(
[0] => Array
(
[id_news] => 1
[date] => 2016-09-05
[theme] => newproject
[text] => Программа
)

[1] => Array
(
[id_news] => 2
[date] => 2016-09-05
[theme] => newproject
[text] => Программа
)

[2] => Array
(
[id_news] => 3
[date] => 2016-09-05
[theme] => newproject
[text] => Программа
)
Кто подскажет, как его из него сформировать таблицу? Что-то голова не варит smile

Автор: alligator 16.9.2005, 16:27
ты иммешь ввиду вывести в таблицу ?
Если да то всё просто:
Код

print $result['id_news'];
print $result['date'];
......

и тд

Автор: Гость_Марат 16.9.2005, 17:00
НЕт не идет. Пишу:
print $data['date'];
// $data - ассоц. массив результатов
Выдает ошибку:
Notice: Undefined index: date in z:\home\test.ru\www\admin\newsadd.php on line 43

Автор: alligator 16.9.2005, 19:23
покажи код

Автор: alligator 16.9.2005, 19:36
у тебя еще должен быть ключ ассоциативного массива
вывод осуществляеться
print - ключ - ключевые индексы
вроде так если не ошибаюсь

Автор: lina 16.9.2005, 22:59
если есть массив $array,$key-название индекса массива, $value-значение этого индекса, то вывод осуществляется так:
foreach($array as $key=>$value)
echo $key.'=>'.$value.'<br/>';

Автор: Гость_Марат 17.9.2005, 07:34
Спасибо за совет. Я дошел до такого варианта:
$r= @mysql_query("select * from ".$_session['table']." order by date")
or die ("Could not select 1");
for ($data=array(); $row=mysql_fetch_assoc($r); $data[]=$row);

echo "<form action=\"../admin/newsadd.php\" method=\"post\"><table border=2><tr><td><INPUT class=text type=submit value=del name=newsdelbut> </td>";
//Выводим шапку таблицы
for ($i=0; $i<mysql_num_fields($r); $i++)
{
echo "<TD><b>".mysql_field_name($r, $i)."</b></td>";
}
echo "</tr>";
//Выводим значения полей
for ($i=mysql_num_rows($r)-1; $i>=0; $i--)
{
echo "<tr>";
for ($j=0; $j<mysql_num_fields($r); $j++)
{
$head=mysql_field_name($r, $j);
if ($j==0) echo "<td><input type=checkbox name=\"newsfielddel[]\" value=".$data[$i][$head]."></td>\n \n";
echo "<td>";
echo $data[$i][$head];
echo "</td>";
}
echo "<tr>";
}
echo "</table></form>";

Автор: [xoodo] 17.9.2005, 11:45
Код

$r= @mysql_query("select * from ".$_session['table']." order by date") or die ("Could not select 1");

//Твой вариант:
//for ($data=array(); $row=mysql_fetch_assoc($r); $data[]=$row);
//Можно сразу так, без третьей переменной:
while($data[] = mysql_fetch_assoc($r));

echo "<form action=\"../admin/newsadd.php\" method=\"post\"><table border=2><tr><td><INPUT class=text type=submit value=del name=newsdelbut></td>";

//Выводим шапку таблицы
for ($i=0; $i<mysql_num_fields($r); $i++)
{
    echo "<TD><b>".mysql_field_name($r, $i)."</b></td>";
}
echo "</tr>";

//Выводим значения полей
//Предлагаю так (для каждого шага цикла получаем в $row один из рядов $data[]):
foreach($data as $row)
{
    echo "<tr>";
    //В $key будет имя поля, в $val -- значение.
    //У тебя, если правильно понял, использовались только названия полей,
    // поэтому $val вроде не понадобится. Хотя мало ли.
    $j = 0;
    foreach($row as $key=>$val)
    {
        if ($j==0)
        {
               echo "<td><input type=checkbox name=\"newsfielddel[]\" value=".$row[$key]."></td>\n \n";
               ++$j;
        }
        echo "<td>";
        echo $row[$key];
        echo "</td>";
    }
    echo "<tr>";
}
echo "</table></form>";

Вроде ничего не напутал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)