Все ленты — последние статьи

* Как вывести запись из таблицы MySQL? Вывод нескольких записей из таблицы базы данных, постраничный (СБОРНИК СТАТЕЙ НА ЭТУ ТЕМУ)

Как вывести запись из таблицы MySQL? Вывод нескольких записей из таблицы базы данных | Раздел "PHP"



Как вывести запись из таблицы MySQL? Вывод нескольких записей из таблицы базы данных

Итак, допустим у нас следующая таблица
$table="news";
---+------------------+-----------------+---------------+
id + thetitle + thetext + review +
---+------------------+-----------------+---------------+
1 + заголовок 1 + текст 1 + 17 +
---+------------------+-----------------+---------------+
2 + заголовок 2 + текст 2 + 14 +
---+------------------+-----------------+---------------+
3 + заголовок 3 + текст 3 + 48 +
---+------------------+-----------------+---------------+
4 + заголовок 4 + текст 4 + 3 +
---+------------------+-----------------+---------------+
5 + заголовок 5 + текст 5 + 95 +
---+------------------+-----------------+---------------+

Допустим нам надо вывести запись с id=3
Пишем следующий код
$sql=mysql_query("SELECT * FROM `$table` WHERE `id`='3'");
// вместо id можно использовать другое значение
$result=mysql_fetch_array($sql)
print "$result[thetitle]";
// получили заголовок записи под номером 3

Выводим несколько записей. Первые четыре.
//данный скрипт выведет 4 записи
$sql="SELECT * FROM `$table` LIMIT 0, 4";
Также Вы можете выполнить сортировку по одному из полей
$sql="SELECT * FROM `$table` ORDER BY `id` DESC LIMIT 0, 4";
// мы сделали сортировку по ID
// ORDER BY `id` DESC <-- от большего к меньшему
// ORDER BY `id` ASC <-- от меньшего к большему
$result=mysql_query($sql) or die(mysql_error());
// строим таблицу
print "<table>";
print "<tr><td>Заголовок</td><td>Текст</td><td>Просмотров</td></tr>";
while($data=mysql_fetch_array($result)) // цикл вывода
{
print "<tr>";
// выводим заголовки
print "<td>$data[1]</td>";
$data[2]=str_replace("\r\n","<br>",$data[2]);
// выводим текст
print "<td>$data[2]</td>";
// выводим кол-во просмотров
print "<td>$data[3]</td></tr>";
}
print "</table>";
//если опустить условие LIMIT 0 , 4
// скрипт выведет все строки таблицы

   

 

ВТОРАЯ СТАТЬЯ

 

 

 

Постраничный вывод на PHP

Когда-нибудь (конечно, если у вас есть сайт на PHP и MySQL) вам понадобится вывести все записи из базы данных. Ведь, например, выводить по 100 постов на одной странице крайне неразумно, поэтому следует сделать на сайте постраничный вывод записей из базы данных.

Наш постраничный вывод будет основан на свойствах оператора LIMIT. Оператор LIMIT позволяет не только ограничить вывод данных, но и задать параметр, с которого следует начинать вывод записей.

Например, чтобы вывести 10 записей из таблицы data, начиная с 10-й записи, следует писать так:

SQL

SELECT *
FROM data
LIMIT 10, 10;

Страница нашего сценария будет называться viewpost.php. Переменная $str будет содержать значение нужной страницы.

Данные будем выводить из таблицы data. Структурируем вывод данных следующим образом: будем выводить краткое описание (description) и заголовок (title).

Конечно, для того чтобы все это выводилось приемлемо нужно будет сгруппировать элементы с помощью HTML и CSS. Хотя для моего примера все просто.

Пример простой постраничной навигации:

PHP

$sum = 5; // число записей на странице
$result = mysql_query("SELECT count(*) as a from data");
//count -- считает количество элементов массива 
$arr = mysql_fetch_row($result); // возвращает неассоциативный массив 
$rec = $arr[0]; // общее число записей в таблице 
// если страницы не существует, выводим первую страницу
if(!isset($_GET['str']))
{$str = 0;}
else
{$str = $_GET['str'];}
// получем номер начальной записи страницы
$start = $str * $sum;
// запрос 
$r = mysql_query("SELECT * FROM data LIMIT $start, $sum");
$n = mysql_num_rows($r); // возвращаем число рядов результата запроса
// если страница не первая, выводим ссылку НАЗАД
if ($str > 0)
{
$p = $str — 1;
echo "<a href=viewpost.php?str=$p>НАЗАД</a>";
}
$str++;  // увеличиваем переменную $str на единицу;
// выводим ссылку на следующие пять записей, если она есть, 
// то есть число записей, которые нужно вывести, // и смещение не превышает общего числа записей
if($start + $n < $rec)
echo "<a href=viewpost.php?str=$str>ДАЛЕЕ</a>";
// выводим записи
for ($i = 0; $i < $n; $i++)
{
$myrow = mysql_fetch_array($r);
printf ("<h1>%s</h1><p>%s</p>",
$myrow["title"], $myrow["description"] );
}

