Страница 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 - час. не больше :( потом спать и снова на работу.