[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: количество записей
lawbreaker
есть таблица в которые допустим 6 записей

как мне узнать сколько в ней записей?



Спустя 53 секунды (24.07.2009 - 16:28) waldicom написал(а):
SQL
select count(*) from TABLE

Спустя 12 минут, 30 секунд (24.07.2009 - 16:41) lawbreaker написал(а):
PHP
$anzeigen mysql_query("SELECT count(*) FROM `Eintraege`") or die(mysql_erorr());
echo 
$anzeigen;


Так ?


так у меня вот что выдаёт

SQL
Resource id #3

Спустя 17 минут, 2 секунды (24.07.2009 - 16:58) waldicom написал(а):
Правильно, ошибки нет.
Но выводить кол-во строк надо по другому.
PHP
$anzeigen mysql_query("SELECT count(*) as amount FROM `Eintraege`") or die(mysql_erorr());
if(
$anzeigen){
    
$row mysql_fetch_assoc($anzeigen);
    echo 
$row['amount'];
}

Спустя 4 часа, 42 минуты, 39 секунд (24.07.2009 - 21:40) jank написал(а):
PHP
$table mysql_query("SELECT * FROM table"$db);
  
$table_num mysql_num_rows($table);

    echo 
$table_num;

Спустя 10 минут, 47 секунд (24.07.2009 - 21:51) Sylex написал(а):
jank
неверный метод, не нужно выбирать все записи из таблицы - это ресурсоемко, нужно использовать функции, которые специально предназначены для этого

PHP
$res mysql_query("SELECT COUNT(*) FROM `Eintraege`");
echo 
mysql_result($res0);

Спустя 57 минут, 48 секунд (24.07.2009 - 22:49) Krevedko написал(а):
$num_rows = mysql_num_rows($result);
echo $num_rows;

ну перед этим естественно запрос написать нужный..

Спустя 1 минута, 17 секунд (24.07.2009 - 22:50) waldicom написал(а):
Цитата (Krevedko @ 24.07.2009 - 21:49)
$num_rows = mysql_num_rows($result);
echo $num_rows;
ну перед этим естественно запрос написать нужный..

Бурные и нескончаемые аплодисменты

Спустя 11 часов, 29 минут, 22 секунды (25.07.2009 - 10:20) Krevedko написал(а):
Ненадо аплодисментов )) Просто в коде недавно делал...Там у меня как раз смотрит сколько записей и соответственно цикл...Выводит пять в ряд, потом переходит на следующий -еще пять итд...

PHP
function table_board($result)
       {
        # Проверка на ошибку запроса  
        valid_query($result);
        $num_rows = mysql_num_rows($result);
        for($i = 0; $i < $num_rows; $i+=5)
        {
            echo "<tr>"; 
            for
($j = 0; $j < 5; $j++)
            {
                $row = mysql_fetch_assoc($result);
                if ($row == FALSE) //Если товары закончились, прерываем их вывод
                    break;
                if ($row['presence']==0)
                    $presence="Нет";
                else
                    $presence
="Да";
                include './skins/' . SKIN .'/main/show_goods.html'; 
            
}
            echo "</tr>"; 
        
}
    }

Спустя 21 минута, 34 секунды (25.07.2009 - 10:41) beginner написал(а):
Цитата (Krevedko @ 24.07.2009 - 19:49)
$num_rows = mysql_num_rows($result);
echo $num_rows;

ну перед этим естественно запрос написать нужный..

Было же уже оптимальное решение где в запросе
count - выдаст только одну строку и с
одной ячейкой - в которой результат,
а за комментарий и от меня апплодисменты

Спустя 1 минута, 25 секунд (25.07.2009 - 10:43) Sylex написал(а):
Krevedko
оччень странный код )))

Спустя 21 минута, 57 секунд (25.07.2009 - 11:05) Krevedko написал(а):
в чем его странность ?
кстати он отлично работает

Спустя 1 минута, 34 секунды (25.07.2009 - 11:06) Krevedko написал(а):
Цитата (beginner @ 25.07.2009 - 07:41)
Цитата (Krevedko @ 24.07.2009 - 19:49)
$num_rows = mysql_num_rows($result);
echo $num_rows;

ну перед этим естественно запрос написать нужный..

Было же уже оптимальное решение где в запросе
count - выдаст только одну строку и с
одной ячейкой - в которой результат,
а за комментарий и от меня апплодисменты

Ну а если мне например надо получить и данные из таблицы и сколько записей получится. Два раза запрос писать... с count и без ?

Спустя 42 минуты, 59 секунд (25.07.2009 - 11:49) Sylex написал(а):
Krevedko
да все норм в принципе, работает - и ладно

просто, посмотришь на него через годика 2, сам поймешь (если будешь продолжать программить)

