Помощник
|
Вывод из БД, цикл |
BoL4oNoK
|
Сообщение
#1
|
||
|
|
||
|
|||
Apay |
31.1.2011, 14:35;
Ответить: Apay
Сообщение
#2
|
|
а что такое $count ? копайте в эту сторону
|
|
|
BoL4oNoK
|
Сообщение
#3
|
|
|
|
|
Apay |
1.2.2011, 14:24;
Ответить: Apay
Сообщение
#4
|
|
|
|
|
BoL4oNoK
|
Сообщение
#5
|
|
а где это получение есть в тексте? там код повторяется. Вот весь скрипт: [PHP]/* Выводим картинки*/ $content = '<table border="1">'; $query = "SELECT * FROM `galery`"; $sql = mysql_query($query) or die(mysql_error()); $count = mysql_num_rows($sql); if ($count >= 16) { $query = "SELECT * FROM `galery` ORDER BY `id` DESC LIMIT 16"; $sql = mysql_query($query) or die(mysql_error()); for ($st1 = 1; $st1 <= 4; $st1++) { $content .= '<tr>'; for ($st2 = 1; $st2 <= 4; $st2++) { $row = mysql_fetch_assoc($sql); $date = $row['date']; $theme = $row['theme']; $author = $row['author']; $title = $row['title']; $picprev = $row['picprev']; if (isset($_SESSION['user_id'])) { $query = "SELECT * FROM `users` WHERE `id`='{$_SESSION['user_id']}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if (mysql_num_rows($sql)==1) { $res = mysql_fetch_assoc($sql); $name = $res['login']; $usid = $res['id']; } } if ($name == $author) { $profile = 'profile/'; } else { $profile = 'profile/?author='.$usid; } $content .='<td valign="top"><img src="http://www.lit-art.net/galery/imgprev/'.$picprev.'" /><br><a href="http://www.lib-art.net/galery/view.php?id='.$row['id'].'">'.$title.'</a>['.$date.']<br>'.$theme.'<br /><a href="http://www.lib-art.net/'.$profile.'" title="Просмотреть страницу автора">'.$author.'</a></td>'; } $content .= '</tr>'; } } else { $query = "SELECT * FROM `galery` ORDER BY `id`"; $sql = mysql_query($query) or die(mysql_error()); if ($count < 4) { $cnt1 = 1; } elseif ($count < 8) { $cnt1 = 2; } elseif ($count < 12) { $cnt1 = 3; } $cnt2 = $count; for ($st1 = 1; $st1 <= $cnt1; $st1++) { $content .= '<tr>'; for ($st2 = 1; $st2 <= $cnt2; $st2++) { $row = mysql_fetch_assoc($sql); $date = $row['date']; $theme = $row['theme']; $author = $row['author']; $title = $row['title']; $picprev = $row['picprev']; if (isset($_SESSION['user_id'])) { $query = "SELECT * FROM `users` WHERE `id`='{$_SESSION['user_id']}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if (mysql_num_rows($sql)==1) { $res = mysql_fetch_assoc($sql); $name = $res['login']; $usid = $res['id']; } } if ($name == $author) { $profile = 'profile/'; } else { $query = "SELECT * FROM `users` WHERE `login`='{$author}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if (mysql_num_rows($sql)==1) { $res = mysql_fetch_assoc($sql); $usid = $res['id']; $profile = 'profile/?author='.$usid; } } $content .='<td valign="top"><img src="http://www.lit-art.net/galery/imgprev/'.$picprev.'" /><br><a href="http://www.lib-art.net/galery/view.php?id='.$row['id'].'">'.$title.'</a>['.$date.']<br>'.$theme.'<br /><a href="http://www.lib-art.net/'.$profile.'" title="Просмотреть страницу автора">'.$author.'</a></td>'; } $content .= '</tr>'; } } $content .= '</table>'; echo $content; [/PHP] |
|
|
Apay |
2.2.2011, 11:36;
Ответить: Apay
Сообщение
#6
|
|
по коду есть следующие замечания:
1) зачем собирать строку, если ее потом все равно выводить? 2) количество записей всегда лучше вычислять не в php а в sql: SELECT COUNT(*), но для данного куска кода и это не нужно 3) зачем делать запросы к базе по поводу user в двойном цикле? 4) нашел ошибки: переменные $cnt1 , $name , $usid могут быть неинициализированными переделал ваш кусочек примерно так, каким он должен быть при нормальном программировании [PHP] $name = $usid = ''; if( isset($_SESSION['user_id']) ){ $query = "SELECT * FROM `users` WHERE `id`='{$_SESSION['user_id']}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); if( $res = mysql_fetch_assoc($sql) ){ $name = $res['login']; $usid = $res['id']; } } echo '<table border="1">'; $query = 'SELECT * FROM `galery` ORDER BY `id` DESC LIMIT 16'; $sql = mysql_query($query) or die(mysql_error()); $column = 4; while( $row = mysql_fetch_assoc($sql) ){ if( $column == 4 ){ echo '<tr>'; $column = 1; } else $column++; echo '<td valign="top"><img src="http://www.lit-art.net/galery/imgprev/'. $row['picprev'].'" /><a href="http://www.lib-art.net/galery/view.php?id='. $row['id'].'">'.$row['title'].'</a>['.$row['date'].']'.$row['theme']. '<a href="http://www.lib-art.net/profile/'. ( $name == $row['author'] ? '?author='.$usid ? '' ). '" title="Просмотреть страницу автора">'.$row['author'].'</a></td>' if( $column == 4 ) echo '</tr>'; } if( $column < 4 ){ echo '<td'. ( $column < 3 ? ' colspan="'.(4-$column).'"' : '' ) .'> </td></tr>'; echo '</table>'; [/PHP] p.s. специально переменную $column сделал в таком виде чтобs вам было понятней |
|
|
BoL4oNoK
|
Сообщение
#7
|
|
Apay,можете подробнее расписать мои ошибки?
|
|
|
Apay |
3.2.2011, 12:08;
Ответить: Apay
Сообщение
#8
|
|
|
1) собирать всю строку в переменную и потом вывести ее - лишний расход памяти и процессорного времени, что на хостингах бывает критично (перерасход), это не ошибка, но может привести к ошибке работы из-за лимитов ресурсов.
2) выборка всех строк в базе для подсчета количества строк - очень большой расход ресурсов (может занимать десятки секунд), гораздо правильнее возложить эту работу на субд. далее см. п. 1) 3) все что возможно надо вывести из цикла, иначе излишний и никчемный расход ресурсов. далее см. п. 1) 4) явная ошибка. переменные перед использованием должны быть всегда проинициализированны. у вас если $count равно 13, то $cnt1 непонятно чему равно. аналогично если нет пользователя то $name и $usid тоже непонятно чему равны
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Ручной обмен, ввод/вывод электронных валют | ЮMoney, WMZ, Крипта, Приват, Монобанк | Низкие комиссии, минимальные суммы сделок быстро, удобно, по доступному курсу |
200 | Sostavitel | 98206 | 11.2.2024, 21:07 автор: Wolfhound |
|
Sbitcoin.ru – Ввод, Вывод, Обмен: Qiwi, YD, Btc, Btc-e, PM, Cash IN, PR24, MG, WU, Нал (RU, UA). | 9 | sbitcoinru | 6784 | 10.10.2023, 19:25 автор: Sbitcoin |
|
Обмен WebMoney - Яндекс - QIWI. Вывод/ввод Приват24 UAH | 225 | himin | 132845 | 7.5.2023, 13:26 автор: Вера_Симонова |
|
«»101Crypta.com«»ВВОД/ВЫВОД/ОБМЕН«»BTC/ETH/QIWI/USDT/VISA/MC«»НАЛИЧНЫЕ/СНГ/ЕВРОПА«» | 13 | 101Crypta | 12160 | 18.4.2023, 23:15 автор: 101Crypta |
|
Нужен вывод в топ наших роликов Youtube | 3 | wep | 1929 | 23.3.2023, 17:39 автор: distrib095 |
Текстовая версия | Сейчас: 20.4.2024, 13:03 |