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

Помогите составить правильный запрос.


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

В /engine/modules/show.full.php создал форму, данные с формы нужно передать в таблицу _post.

Вопрос: как правильно написать запрос, чтоб данные пошли именно в строку с id текущей (просматриваемой) новости. Пробую вот так не выходит?!

$db->query("UPDATE " . PREFIX . "_post SET newlinks='$links' WHERE id='{$row['id']}'");

Переменная $links данные получает, но в таблицу не передает, явно что-то в запросе.

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

Я пробовал врезаться в районе 315-й строки (это между формированием [edit][/edit] и if ($config['related_news'])). Версия двига разумеется последняя.

P.S. местонахождение хака планируется сразу после {fullstory}.

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

Zergio, перед запросом напиши

echo $row['id']; die();
чтобы было видно что в этой переменной. Плюс ко всему прочему полагаю что реальные данные перезаписываются пустотой при любом просмотре новости, чтобы этого не происходило пишем:
if (sizeof($_POST) > 0)

	$db->query('UPDATE '.PREFIX.'_post SET newlinks="'.$links.'" WHERE id = '.$row['id']);

И то это не способ - я например смогу удалённо стереть данные =)

Поэтому перед запросом проверяем значение $links и вообще та ли форма была прислана

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

Переменная $row['id'] передает id текущей новости, проверено.

Переменная $links данные из формы принимает.

Или я не правильно запрос пишу, или вариант я неправильно данные с формы передаю.

Пишу вот так:

	<form action=\"\" method=\"post\" name=\"addlinks\">

	<textarea name=\"links\" style=\"width: 400px; height: 120px; font-family: verdana; font-size: 11px; border: 1px solid #E0E0E0;\"></textarea><br>

	<input class=\"bbcodes\" type=\"submit\" name=\"addlinks\" value=\"Enviar\" />

	</form>


	if ($action == "addlinks") {

	  $db->query('UPDATE '.PREFIX.'_post SET newlinks="'.$links.'" WHERE id = '.$row['id']);

	}

... я например смогу удалённо стереть данные =)

Это мы в курсе, что ты еще и не такое можешь. :rolleyes:

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

Чтобы сработало

	if ($action == "addlinks") {

	  $db->query('UPDATE '.PREFIX.'_post SET newlinks="'.$links.'" WHERE id = '.$row['id']);

	}

нужно в форму добавить

<input type="hidden" name="action" value="addlinks" />

Плюс ко всему необходимо профильтровать переменную $links. Нельзя сразу её пихать в базу, а то таких делов можно наворотить)))

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

:D Работает !!! Viva lifestar !!!

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

P.S. Хотя если подскажешь как их фильтровать, с удовольствием сделаю. ))

Я так понимаю это должно быть что то типа:

if( preg_match("/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $row['gast_email']))

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

Zergio, да зачем так сложно?

Ты сначала скажи какие данные там должны быть

Просто я вообще не в курсе что такое фильтрация, учусь на движке, на кусках кода.

Данные - ссылки. Я так понимаю должно быть перечисление: A-z 0-9 . : / (ну может еще какие символы)

P.S. уточнение: ссылки не должны быть кликабельные, только текст.

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

Вот еще вопросик:

пытаюсь все эти поля вывести по типу lastcomments, написал вот такой код, в основном выдирал из lastcomments.php:

<?php


if(!defined('DATALIFEENGINE'))

{

  die("Hacking attempt!");

}


if ($member_id['user_group'] == "1") {


	$tpl->load_template('newlinks.tpl');


	if (strpos ($tpl->copy_template) !== false ) {

	$db->query("SELECT id, newlinks, title FROM " . PREFIX . "_post WHERE newlinks NOT LIKE ''");


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

		  $full_link = $config['http_home_url'].$config['admin_path']."?mod=editnews&amp;action=editnews&amp;id=".$row['id'];


   		$title = $row['title'];


	  $news_title .= "<a href=\"".$full_link."\" target=\"_blank\">".stripslashes($title)."</a>";


	  $link_del .= "<form action=\"\" method=\"post\" name=\"link_del\">

		<input type=\"hidden\" name=\"action\" value=\"link_del\" />

		<input type=\"hidden\" name=\"news_id\" value=\"{$row['id']}\" />

		<input class=\"bbcodes\" type=\"submit\" name=\"link_del\" value=\"Eliminar\" />

		</form>";


		if ($action == "link_del") {

		  $db->query("UPDATE " . PREFIX . "_post SET newlinks = '' WHERE id = ".$news_id);

		}


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

	  $tpl->set('{newlinks}', $row['newlinks']);

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


	$tpl->compile('content');


	$news_title = "";

	$link_del = "";

	}

  }


$tpl->clear();

$db->free($sql_result);

}


?>

1. Там в строке где strpos ($tpl->copy_template, "") ошибка, незнаю как коректно записать дублирование темплейта, хотя дублирование проходит?

2. Как привязать кнопку link_del к запросу на обновление инфы, видать оно не так должно быть как я его пишу?

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

по поводу проверки ссылки посмотри в нете - много раз уже обсуждали в разных местах

1. а в чём функциональность строки?

if (strpos ($tpl->copy_template) !== false ) {

Там в строке где strpos ($tpl->copy_template, "") ошибка
что за ошибка?

2. где подключается этот файл (код которого приведён выше)?

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

1. Если к разным новостям добавили инфо, то по типу lastcomments должно выводится на отдельную страницу, на ней вроде как должно дублировать темплейт, для каждой новости. Я так понимаю эта строка и дублирует его. Ошибка: Wrong parameter count for strpos() in /engine/modules/newlinks.php on line 26

2. Подключил я его в engine.php (доступ по адресу /?do=newlinks).

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

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

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

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

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

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

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

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

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

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