Перейти к публикации

Рекомендованные сообщения

Драсьте всем. Возник такой вопрос, при добавлении новой новости, добавляются дополнительные поля, в БД это выглядит примерно так: gorod|Аланья||hotel|Лонисера

Мне необходимо вытянуть последнее слово после | ... в данном случае Лонисера

Кто в php хорошо разбирается, подскажите нужную функцию.

Ссылка на сообщение
Поделиться на других сайтах

Не люблю я эти доп поля, по мне так удобнее новое поле в бд добавить (для базы это тоже плюс), но раз уж так надо - можно сделать end(explode("|", $row['xfields']));

Ссылка на сообщение
Поделиться на других сайтах

	$db->query("SELECT xfields FROM " . PREFIX . "_post");


	while($row = $db->get_row())

	{

		$hotely .= end(explode("|", $row['xfields']));

	}

		echo $hotely;

Правильно ли я записал? о_О

Ссылка на сообщение
Поделиться на других сайтах

Не люблю я эти доп поля
аналогично :)

Caman, всё верно, только все последние значения доп полей всех новостей у вас получатся написаны слитно

Ссылка на сообщение
Поделиться на других сайтах

$db->query("SELECT xfields FROM " . PREFIX . "_post");


	while($row = $db->get_row())

	{

		$hotely .= end(explode("|", $row['xfields']));

		echo "".$hotely."<br>";

	}

значит так =)

Ссылка на сообщение
Поделиться на других сайтах

Вот в таком вот маленьком скрипте на 4 строки, содержится серьезная XSS уязвимость. :)

Ссылка на сообщение
Поделиться на других сайтах

celsoft, какая задача ставилась - такое и решение. Вопросы безопасности не затрагивались (тем более я так полагаю, что Caman написал echo исключительно из наглядного соображения)

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах

$db->query("SELECT xfields FROM " . PREFIX . "_post");

	$hotely .= "<select name=\"pageSelect\">";

	while($row = $db->get_row())

	{

		$hotely_end .= end(explode("|", $row['xfields']));

		$hotely .= "<option value=\"#\">".$hotely_end."</option>";

	}

	$hotely .= "</select>";


$tpl->set('{hotely}', $hotely);

чёт не то, эту функцию я никак не знаю, вот и трудности... а может я просто что-то забыл

1199943758_11111111.gif

Ссылка на сообщение
Поделиться на других сайтах
$result = $db->query("SELECT xfields FROM " . PREFIX . "_post");

$hotely = '<select name="pageSelect">';

while($row = $db->get_row($result))

{

	$hotely .= '<option value="#">'.end(explode("|", $row['xfields'])).'</option>';

}

$hotely .= "</select>";

$tpl->set('{hotely}', $hotely);

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах

спасибо огромное!

И ещё небольшой вопросик...

Иногда поля не заполняют, т.к они необязательные к заполнению... получаются в выпадающем списке пробелы.

Как их убрать, наверное через условие? Как лучше реализовать?

что-то типа такого?

if($row['xfields']) != "") {$xfields = end(explode("|", $row['xfields']));} else {$xfields = "";}


$hotely .= '<option value="#">'.$xfields.'</option>';

Изменено пользователем Caman
Ссылка на сообщение
Поделиться на других сайтах

$xfields = ($row['xfields']) != '') ? end(explode('|', $row['xfields'])) : '';

мне тоже но данный код не будет работать на некоторых версиях PHP 5 и PHP 6.xx, скрипт завершится с ошибкой что функция end должна принимать в качестве параметра только переменную.

Ссылка на сообщение
Поделиться на других сайтах

функция end должна принимать в качестве параметра только переменную
Может массив?

А если так?

$xfields = ($row['xfields']) != '') ? @end(explode('|', $row['xfields'])) : '';

Ссылка на сообщение
Поделиться на других сайтах

Чего-то не то... делаю так:

$result = $db->query("SELECT xfields FROM " . PREFIX . "_post");

$hotely = '<select name="pageSelect">';

while($row = $db->get_row($result))

{

	$xfields = ($row['xfields']) != '') ? end(explode('|', $row['xfields'])) : '';

	$hotely .= '<option value="#">'.$xfields.'</option>';

}

$hotely .= "</select>";

index.php вообще пустой становится, даже если вписать

$xfields = ($row['xfields']) != '') ? @end(explode('|', $row['xfields'])) : '';

Ссылка на сообщение
Поделиться на других сайтах

index.php
причём здесь index.php?

Попробуй написать по другому...

$res = $db->query("SELECT xfields FROM " . PREFIX . "_post");

while($row = $db->get_row($res))

{

	if ($row['xfields']) != '')

	{

		$hotely .= '<option value="#">'.end(explode('|', $row['xfields'])).'</option>';

	}

}

$hotely = '<select name="pageSelect">'.$hotely.'</select>';

а то может действительно

на некоторых версиях PHP 5 и PHP 6.xx, скрипт завершится с ошибкой
Ссылка на сообщение
Поделиться на других сайтах

//navigator по отелям


$res = $db->query("SELECT xfields FROM " . PREFIX . "_post");

$hotely = '<option value="#">город/отель</option>';

while($row = $db->get_row($res))

{

	if ($row['xfields'] != '')

	{

		$hotely .= '<option value="#">'.end(explode('|', $row['xfields'])).'</option>';

	}

}

$hotely = '<select name="pageSelect">'.$hotely.'</select>';


//
Есть вопрос, т.к я оч.плохо знаю javascript, как сделать, чтобы при выборе нужного пункта из списка, перекидывалось на страницу поиска.
<form name=\"fullsearch\" id=\"fullsearch\" action=\"http://nashturist.ru/index.php?do=search\" method=\"post\">

<select name=\"pageSelect\" name=\"story\" id=\"searchinput\" onchange=\"location.href=this.options[selectedIndex].value\">'.$hotely.'</select>

</form>

Вот так примерно хочу сделать, но как правильно перекинуть на страницу поиска не знаю... метод POST тут... просто так слово не впишешь, как в GET'е

Ссылка на сообщение
Поделиться на других сайтах

<form name="fullsearch" id="fullsearch" action="http://nashturist.ru/index.php?do=search" method="post">

<select name="pageSelect" name="story" id="searchinput" onchange="this.form.submit();">'.$hotely.'</select>

</form>

по моему так. Правда нехорошо это, а если я ошибкся с выбором - ждать перезагрузки страницы?

Ссылка на сообщение
Поделиться на других сайтах

Вроде всё нормально работает, только не передаётся переменная POST

//navigator по отелям


$res = $db->query("SELECT xfields FROM " . PREFIX . "_post");

$hotely = '<option value="#">город/отель</option>';

while($row = $db->get_row($res))

{

	if ($row['xfields'] != '')

	{

		$hotely .= '<option value="'.end(explode('|', $row['xfields'])).'">'.end(explode('|', $row['xfields'])).'</option>';

	}

}

$hotely = '<form name="fullsearch" id="fullsearch" action="http://nashturist.ru/index.php?do=search" method="post">

<select name="pageSelect" name="story" id="searchinput" onchange="this.form.submit();">'.$hotely.'</select>

</form>';


//

Может нужно значения name или id поставить в option?

Ссылка на сообщение
Поделиться на других сайтах

только не передаётся переменная POST
как вы это определили?

Может нужно значения name или id поставить в option?
точно не нужно :)
Ссылка на сообщение
Поделиться на других сайтах

При переходе по ссылке из списка, выводится путая форма поиска, без результатов, вот я и думаю что значение переменной из option не передается POST

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...