Третья статья

 

Постраничный вывод из таблиц MSSQL с помощью PHP

 

 

 

 

На многих форумах по PHP видел один и тот же вопрос «Как сделать постраничный вывод из MSSQL?». Ответом очень часто служит «Все очень просто, используйте limit и все работает!», но, те кто дает такой ответ, видимо никогда не видели MSSQL достаточно близко и не знают, что к большому сожалению, там данной функции, в отличии от MySQL, нет. Я в своей практике написания сценариев на php, так же в основном пользовался связкой PHP + MySQL и вопросов не возникало. Но вот надо было перейти на хостинг с установленным MSSQL. После долгих поисков скрипта, который позволял бы сделать постраничный вывод из таблиц MSSQL с помощь PHP, без использования курсоров и ADO, и не найдя ничего, пришлось написать функцию, которая как раз и занимается обсуждаемым рутинным делом.

 

В основу постраничного вывода был положен запрос:

 

select top нужное_количество_для_вывода * from (select top количество_записей_из_которых_делается_вывод *       from таблица       order by таблица_id) as t1            order by таблица_id desc (таблица_id — поле вашей таблицы, по которому вы будете осуществлять сортировку)

 

Для работы нужной нам функции и правильной работы данного запроса надо знать несколько величин:

 

1) нужное количество строк для вывода

 

2) количество записей из которых делается выбор

 

3) на какой страницы мы находимся

 

4) сколько всего страниц.

 

Получившаяся функция выглядит так:

 

