вывод переменной php вне цикла while - КАК?

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
QweЯty
лейтенант
Сообщения: 796
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

вывод переменной php вне цикла while - КАК?

Непрочитанное сообщение QweЯty » 2013-07-09 23:39:40

Код: Выделить всё

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); и все...
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: вывод переменной php вне цикла while - КАК?

Непрочитанное сообщение rmn » 2013-07-10 0:28:10

если правильно понял, что имеется в виду:
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";


Аватара пользователя
QweЯty
лейтенант
Сообщения: 796
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

Re: вывод переменной php вне цикла while - КАК?

Непрочитанное сообщение QweЯty » 2013-07-10 1:35:24

не совсем понял...
спишу это на позднее время... полвторого ужо...

вернее, цикл понял как работает... но не могу заставить его работать как надо... в общем, спать, утро вечера мудренее)))
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение

Аватара пользователя
QweЯty
лейтенант
Сообщения: 796
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

Re: вывод переменной php вне цикла while - КАК?

Непрочитанное сообщение QweЯty » 2013-07-10 1:59:27

при вот таком раскладе появляется лишний ряд </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>
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: вывод переменной php вне цикла while - КАК?

Непрочитанное сообщение rayder » 2013-07-10 18:16:01

ну так рисуйте дебаг, анализируйте условия... на за вас еще и программировать? как мказали ему рисовать, он так и рисует. И зачем так много вложеных if-ов?
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.

Аватара пользователя
QweЯty
лейтенант
Сообщения: 796
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

Re: вывод переменной php вне цикла while - КАК?

Непрочитанное сообщение QweЯty » 2013-07-11 12:33:33

хз, що цэ такi дебаг.
но разобрался...
просто работать над этим могу тока когда с работы прихожу, поем, душ.. и посидеть всего минут 40 - час. не больше :( потом спать и снова на работу.
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение