2013-10-24 17 views
0

Мое подключение к моей базе данных прошло успешно. Теперь у меня есть все данные из таблицы, хранящейся в виде массива в переменной php с именем $ data. Я пытаюсь извлечь три строки из этой переменной и отобразить их с помощью html.Извлечение данных таблицы mysql, которые хранятся в массиве переменных php

Вот что мой код выглядит следующим образом (за исключением информации о подключении удаляется):

<?php 
    $data = mysql_query("SELECT * FROM specs") 
    or die(mysql_error()); 
    while ($row = mysql_fetch_assoc($data)) { 
    $rows[] = $row; 
    ?> 

Я знаю, что я могу вытащить отдельные данные из этих переменных и вставить его в HTML успешно, введя код как это (например):

<table cellpadding="0" cellspacing="0" border="0"> 
     <tr> 
     <td>Model: <?php echo $row['name'];?></td> 
     </tr> 
    </table> 

Но моя проблема в том, что я хочу, чтобы отобразить три отдельные строки данных из базы данных в виде трех отдельных столбцов в HTML таблице. (Надеюсь, что имеет смысл)

Я изучил, как это сделать с помощью foreach, и пока я не совсем уверен, где я ошибаюсь.

Я надеюсь, что кто-то сможет пролить свет на это, поскольку я читал о петлях foreach, а я все еще застрял! Я также слышал, что mysql_query устарел, но исключен, но не использовал его, так как наш веб-сервер все еще использует старую версию php и mysql и не планирует в ближайшее время обновлять.

Извините, если я не все здесь, на моем посту - уже поздно, и я устал. Заранее спасибо за помощь! Я буду следить за этим, если у кого есть вопросы.

+0

Итак, вы хотите, чтобы первая строка таблицы представляла собой элементы 0, 1, 2 массива, вторая строка таблицы была элементами 3, 4, 5 массива и т. Д.? – Barmar

+0

Привет, Бармар, я хочу, чтобы каждая строка была одной колонкой. Таким образом, строка 1 из базы данных будет столбцом 1 в форматированном html, строка 2 будет столбцом 2 в форматированном html, а строка 3, столбец 3 в формате html, но они будут конкретными строками из базы данных, определенной моделью продукта. Я надеюсь в этом есть смысл. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Спасибо! – KRS77

+0

Это тривиально. Просто напишите цикл, который выводит каждую строку внутри ' ...'. – Barmar

ответ

0

Это будет печатать массив в таблице с каждой строкой, являющейся 3 элементами массива.

echo "<table>"; 
for ($i = 0; $i < count($rows); $i += 3) { 
    echo "<tr>"; 
    for ($j = 0; $j < 3; $j++) { 
     if (isset($rows[$i+$j]) { 
      echo "<td>Model: {$rows[$i+$j]['name']}</td>"; 
     } 
    } 
    echo "</tr>"; 
} 
echo "</table>"; 
+0

Привет, Бармар, я оставил ответ на ваш вопрос выше. Было бы что-то вроде этого производить 3 строки от db до 3 cols в html? Спасибо за помощь! – KRS77

+0

Это будет делать то, что я сказал в своем первом комментарии выше. Если из базы данных будет всего 3 строки, она создаст одну таблицу с тремя столбцами. Если будет извлечено 6 строк, это приведет к созданию двух строк таблицы с тремя столбцами. – Barmar

0

Это проще, чтобы ограничить SQL до трех строк, а затем повторить все входящие строки непосредственно, без предварительного добавления в массив. Это будет тратить ресурсы.

<?php 
    echo "<table>"; 

    $data = mysql_query("SELECT * FROM specs LIMIT 3") 
     or die(mysql_error()); 

    while ($row = mysql_fetch_assoc($data)) 
     echo '<tr></td>', $row['name'], '</td></tr>'; 

    echo "</table>"; 
?> 

Ах, но теперь я вижу, что это вопрос на год. Надеюсь, вы многому научились.

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