Страница 1 из 1
вывод переменной php вне цикла while - КАК?
Добавлено: 2013-07-09 23:39:40
QweЯty
Код: Выделить всё
function tablist($tbltype, $tblrnd) {
$mysqli = new mysqli('127.0.0.1', 'root', '', 'books');
if (mysqli_connect_errno()) {
printf("Подключение к серверу MySQL невозможно. Код ошибки: %s\n", mysqli_connect_error());
exit;
}
if($tbltype = 1) {
$tablist = "SELECT `id`, `name`, `autor`, `name_old`, `name_all`, `date` FROM `book` WHERE `reading` = '".$tblrnd."' ORDER BY `name` ASC";
if ($result = $mysqli->query($tablist)) {
while($rowtbl = $result->fetch_assoc()) {
$name1 = $rowtbl['id'];
$name2 = $rowtbl['name'];
$name3 = $rowtbl['autor'];
$name4 = $rowtbl['name_old'];
$name5 = $rowtbl['date'];
if($tblrnd != 1) $name5 = '<p><span class="book_author"> '.$rowtbl['name_all'].'</span></p><br /></div>';
else $name5 = "";
if($rowtbl['date'] == date('Y')) {
$restbl = '<div class="books"><img class="bookimg" src="/images/'.$name1.'" /><p>"'.$name2.'"<span class="book_author">'.$name3.'</span></p><p>'.$name4.'</p>'.$name5;
}
else $restbl = '"'.$name2.'" <span class="book_author">'.$name3.'</span>';
echo '<li>'.$restbl.'</li>';
}
}
}
$result->close();
$mysqli->close();
}
выводит все в таком порядке:
Код: Выделить всё
<div class="books_list">
<ul>
<li><div class="books"><img class="bookimg" src="/images/test.jpg" /><p>"test"<span class="book_author">test autor</span></p><p>текст</p></li>
<li><div class="books"><img class="bookimg" src="/images/test.jpg" /><p>"test"<span class="book_author">test autor</span></p><p>текст</p></li>
<li><div class="books"><img class="bookimg" src="/images/test.jpg" /><p>"test"<span class="book_author">test autor</span></p><p>текст</p></li>
<li><div class="books"><img class="bookimg" src="/images/test.jpg" /><p>"test"<span class="book_author">test autor</span></p><p>текст</p></li>
</ul>
</div>
или в таком(условие date('Y')):
Код: Выделить всё
<div class="books_list">
<ul>
<li>"test" <span class="book_author">test autor</span></li>
<li>"test" <span class="book_author">test autor</span></li>
<li>"test" <span class="book_author">test autor</span></li>
<li>"test" <span class="book_author">test autor</span></li>
<li>"test" <span class="book_author">test autor</span></li>
</ul>
</div>
а как сделать чтобы было вот так:
Код: Выделить всё
<p>$name5</p> /* то есть <p>2012</p> <p>2011</p> <p>2010</p> все что не равно текущему date('Y') */
<div class="books_list">
<ul>
<li>"test" <span class='book_author'>test autor</span></li>
<li>"test" <span class='book_author'>test autor</span></li>
<li>"test" <span class='book_author'>test autor</span></li>
<li>"test" <span class='book_author'>test autor</span></li>
</ul>
</div>
не знаю как сделать вывод переменной вне цикла while
вызов происходит tablist(1,1); и все...
Re: вывод переменной php вне цикла while - КАК?
Добавлено: 2013-07-10 0:28:10
rmn
если правильно понял, что имеется в виду:
ORDER BY может быть множественным: ORDER BY date,name - сортирует выборку по дате и каждая подвыборка с одинаковой датой сортируется по имени.
Далее:
Код: Выделить всё
$result = mysql_query("SELECT ... ORDER BY date,name");
$prev_date = "";
while ($row = mysql_fetch_assoc($result))
{
if ($prev_date != $row['date'])
{
// Дата текущей записи отличается от предыдущей (новый год; всегда true на первой итерации)
// Если не первая итерация - выводим footer...
if ($prev_date != "")
echo "</ul>\n></div>\n";
// Выводим header следующей группы...
echo "<p>" . $row['date'] . "</p>\n";
echo "<div class='book_list'>\n<ul>\n";
$prev_date = $row['date'];
}
// Выводим очередную запись...
echo "\t<li>" . $row[...] . "</li>\n";
}
// Выводим footer последней записи...
echo "</ul>\n></div>\n";
Re: вывод переменной php вне цикла while - КАК?
Добавлено: 2013-07-10 1:35:24
QweЯty
не совсем понял...
спишу это на позднее время... полвторого ужо...
вернее, цикл понял как работает... но не могу заставить его работать как надо... в общем, спать, утро вечера мудренее)))
Re: вывод переменной php вне цикла while - КАК?
Добавлено: 2013-07-10 1:59:27
QweЯty
при вот таком раскладе появляется лишний ряд
</ul> </div>
Код: Выделить всё
$datebk = "";
if ($result = $mysqli->query($tablist)) {
while($rowtbl = $result->fetch_assoc()) {
if ($datebk != $rowtbl['date'])
{
if ($datebk != "") echo "</ul></div>";
if($rowtbl['date'] == date('Y')) {
echo "<div class='book_list'><ul>"; }
else {
echo "<p>".$rowtbl['date']."</p>";
echo "<div class='book_list'><ul>"; }
$datebk = $rowtbl['date'];
}
echo "<li></li>";
}
echo "</ul></div>";
}
получается вот так:
<div class="books_list">
<ul>
<div class='book_list'>
<ul>
<li></li></ul></div>
</ul>
</div>
<div class="books_list">
<ul>
</ul></div>
</ul>
</div>
<div class="books_list">
<ol>
<div class='book_list'>
<ul>
<li></li>
<li></li>
</ul></div>
<p>2012</p>
<div class='book_list'>
<ul>
<li></li>
</ul></div>
<p>2010</p>
<div class='book_list'>
<ul>
<li></li>
</ul>
</div>
<p>2009</p>
<div class='book_list'>
<ul>
<li></li>
</ul>
</div>
<p>2006</p>
<div class='book_list'>
<ul>
<li></li>
<li></li>
</ul>
</div>
</ol>
</div>
Re: вывод переменной php вне цикла while - КАК?
Добавлено: 2013-07-10 18:16:01
rayder
ну так рисуйте дебаг, анализируйте условия... на за вас еще и программировать? как мказали ему рисовать, он так и рисует. И зачем так много вложеных if-ов?
Re: вывод переменной php вне цикла while - КАК?
Добавлено: 2013-07-11 12:33:33
QweЯty
хз, що цэ такi дебаг.
но разобрался...
просто работать над этим могу тока когда с работы прихожу, поем, душ.. и посидеть всего минут 40 - час. не больше

потом спать и снова на работу.