Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2017, 21:46   #1
Bulat Ibrahim
Форумчанин
 
Регистрация: 24.04.2015
Сообщений: 199
По умолчанию Вызвать переменную выше, чем его создать.

Всем здравствуйте. Понемножку перевожу свой сайт в динамический, и делаю "с единой точкой входа".
Пришлось весь этот код писать внутри документа, так как я не умею брать все данные из цикла foreach в переменную (в переменной сохраняется только последняя часть). Поэтому, приходится выводить текст прямо на месте. А проблема в том, что в этом же коде выводится из базы данных текст для <title>. И так как сам <title> находится выше, текст не выводится.
Помогите пожалуйста решить данную проблему.

Думаю, будет лучше, если как-то сохранить в переменную всё то, что выдаёт foreach. Если так невозможно, то как-то переменную для <title> сделать глобальной, чтобы его можно было вызвать его ещё до его создания.
Булат Азат улы
Bulat Ibrahim вне форума Ответить с цитированием
Старый 13.08.2017, 22:00   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

С кодом было бы проще всё решить, чем наугад.
Andkorol вне форума Ответить с цитированием
Старый 13.08.2017, 22:13   #3
Bulat Ibrahim
Форумчанин
 
Регистрация: 24.04.2015
Сообщений: 199
По умолчанию

Andkorol, вот этот код:

Код:
<title><?php echo $titleName; ?></title>
...
switch($_SERVER["REQUEST_URI"]){
	case "/sait/":
		$titleName = "Титул сайта"; /*Вот этт титул, который не показывается, так как вызывается выше*/
							
		$querySlaid = "SELECT slaid_rasem, slaid_alt, slaid_anlatma FROM slaidlar";
		$resSlaid = mysql_query($querySlaid);
		$dataSlaid = array();
		while($rowSlaid = mysql_fetch_assoc($resSlaid)){
			$dataSlaid[] = $rowSlaid;
		}
		echo "<div id='slides'><div class='slides_container'>";
		foreach($dataSlaid as $itemSlaid) :
			echo "<div><a href='javascript:void(0)' target='_self'><img class='slaidRaseme' src='images/slide/rasemnar/".$itemSlaid['slaid_rasem']."' alt='".$itemSlaid['slaid_alt']."'></a><div class='caption' style='bottom:0'><p>".$itemSlaid['slaid_anlatma']."</p></div></div>";
		/*Вот это echo хотелось бы полностью (длинную, все циклы) сохранить в переменную, а потом уже его вызывать. Тогда можно было бы поднимать весь этот код на самое начало файла*/
		endforeach;
		echo "</div><a href='#' class='prev'></a><a href='#' class='next'></a></div><h1>Яңалыклар һәм белдерүләр</h1>";
												
		break;
	default:
		$titleName = "Ошибка 404: Страницы не существует";
		echo "<h1>Такой страницы не существует.</h1>";
}
Или, может быть, существует что-то наподобии Эхо, которую можно задать в одном месте (в начале документа), а печатать в другом месте?
Булат Азат улы
Bulat Ibrahim вне форума Ответить с цитированием
Старый 13.08.2017, 22:23   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

switch перенеси в начало кода.
Вывод собирай в переменную – и отображай там, где нужно:
PHP код:
<?php
$output 
$titleName '';

switch(
$_SERVER["REQUEST_URI"]){
    case 
"/sait/":
        
$titleName "Титул сайта"/*Вот этт титул, который не показывается, так как вызывается выше*/
                            
        
$querySlaid "SELECT slaid_rasem, slaid_alt, slaid_anlatma FROM slaidlar";
        
$resSlaid mysql_query($querySlaid);
        
$dataSlaid = array();
        while(
$rowSlaid mysql_fetch_assoc($resSlaid)){
            
$dataSlaid[] = $rowSlaid;
        }
        
$output .= "<div id='slides'><div class='slides_container'>";
        foreach(
$dataSlaid as $itemSlaid) :
            
$output .= "<div><a href='javascript:void(0)' target='_self'><img class='slaidRaseme' src='images/slide/rasemnar/".$itemSlaid['slaid_rasem']."' alt='".$itemSlaid['slaid_alt']."'></a><div class='caption' style='bottom:0'><p>".$itemSlaid['slaid_anlatma']."</p></div></div>";
        
/*Вот это echo хотелось бы полностью (длинную, все циклы) сохранить в переменную, а потом уже его вызывать. Тогда можно было бы поднимать весь этот код на самое начало файла*/
        
endforeach;
        
$output .= "</div><a href='#' class='prev'></a><a href='#' class='next'></a></div><h1>Яңалыклар һәм белдерүләр</h1>";
                                                
        break;
    default:
        
$titleName "Ошибка 404: Страницы не существует";
        
$output .= "<h1>Такой страницы не существует.</h1>";
}
?>
...
<title><?php echo $titleName?></title>
<?php echo $output?>
Andkorol вне форума Ответить с цитированием
Старый 13.08.2017, 22:30   #5
Bulat Ibrahim
Форумчанин
 
Регистрация: 24.04.2015
Сообщений: 199
По умолчанию

Andkorol, спасибо большое! На счёт оператора ".=" я не совсем всё знал! Очень полезная штука.
Булат Азат улы

Последний раз редактировалось Bulat Ibrahim; 13.08.2017 в 22:45.
Bulat Ibrahim вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое отладчик с чем его едят и как его использовать Dimka-novitsek Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.03.2014 17:59
Как вызвать абзац по его стилю? radha Microsoft Office Word 2 25.09.2012 11:18
Как закоментировать скрипт, а затем вызвать его? %$PROregRAMi$t% JavaScript, Ajax 3 12.10.2011 13:50
BSOD: что из железа может его вызвать? Ромио Операционные системы общие вопросы 1 13.08.2009 12:45
Создать DLL на C# и вызвать её в Delphi RIO Общие вопросы .NET 2 22.03.2008 22:17