2013-02-18 2 views
0

Я пытаюсь вставить заголовки строк в таблицу html, которая позже заполняется массивом php, содержимое которого связано с запросом MYSQL.заполнить таблицу html с php-массивом

У меня есть код, чтобы делать все, за исключением того, что заголовки строк повторяются в 4 столбцах в начале каждой строки, а не просто отображают $ item [1] для первой строки, $ item [2] для второй ряд и т. д.

Вот мой код:

// query the database 
$result = mysql_query($query_getproductbrands); 

// cols we are interested in (from the SQL query) 

$cols = array(
    'productName', 
    'brandName', 
    'productDescription', 
    'productPrice', 
); 

$titles = array(
    'Product', 
    'Brand', 
    'Description', 
    'Price', 
); 

// initialize rotated result using cols 
$rotated = array(); 
foreach($cols as $col) { 
    $rotated[$col] = array(); 
} 

// fill rotated array 
while(($row = mysql_fetch_assoc($result)) !== false) { 
    foreach($cols as $col) { 
    $rotated[$col][] = $row[$col]; 
    } 
} 

// echo html 
echo "<table border=1 width=473>"; 
echo "<tr>"; 

echo "</tr>"; 
foreach($rotated as $col => $values) { 
echo "<tr>"; 

foreach($titles as $title) { 
    echo "<td> " . htmlentities($title) . "</td>"; 
} 


foreach($values as $value) { 
    echo "<td> " . htmlentities($value) . "</td>"; 
    } 
    echo "</tr>"; 
} 
echo "</table>"; 

?> 

Так что это производит таблицу, содержащую:

Продукт Марка Описание Цена product1 product2 product3

Марка продукта Описание Цена brand1 brand2 brand3

Продукт Описание товара Описание цены1 описание2 описание3

Марка продукта Описание Цена price1 price2 price3

И я хотел бы, чтобы произвести таблицу, содержащую:

Продукт product1 product2 product3

Марка brand1 brand2 brand3

Описание description1 description2 description3

Цена цена1 цена2 цена3

Я думал о создании цикла для первого массива 'title', а затем цикла для массива 'values', но это не работает.

Если я вместо echo $ col в первом цикле, я получаю только первое значение (произведение), и я мог бы выбрать $ title [0], но я не уверен, как увеличить его на каждую строку, а затем реализовать цикл для оставшегося запроса данных (значения).

Возможно, кто-нибудь предложит вам какой-нибудь совет для достижения желаемого стола?

+0

waaaa, поэтому многие люди все еще используют mysql_ *. Это устарело. Перейдите в MySQLi здесь; это безболезненно. – Amelia

+0

Хирото, что ты говоришь - если я использую $ result = mysqli_query ($ query_getproductbrands); я получу то же самое, что и при использовании $ result = mysql_query ($ query_getproductbrands); ?? –

+0

'$ db = mysqli_connect (* vars); $ result = mysqli_query ($ db, $ sql); '(* vars - это данные вашего соединения). Так что да, но попробуйте посмотреть интерфейс OOP. Это очень полезно. – Amelia

ответ

0

Переместить это вне цикла Еогеасп:

foreach($titles as $title) { 
    echo "<td> " . htmlentities($title) . "</td>"; 
} 

Предпочтительно поместить его между здесь:

echo "<tr>"; 
<-- Put me here. 
echo "</tr>"; 

Если я правильно понять, что необходимо сделать трюк.

+0

Я не уверен, что это работает. Я помещаю всю петлю foreach между бит эха, который вы говорите, дальше код? он, кажется, помещает 4 столбца заголовка наверху. –

Смежные вопросы