Спустя 12 минут, 20 секунд (25.07.2009 - 12:01) Krevedko написал(а):
Не...ну если как-то по другому можно сделать и красивее, то ты скажи. Я придумал пока так..но более элегантное решение с удовольствием возьму на заметку.
Мне надо, чтобы выводило вот так (оно собсно так и выводит):

user posted image

Т.е. в данном случае в базе 7 товаров...
Каждые 5 товаров-сдвиг на новую строку.

Спустя 36 минут, 4 секунды (25.07.2009 - 12:37) Sylex написал(а):
PHP
$num_rows mysql_num_rows($result);
echo 
'<tr>';
while (
$row mysql_fetch_assoc($result)) {
    if (
$num_rows == 0) echo '</tr><tr>';
    
$presence $row['presence'] == 'Нет' 'Да';
    ...
}
echo 
'</tr>';


и шаблон не надо подключать сто раз в цикле:

Цитата (Krevedko @ 25.07.2009 - 13:20)
include './skins/' . SKIN .'/main/show_goods.html';


include очень тормозит работу скрипта... здесь мало у тебя объектов.. а будет больше - ощутишь

Спустя 10 минут, 23 секунды (25.07.2009 - 12:48) Krevedko написал(а):
спасибо.
Но без include мне кажется тут не обойтись...или прийдется смешивать пхп и хтмл код. Да и объектов максимум 15 на странице будет...я буду делать постраничную навигацию.
ПыСы Кстати код действительно красивый. С остатком от деления я как-то не додумался сделать

Спустя 3 часа, 11 минут, 54 секунды (25.07.2009 - 16:00) Gram написал(а):
<?php

Подллючаетесь к базе
Делаете запрос на данные
Проверяете, что оператор запроса успешно выполнен

Далее
PHP
// если число строк запроса больше одной
if(mysql_num_rows($result)>0)
 {
 // рисуем таблицу
 echo "<table width=\"96%\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" bgcolor=\"#F3F3F3\">";
 echo "<tr>";
 
 
// объявляем временную переменную
 // она нам будет нужна, чтобы знать сколько раз цикл выполнился
 $temp="";
 // вполнить цикл 
 while($row=mysql_fetch_array($result))
  {
  // получаем категорию диска
  $disk_name=$row['disk_name'];
  // его название
  $name=$row['name'];
  // путь к картинке, например
  $link=$row['link'];
  // если вы хотите выводить количество отзывов
  // то для этого требуется двухтабличный запрос
  
  
// рисуем
  echo "<td width=\"20%\" align=\"left\" valign=\"top\"><div class=\"title\">".$disk_name."</div>".$name."<br><br><a href=\"\">".$link."</a></td>";
  
  
// готово
  // регистрируем выполнение цикла
  $temp++;
  
  
// если это была пятая ячейка ряда остальной вывод должен пойти во второй ряд
  if($temp%5==0){echo "</tr><tr>";}
  }
 // когда цикл выполнится необходимо закрыть таблицу
 echo "</tr>";
 echo "</table";
 }


?>

Спустя 26 минут, 50 секунд (25.07.2009 - 16:27) Sylex написал(а):
Цитата (Krevedko @ 25.07.2009 - 15:48)
Но без include мне кажется тут не обойтись...или прийдется смешивать пхп и хтмл код.


есть понятие "шаблонизаторы".. никакой нормальный шаблонизатор не использует 100 инклудов, это во-первых.
во-вторых, у тебя уже смешан HTML и PHP, ты не находишь?

Спустя 36 минут, 21 секунда (25.07.2009 - 17:03) Krevedko написал(а):
Ну как сказать... хтмл код вывода ячейки у меня отдельно...
я захотел поменять что-то...загрузил этот хтмл в тот же дримвивер, навесил кучу красоты, сохранил и вуаля...
А если сделать как показал выше ув. Gram...то прийдется все ручками перенабивать.
кто прав.

Спустя 1 час, 13 минут, 27 секунд (25.07.2009 - 18:16) Gram написал(а):
Цитата (Krevedko @ 25.07.2009 - 14:03)
Ну как сказать... хтмл код вывода ячейки у меня отдельно...
я захотел поменять что-то...загрузил этот хтмл в тот же дримвивер, навесил кучу красоты, сохранил и вуаля...
А если сделать как показал выше ув. Gram...то прийдется все ручками перенабивать.
Хз кто прав.

Я не пытался отделить php от html.
Если сильно хочется, можете сделать так к примеру:

создать файл с настройками оформления, где прописать весь дизайн.
PHP
<?php
$open_tbl
="<table width=\"96%\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" bgcolor=\"#F3F3F3\"><tr>";
$close_tbl="</tr></table>";
$open_td="<td width=\"20%\" align=\"left\" valign=\"top\">";
$close_td="</td>";
$open_title="<div class=\"title\">";
$close_title="</div>";
...
...


