|
|
|
| Привет,
Вот пример кода в котором хочу выводить нужные переменные из масива в таком виде $tit[id], $tit[title] и тд. Подскжаите как правильно написать данную функцию?
function zapros()
{
$title_array = mysql_query("SELECT * FROM f_index WHERE sort='index'");
$title = mysql_fetch_assoc($title_array);
do
{
echo $title[title];
}
while($title = mysql_fetch_assoc($title_array));
return $tit;
}
echo zapros();
|
| |
|
|
|
|
|
|
|
для: mister_pipin
(14.07.2011 в 01:14)
| |
<?
function zapros()
{
$title_array = mysql_query("SELECT * FROM f_index WHERE sort='index'");
while($title = mysql_fetch_assoc($title_array))
{
echo $title['id'].'-'.$title['title'];
}
}
echo zapros();
?>
|
| |
|
|
|
|
|
|
|
для: ONYX
(14.07.2011 в 02:39)
| | не совсем то что я хотел, если на словах не получается, то думаю так будет ясно
echo zapros($title[и тут любое значение, которое нужно подставить]);
|
это уже вывод функции | |
|
|
|
|
|
|
|
для: mister_pipin
(14.07.2011 в 02:44)
| | Могли бы подсказать что я не так делаю или что я не понимаю в работе с функциями?
За ранее спасибо | |
|
|
|
|
|
|
|
для: mister_pipin
(14.07.2011 в 02:44)
| | Пока ничего не понятно... Массив $title где формируется внутри функции или вне её?
PS В любом случае если вы используете echo внутри функции, его не нужно второй раз применять при вызове функции, если нужно, чтобы функция возвращала строку, то не нужно использовать в ней echo, нужно собирать данные передавать их наружу при помощи return. | |
|
|
|
|
|
|
|
для: cheops
(14.07.2011 в 14:27)
| | Я всю обработку хочу засунуть в функцию, чтобы вне функции, где мне нужно я подставлял только переменную
function zapros()
{
$title_array = mysql_query("SELECT id,meta_d,meta_k,title,text FROM f_index WHERE sort='index'");
$title = mysql_fetch_assoc($title_array);
do
{
echo $title[title];
}
while($title = mysql_fetch_assoc($title_array));
return $tit;
}
zapros();
|
при данном запросе из базы выбирается только одна строка
к примеру мне нужно подставить эту функцию в
<Title>тут вывод функции</title>
<meta name="keywords" content="тут тоже вывод только переменная таже но значение в ней другое" />
|
и тд | |
|
|
|
|
|
|
|
для: mister_pipin
(14.07.2011 в 14:46)
| | Т.е. функция должна возвращать название? В WHERE значение index откуда берется? Оно всегда одно и тоже
Посмотрите следующую функцию, насколько она далеко от того, что вам требуется? И что она должна делать еще?
<?php
function zapros()
{
$query = "SELECT id,meta_d,meta_k,title,text
FROM f_index
WHERE sort='index'"
$title_array = mysql_query($query);
if(!$title_array)
{
echo "Ошибка выполнения запроса ".mysql_error();
return false;
}
$title = array();
while($result = mysql_fetch_assoc($title_array))
{
$title[] = $result['title'];
}
if(!empty($title)) return implode(", ", $title);
else return false;
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(14.07.2011 в 15:08)
| | Спасибо за помощь, как бы почти то, что нужно,
1. функция должна возвращать массив значений, которые можно будет подставлять в разных местах страницы(тоесть эти значения id,meta_d,meta_k,title,text )
2. в WHERE sort='index'" - index может меняться, я его возьму с $_GET[for] и при вызове функции в нужном месте передам этоn параметр
$for = $_GET[for];
function zapros($for)
{
тут код
}
zapros($for);
|
Данная функция, которую Вы предоставили в этой части кода
while($result = mysql_fetch_assoc($title_array))
{
$title[] = $result['title'];
}
|
возвращает только одно значение, можно ли было сделать так, чтобы я смог выводить данную функцию примерно в виде
echo zapros($title[id]); или
echo zapros($title[meta_k]);
|
простите нуба если это настолько банально | |
|
|
|
|
|
|
|
для: mister_pipin
(14.07.2011 в 21:47)
| | Хорошо, давайте введем параметр $filed
<?php
function zapros($field='title')
{
$query = "SELECT $field
FROM f_index
WHERE sort='index'"
$title_array = mysql_query($query);
if(!$title_array)
{
echo "Ошибка выполнения запроса ".mysql_error();
return false;
}
$title = array();
while($result = mysql_fetch_assoc($title_array))
{
$title[] = $result[$field];
}
if(!empty($title)) return implode(", ", $title);
else return false;
}
?>
| вместо
echo zapros($title[id]); или
echo zapros($title[meta_k]);
| нужно писать
echo zapros('id'); или
echo zapros('meta_k');
| PS Правильно ли я понял, что функция должна возвращать только одно значение одного поля или как сейчас много значений через запятую? | |
|
|
|
|
|
|
|
для: cheops
(14.07.2011 в 21:59)
| | Наверно я не правильно объяснил(
к примеру этот запрос
$query = "SELECT id, meta_k,meta_d,text
FROM f_index
WHERE sort='index'"
$title_array = mysql_query($query);
|
мы можем брать из него любое значение поля $title_array[тут название поля] и выводим в любом месте страницы,
по этому примеру, на сколько понимаю,
function zapros($field='title')
|
вместо title я могу ли подставить переменную $_GET[for] ? чтото попробовал да не получилось подставив переменную(
и этот GET поставить вместо index? | |
|
|
|
|
|
|
|
для: mister_pipin
(14.07.2011 в 22:09)
| | Вместо этого аргумента вы можете подставить значение любого поля из списка id, meta_k,meta_d,text в виде строки, т.е.
echo zapros('id');
echo zapros('meta_k');
echo zapros('meta_d');
echo zapros('text');
| Вместо строки, может быть и переменная $_GET['for'], если она содержит имя одного из допустимых полей. | |
|
|
|
|
|
|
|
для: ONYX
(14.07.2011 в 02:39)
| | echo при вызове явно лишнее | |
|
|
|
|
|
|
|
для: psychomc
(14.07.2011 в 22:07)
| | оно не содержит, грубо говоря по переменной $_GET[for] определяется какие данные будут выводится на страницу, вместо индекс можно писать $_GET[for] и мы получим нужный массив. вот только у меня так и не получается что хочется
я хочу этим способом оптимизировать код, вот этот
if (!isset($_GET[for]) OR $_GET[for] == 'index')
{
//echo zapros();
// выборка главной страницы
$title_array = mysql_query("SELECT * FROM f_index WHERE sort='index'");
$title = mysql_fetch_assoc($title_array);
}
else
{
// выборка категорий
$title_array = mysql_query("SELECT * FROM f_index WHERE sort='$_GET[for]'");
$title = mysql_fetch_assoc($title_array);
$title_row= mysql_num_rows($title_array);
}
|
вот так все работает
<title><?php echo htmlspecialchars($title[title]); ?></title>
<meta name="description" content="<?php echo htmlspecialchars($title['meta_d']);?>">
<meta name="keywords" content="<? echo htmlspecialchars($title['meta_k']); ?>">
|
с помощью функции не получается сделать первую часть условия(( вместо этих значений
<?php echo htmlspecialchars($title['meta_d']);?>
|
я хочу подставлять как Вы написали
но так и не получается, подскажите какую полезную литературу прочитать чтобы это все понять и сделать | |
|
|
|
|
|
|
|
для: mister_pipin
(14.07.2011 в 22:45)
| | Спасибо Вам большое, с Вашей помощью разобрался немного, вот что хотел сделать с первого раза но ни как не смог объяснить доступным языком
function zapros($id,$tt)
{
$title_array = mysql_query("SELECT * FROM f_index WHERE sort='$id'");
$title = mysql_fetch_assoc($title_array);
if(!$title_array)
{
echo "Ошибка выполнения запроса ".mysql_error();
return false;
}
$tit = $title[$tt];
return $tit;
}
if(isset($_GET[for])) {$id = $_GET[for];} else {$id = 'index';}
//zapros($id,'title');
|
| |
|
|
|