!@$_GET["page"]) { # если переменной с номером страницы еще нет, то создаем ее             $page=1;                                 # и присваиваем ей значение 1 } else { $page=$_GET["page"]; }         # иначе, присваиваем ей значение нажатой страницы # объявляем функцию с названием numberpage, имеющей следующие параметры: # 1) количество выводимых строк на каждой странице, # 2) название таблицы, которую выводим постранично, # 3) дополнительные параметры выбора запроса, например: where поле_какоето1=чемуто # and поле_какоето2=томуто. # не забудьте, что данные дополнительные параметры должны быть и в самом запросе, иначе # вы получите неверные значения.  function numberpage($len,$tablename,$dopquerysql) { global $page;             global $nump; # формируем массив для возврата значений из функции             $nump=array("page"=>"","numers"=>"","len"=>"0","all"=>"0","top1"=>"0","top2"=>"0");                # получаем URL страницы, с которой вызвали функцию $namepage=@$PATH_INFO; # вычисляем количество строк в запросе             $nu=@mssql_query("select count(1) as ss from $tablename $dopquerysql");                       $nrow=@mssql_fetch_array($nu);                                           $all=$nrow['ss'];                         @$pages=ceil($all/$len)-1;             if (@$page==(@$pages+1)) { $top1=$all-(($page-1)*$len); $top2=$all;                                                            } else { $top1=$len; $top2=$page*$len; }             if (@$len>=$all) { $top1=$all; $top2=$all; }             $numers=($page-1)*$len; @$q=$all/$len; # готовим массив с номерами страниц if ($q>1) {                for ($p=0; $p<=$pages; $p++) {                          $pag=$p+1; @$nump[page]="$nump[page][$pag] ";    } } # подготавливаем массив с конечными результатами и выводим его $nump["page"]=@$nump[page]; $nump["numers"]=$numers; $nump["len"]=$len; $nump["all"]=$all; $nump["top1"]=$top1; $nump["top2"]=$top2;  return $nump; } ?>

 

Данную функцию можно расположить в файле с вашими конфигурациями всего вашего проекта и вызывать ее на каждой страницы, где вы собираетесь делать постраничный вывод. Например: файл конфигурации у вас называется myconfig.php, значит, на каждой странице вставляем <? require(“myconfig.php”); ?>

 

Теперь переходим непосредственно к выводу нашей таблицы в браузере. Сразу определяемся, сколько у нас будет выводится на экран строк таблицы, или делаем форму для выбора количества строк пользователем. Форму я тут приводить не буду, так как это выходит за рамки статьи и достаточно легко, чтоб на этом останавливаться.

 

Перед выводом таблицы вызываем функцию (будем выводить по 10 строк на странице из таблицы наша_таблица где поле2 содержит слово КАКОЕТОЗНАЧЕНИЕ и поле5 равно 12):

 

<? numberpage("10","наша_таблица","where поле2 like ‘%КАКОЕТОЗНАЧЕНИЕ%’ and поле5=12"); ?>

 

Помните, что если у вас нет никаких дополнительных параметров выбора, просто оставьте значение пустым, и вы получите выбор из всех полей таблицы. Например: <? numberpage(«10″,»наша_таблица»,»"); ?>, соответственно убрав данное условие и при выводе самой таблицы.

 

Затем, в нужном нам месте выводим саму таблицу:

 

$grn=@mssql_query("select * from (select  top $nump[top1]  * from (select top $nump[top2] * from наша_таблица where поле2 like ‘%КАКОЕТОЗНАЧЕНИЕ%’ and поле5=12 order by таблица_ID desc) as t1 order by таблица_ID ) as t2 order by таблица_ID desc",$link); for($gd=0; $gd<@mssql_num_rows($grn); $gd++) {    $gr=@mssql_fetch_array($grn); ?>

 

Затем выводим перечисление страниц: ».@$nump[page].»»; ?>

 

В данном примере, у вас будут выводится записи в обратной последовательности, начиная с последней в таблице по 10 к первой. Если вам надо, чтобы записи выводились с первой и далее, то скрипт надо модифицировать:

 

select * from (select  top $nump[top1]  * from (select top $nump[top2] * from наша_таблица order by таблица_ID) as t1 order by таблица_ID desc ) as t2 order by таблица_ID

 

Вот в принципе и все.

ПЯТАЯ СТАТЬЯ

 

Выводим MySQL таблицу

Выводим MySQL таблицу

В этом уроке рассказывается о том, как показать любую таблицу MySQL базы данных в HTML виде. Предположим, у вас есть MySQL база данных, в которой зеведено несколько таблиц. С помощью описанной техники можно просматривать любую таблицу, независимо от количества колонок и записей, находящихся в ней. Давайте раcсмотрим весь процесс по шагам.

1. Соединяемся с сервером базы данных и выбираем базу.

MYSQL_CONNECT($hostname, $username, $password) OR DIE("Unable to connect");
@MYSQL_SELECT_DB("$dbName") OR DIE("Unable to select database");


2. Формируем и выполняем SQL запрос, который покажет все данные в таблице.

$query = "select * from SOME_TABLE";
$result = MYSQL_QUERY($query);


3. Проверяем и выдаем сразу ответ, если таблица пустая.

$total_rows = mysql_num_rows($result);
if (!$total_rows) {
  print "<HTML><BODY><h1>Table $name is empty</h1></BODY></HTML>";
  return;
}


4. Вытаскиваем первую строку и выясняем сколько ячеек надо показывать в строке.

$row = mysql_fetch_row($result);
$total_cols = count($row);


5. Показываем шапку таблицы, в первой строке которой будет указано колчество строк и столбцов. Обратите внимание на то, что мы ставим параметр COLSPAN для первой строки таблицы, чтобы сверху была всего одна ячейка с информацией.

print "<HTML><BODY>";
print "<table width='100%' border='1' cellspacing='0' cellpadding='0' align='center'>";
print "<tr><td colspan=$total_cols align=center>$name Table (rows: $total_rows, column: $total_cols)</td></tr>";


6. Выдаем первую строку, которую мы уже вытащили ранее.

print "<tr>";
$i=0;
while($i < $total_cols){
  print "<td>";
  print $row[$i];
  print "</td>";
  $i++;
}
print "</tr>";


7. Выполняем цикл для всех оставшихся строк. В цикле последовательно вытаскиваем строки из базы данных и во вложенном цикле показываем все ячейки в строке.

while($row = mysql_fetch_row ($result)) {
  $i = 0;
  print "<tr>";
  while($i < $total_cols){
    print "<td>";
    print $row[$i];
    print "</td>";
    $i++;
  }
  print "</tr>";
}


8. Освобождаем памать и закрываем HTML таблицу.

mysql_free_result($result);
print "</TABLE></BODY></HTML>";


 



С помощью этого кода можно легко сделать PHP функцию, которая показывает любую таблицу:

<?
function ShowTable($name){
  MYSQL_CONNECT($hostname, $username, $password) OR DIE("Unable to connect");
  @MYSQL_SELECT_DB("$dbName") OR DIE("Unable to select database");

  $query = "select * from $name";
  $result = MYSQL_QUERY($query);

  $total_rows = mysql_num_rows($result);
  if (!$total_rows) {
    print "<HTML><BODY><h1>Table $name is empty</h1></BODY></HTML>";
    return;
  }

  $row = mysql_fetch_row($result);
  $total_cols = count($row);

  print "<HTML><BODY>";
  print "<table width='100%' border='1' cellspacing='0' cellpadding='0' align='center'>";
  print "<tr><td colspan=$total_cols align=center>$name Table (rows: $total_rows, column: $total_cols)</td></tr>";
  print "<tr>";
  $i=0;
  while($i < $total_cols){
    print "<td>";
    print $row[$i];
    print "</td>";
    $i++;
  }
  print "</tr>";

  while($row = mysql_fetch_row ($result)) {
    $i = 0;
    print "<tr>";
    while($i < $total_cols){
      print "<td>";
      print $row[$i];
      print "</td>";
      $i++;
    }
    print "</tr>";
  }
  print "</TABLE></BODY></HTML>";
  }
?>

Вызывать функцию можно так:
<?
ShowTable("GUESTBOOK");
?>


ШЕСТАЯ СТАТЬЯ

 

Вывод массива в html таблицу (php)

 

Просмотрел свои последние посты и понял что сильно ушёл в python. Язык он конечно достойный но не единственный ;). Тематику webpy я обязательно продолжу но как нибудь потом.
Очень часто несмотря на мои личные предпочтения мне приходится работать в php. В основном это веб приложения. Даже не в основном а именно только они :). Ну это не суть, а вступление. В этой статье я хотел рассмотреть одну тривиальную задачу. В процессе создания сайта а иногда даже просто странички возникает необходимость вывести данные содержащиеся в массиве в виде html таблицы с определённым числом колонок. Задача вовсе не сложная. Она заключается в определении момента (итерации цикла) когда нужно вывести теги <tr> и </tr>. Для этой задачи у меня есть собственное решение которое мне кажется изящным. Чем я и хочу с вами поделиться.


  1. <?
  2. $arData = array(); // массив с данными которые надо вывести
  3.  
  4. $column = 3; // количество колонок в таблице
  5. $items = count($arData); // общее количество выводимых элементов
  6. $i = 1; // счётчик итераций
  7. if ($items <= $column) $arRange1 = array(1);
  8. else $arRange1 = range(1, $items, $column);
  9. if ($items <= $column) $arRange2 = array($column);
  10. else $arRange2 = range($column, $items, $column);
  11. ?>
  12.  
  13. <table cellpadding="0" cellspacing="0">
  14. <?foreach($arData as $item):?>
  15. <?if(array_search($i, $arRange1) !== FALSE) echo "<tr>"?>
  16. <td width="<?=round(100/$column)?>%"><?=$item?></td>
  17. <?if(array_search($i, $arRange2) !== FALSE) echo "</tr>";$i++?>
  18. <?endforeach?>
  19. <?if($items%$column != 0) echo str_repeat('<td width="'.round(100/$column).'%">&nbsp;</td>', ($column-$items%$column))."</tr>"?>
  20. </table>



UPD 7 февраля 2012 г.
А вот ещё один вариант придумался, мне кажется он несколько проще :)

  1. <?
  2. $arData = array(); // массив с данными которые надо вывести
  3. $column = 3; // количество колонок в таблице
  4. $i = 0; // счётчик итераций
  5. ?>
  6.  
  7. <table cellpadding="0" cellspacing="0">
  8. <?foreach($arData as $item):?>
  9. <?if($i == 0) echo "<tr>"?>
  10. <td width="<?=round(100/$column)?>%"><?=$item?></td>
  11. <?$i++?>
  12. <?if($i == $column) {echo "</tr>"; $i=0;}?>
  13. <?endforeach?>
  14. <?if($i != 0) echo str_repeat('<td width="'.round(100/$column).'%">&nbsp;</td>', ($column-$i))."</tr>"?>
  15. </table>