Тогда код может выглядеть так:
PHP
<?php
include 
"setting.php";
if(
mysql_num_rows($result)>0)
 {
 echo $open_tbl;
 $temp="";
 while($row=mysql_fetch_array($result))
  {
     echo $open_td.
          $open_title.
          $row['disk_name'].
          $close_title.
          $row['name'].
          $br.$br.
          $open_href_logo.
          $row['link'].
          $close_href.
          $close_td;

  $temp++;
  if($temp%5==0){echo "</tr><tr>";}
  }
 echo $close_table;
 }


если дизайн сильно сложный, то конечно можно запутаться, но выработав для себя правила построения такой схемы - можно очень быстро привыкнуть. Своего рода те же css, только в профиль smile.gif Я конечно не настаиваю, просто хочу передать гибкость программирования.

Настройки этого же файла также легко подкорректировать в случае надобности.

Спустя 1 час, 46 минут, 58 секунд (25.07.2009 - 20:03) twin написал(а):
Цитата
оччень странный код )))
да все норм в принципе, работает - и ладно

просто, посмотришь на него через годика 2, сам поймешь (если будешь продолжать программить)

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

Цитата
есть понятие "шаблонизаторы".. никакой нормальный шаблонизатор не использует 100 инклудов, это во-первых.

Любой "нормальный" шаблонизатор использует регулярки. И так же в цикле. А любая регулярка на порядок медленнее инклюда. Так что не пугай людей пустым мешком.
Цитата
во-вторых, у тебя уже смешан HTML и PHP, ты не находишь?

А вот этого чего все так сильно боятся? Дизайнера вообще мало касаются теги шаблона, его в основном касаются стили. Ну и те теги, которые можно двигать. Имхо очень даже удобнее и практичнее поместить в php такие теги как <tr>, нежели мудрить приладу, что бы вывести их в шаблон.

Вообще с изобретением шаблонизаторов стали подменять понятия. Сами того не осознавая. Разделять надо логику и представление, а не php и html. Логика, это то, с чем работает программист. А соответственно представление - вотчина верстальщика. Так вот не нужны последнему тээрки, если таблица все равно генерится скриптом. Застилизовать он спокойно может остальные теги. (<table>,<td>).

Спустя 9 минут, 53 секунды (25.07.2009 - 20:13) lawbreaker написал(а):
oO
ничего себе я вопросик задал laugh.gif
аж 2 страницу уже smile.gif спорите и спорите smile.gif

Спустя 22 минуты, 35 секунд (25.07.2009 - 20:36) Sylex написал(а):
twin
я сам не пользуюсь шаблонизаторами, и не говорю что они "супер-пупер"

Цитата (twin @ 25.07.2009 - 23:03)
Любой "нормальный" шаблонизатор использует регулярки. И так же в цикле. А любая регулярка на порядок медленнее инклюда.

уверен? wink.gif

Спустя 2 минуты, 8 секунд (25.07.2009 - 20:38) Sylex написал(а):
Цитата (twin @ 25.07.2009 - 23:03)
А вот этого чего все так сильно боятся?


я не боюсь smile.gif это не критика, а констатация факта:

Цитата (Krevedko @ 25.07.2009 - 15:48)
или прийдется смешивать пхп и хтмл код


он у него уже смешан

Спустя 5 минут, 33 секунды (25.07.2009 - 20:44) twin написал(а):
Цитата
уверен?

Уверен в чем? В том что регулярка медленнее - абсолютно. А в том, что все шаблонизаторы их используют - на 99%.

Спустя 14 минут, 31 секунда (25.07.2009 - 20:58) Sylex написал(а):
Цитата (Sylex @ 25.07.2009 - 23:36)
любая регулярка на порядок медленнее инклюда.


замерь время 100 инклудов и 100 регулярок smile.gif

Спустя 22 минуты, 29 секунд (25.07.2009 - 21:21) Krevedko написал(а):
Цитата (Sylex @ 25.07.2009 - 17:38)
Цитата (twin @ 25.07.2009 - 23:03)
А вот этого чего все так сильно боятся?


я не боюсь smile.gif это не критика, а констатация факта:

Цитата (Krevedko @ 25.07.2009 - 15:48)
или прийдется смешивать пхп и хтмл код


он у него уже смешан

эхма...имелось ввиду, что я мог всю таблицу влупить туда через print_f и инклюд бы не понадобился.

Спустя 2 часа, 22 минуты, 1 секунда (25.07.2009 - 23:43) twin написал(а):
Цитата
замерь время 100 инклудов и 100 регулярок

Вопросов нет, в чистом виде медленнее, если как таковые сравнивать. Но только чтобы что то на что то заменить, нужно это что то получить в скрипт. То есть полюбому нужно file_get_contents(), которая сама по себе в 10 раз медленнее, потому что это функция, а инклюд - конструкция. И плюс регулярки, которые скоростью не отличаются. Всяко разно медленнее шаблонизатор будет работать.

Спустя 6 часов, 55 минут, 49 секунд (26.07.2009 - 06:38) Sylex написал(а):
Цитата (twin @ 26.07.2009 - 02:43)
полюбому нужно file_get_contents(), которая сама по себе в 10 раз медленнее, потому что это функция, а инклюд - конструкция.

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

Также, насколько я помню, если не указать абсолютный путь (как здесь), то проверяться будет сначала наличие файла в include_path, а затем в текущем каталоге (опять + 1 обращение к ФС).

Поэтому здесь все равно будет производительней взять файл через file_get_contents() и сделать простую замену через str_replace() (не надо регулярок!), его здесь вполне достаточно. Именно об этом я говорю. Хотя я уверен, file_get_contents+preg_replace в данном случае тоже отработают быстрее, чем include.

А если выйти на тему шаблонизаторов, то мы еще не учитываем такие вещи, как кэш, например. И по скорости очень сложно спорить. В одном случае шаблонизатор может даст прирост скорости, в другой - наоборот. Я в общем-то не про них.

Вообще, для простых сайтов, конечно, здесь спор не уместен smile.gif. Хоть 100 include в цикле - в принципе отработает достаточно быстро, поэтому можно не заморачиваться, но я бы так никогда не делал smile.gif

Спустя 3 часа, 15 минут, 28 секунд (26.07.2009 - 09:54) Krevedko написал(а):
ой ей...куда я попал называется huh.gif
biggrin.gif Народ, я не в курсе, что такое шаблонизаторы итд...я пхп учу ровно 1 месяц и неделю.

Спустя 2 часа, 49 минут, 32 секунды (26.07.2009 - 12:43) Sylex написал(а):
Krevedko
да и не надо тебе учить их, используй то, что знаешь, читай мануал лучше почаще! wink.gif

Спустя 14 минут, 54 секунды (26.07.2009 - 12:58) Krevedko написал(а):
я лучше пока потихоньку...используя то, что знаю...
а потом уже можно потихоньку рефакторинг делать..
все-таки первый сайт делаю

Спустя 7 часов, 54 минуты, 41 секунда (26.07.2009 - 20:53) twin написал(а):
Sylex
Да, действительно, ты прав. Видимо я раньше мерял некорректно. Решил всерьёз озадачиться и родил такую штуку. Для циклов. Остальные шаблоны парсить смысла нет, даже если и будет прирост, то совсем незначительный.
А для циклов вот такая простенькая прилада. Даже не шаблонизатор, а акселератор скорее:
PHP
function parse_tpl($tpl,$data)
    {

        foreach($data as $key => $value)
        $$key = $value;

        preg_match_all("#<\?php(.*?)\?>#uis",$tpl,$codes);
        $codes[0] = array_unique($codes[0]);
        $count = count($codes[0]);

        if($count)
            for($i = 0; $i < $count; ++$i)
            {
            ob_start();
            eval($codes[1][$i]);
            $echo = ob_get_contents();  
            ob_end_clean
();
            $tpl = str_replace($codes[0][$i],$echo,$tpl);
            }  
    
    return $tpl
;
    }


Кому интересно, можно потестить:

PHP
define("START_TIME1", microtime(true));
$data['dynamic'] = 1;
$tpl = file_get_contents(dirname(__FILE__).'/tpl.html');
    for($t = 0; $t < 100; ++$t)
    {
    $data['dynamic']++;
    $cont .= parse_tpl($tpl,$data);
    }
echo $cont;
printf("<br>Время выполнения: %.5f с<br>", microtime(true)- START_TIME1);

define("START_TIME2", microtime(true));
$dynamic = 1;
ob_start();
    for($t = 0; $t < 100; ++$t)
    {
    $dynamic++;
    include dirname(__FILE__).'\tpl.html';
    }
$cont = ob_get_contents();  
ob_end_clean
();
echo $cont;
printf("<br>Время выполнения: %.5f с<br>", microtime(true)- START_TIME2);


tpl.html
HTML
<b>
<?php echo $dynamic; ?> => <?php echo microtime(true); ?>
</b><br />


Sylex
Большое спасибо за наводку, а то я так бы и пребывал в розовом тумане, что инклюды быстрее smile.gif


_____________
Я Андрей и мне 14 лет :)
И ни как не дождусь когда HardWoman меня удалит
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.