Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вызов функции до объявления переменных
 
 автор: tima2010   (31.08.2011 в 16:01)   письмо автору
 
 

привет, столкнулся с такой проблемой
для удобства и сокращения кодов в файле решил использовать функцию которая к примеру выводит заголовок из БД (типа шаблонизатора)

Файл функций fun.php

<?php
function title(){
echo 
$row['title'].'<hr>';
}
?>


код файла отображения index.php


<?php
include 'fun.php';

$query "SELECT title FROM mytable";
$res mysql_query($query) or die(mysql_error());

while (
$row mysql_fetch_array($res)) {
    
title();

}

mysql_close();
?>


почему не работает? видимо из за того что функция не может найти $row['title'] ?
как можно это исправить?

  Ответить  
 
 автор: cheops   (31.08.2011 в 16:36)   письмо автору
 
   для: tima2010   (31.08.2011 в 16:01)
 

А вы передайте параметр функции
Файл функций fun.php
<?php 
function title($row){ 
echo 
$row['title'].'<hr>'

?>

код файла отображения index.php
<?php 
include 'fun.php'

$query "SELECT title FROM mytable"
$res mysql_query($query) or die(mysql_error()); 

while (
$row mysql_fetch_array($res)) { 
    
title($row); 



mysql_close(); 
?>

  Ответить  
 
 автор: tima2010   (31.08.2011 в 16:48)   письмо автору
 
   для: cheops   (31.08.2011 в 16:36)
 

Спасибо! Подскажите пожалуйста разумно ли использовать данную схему в роли построения шаблонов сайта?

  Ответить  
 
 автор: cheops   (31.08.2011 в 17:01)   письмо автору
 
   для: tima2010   (31.08.2011 в 16:48)
 

Довольно разумно...

  Ответить  
 
 автор: Valick   (31.08.2011 в 17:27)   письмо автору
 
   для: tima2010   (31.08.2011 в 16:48)
 

именно эту функцию (и подобные ей) я считаю абсолютно неразумными
функция в общем понимании должна быть достаточно универсальной, а у вас она жестко привязана к выборке столбца title, не вижу смысла делать пятью строками то, что можно сделать одной
<?php  

$query 
"SELECT title FROM mytable";  
$res mysql_query($query) or die(mysql_error());  

while (
$row mysql_fetch_array($res)) {  
    
$title=$row[title];  

}  

mysql_close();  


echo 
"<title>$title</title>";
?>

  Ответить  
 
 автор: tima2010   (31.08.2011 в 17:35)   письмо автору
 
   для: Valick   (31.08.2011 в 17:27)
 

спасибо но одна строка это только в примере! (весь код от 7 до 10 строк)
раз вы считаете это не разумным, тогда как лучше выводить отдельные функции в шаблоне?
все это задумано для удобства прописывать функции в шаблон

  Ответить  
 
 автор: Valick   (31.08.2011 в 17:59)   письмо автору
 
   для: tima2010   (31.08.2011 в 17:35)
 

--

  Ответить  
 
 автор: Valick   (31.08.2011 в 18:02)   письмо автору
 
   для: tima2010   (31.08.2011 в 17:35)
 

да это понятно, я просто показал вам что там где можно обойтись одной переменной не нужна функция, и то что одна функция должна обрабатывать группу однотипных данных у вас же она завязана окончательно и бесповоротно только на title который прописан в самом теле функции.

просто не хватает у меня мозга донести русским языком до вас мою мысль :)
__
я считаю неразумным не сам вывод, а саму функцию (точнее неудачный пример), хотя я бы большую часть функций держал не в шаблоне, а за его пределами, а в шаблоне использовал бы переменные, но все зависит от функции

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования