Zergio 0 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 В /engine/modules/show.full.php создал форму, данные с формы нужно передать в таблицу _post. Вопрос: как правильно написать запрос, чтоб данные пошли именно в строку с id текущей (просматриваемой) новости. Пробую вот так не выходит?! $db->query("UPDATE " . PREFIX . "_post SET newlinks='$links' WHERE id='{$row['id']}'"); Переменная $links данные получает, но в таблицу не передает, явно что-то в запросе. Цитата Ссылка на сообщение Поделиться на других сайтах
Pimen 0 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 (изменено) В какое место "врезаетесь" своим модом? И версию движка укажите. Изменено 8 марта 2008 пользователем Pimen Цитата Ссылка на сообщение Поделиться на других сайтах
ShVad 2 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 WHERE id='{$row['id']}'"); $row['id'] откуда берется? еще один запрос есть? Цитата Ссылка на сообщение Поделиться на других сайтах
Pimen 0 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 $row['id'] откуда берется? еще один запрос есть? Берется из стандартного запроса движка на вывод полной новости. Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 (изменено) Автор Я пробовал врезаться в районе 315-й строки (это между формированием [edit][/edit] и if ($config['related_news'])). Версия двига разумеется последняя. P.S. местонахождение хака планируется сразу после {fullstory}. Изменено 8 марта 2008 пользователем Zergio Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 Zergio, перед запросом напиши echo $row['id']; die(); чтобы было видно что в этой переменной. Плюс ко всему прочему полагаю что реальные данные перезаписываются пустотой при любом просмотре новости, чтобы этого не происходило пишем: if (sizeof($_POST) > 0) $db->query('UPDATE '.PREFIX.'_post SET newlinks="'.$links.'" WHERE id = '.$row['id']); И то это не способ - я например смогу удалённо стереть данные =) Поэтому перед запросом проверяем значение $links и вообще та ли форма была прислана Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 Автор Переменная $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']); } ... я например смогу удалённо стереть данные =) Это мы в курсе, что ты еще и не такое можешь. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 (изменено) Чтобы сработало if ($action == "addlinks") { $db->query('UPDATE '.PREFIX.'_post SET newlinks="'.$links.'" WHERE id = '.$row['id']); } нужно в форму добавить <input type="hidden" name="action" value="addlinks" /> Плюс ко всему необходимо профильтровать переменную $links. Нельзя сразу её пихать в базу, а то таких делов можно наворотить))) Изменено 8 марта 2008 пользователем lifestar Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 (изменено) Автор Работает !!! Viva lifestar !!! Можно и фильтровать, но эти данные практически нигде не будут использоваться и в течении дня будут удаляться. P.S. Хотя если подскажешь как их фильтровать, с удовольствием сделаю. )) Я так понимаю это должно быть что то типа: if( preg_match("/^[\.A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $row['gast_email'])) Изменено 8 марта 2008 пользователем Zergio Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 Zergio, да зачем так сложно? Ты сначала скажи какие данные там должны быть Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 (изменено) Автор Zergio, да зачем так сложно? Ты сначала скажи какие данные там должны быть Просто я вообще не в курсе что такое фильтрация, учусь на движке, на кусках кода. Данные - ссылки. Я так понимаю должно быть перечисление: A-z 0-9 . : / (ну может еще какие символы) P.S. уточнение: ссылки не должны быть кликабельные, только текст. Изменено 8 марта 2008 пользователем Zergio Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 Автор Вот еще вопросик: пытаюсь все эти поля вывести по типу 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&action=editnews&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 к запросу на обновление инфы, видать оно не так должно быть как я его пишу? Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 по поводу проверки ссылки посмотри в нете - много раз уже обсуждали в разных местах 1. а в чём функциональность строки? if (strpos ($tpl->copy_template) !== false ) {Там в строке где strpos ($tpl->copy_template, "") ошибкачто за ошибка? 2. где подключается этот файл (код которого приведён выше)? Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 8 марта 2008 Рассказать Опубликовано: 8 марта 2008 Автор 1. Если к разным новостям добавили инфо, то по типу lastcomments должно выводится на отдельную страницу, на ней вроде как должно дублировать темплейт, для каждой новости. Я так понимаю эта строка и дублирует его. Ошибка: Wrong parameter count for strpos() in /engine/modules/newlinks.php on line 26 2. Подключил я его в engine.php (доступ по адресу /?do=newlinks). Цитата Ссылка на сообщение Поделиться на других сайтах
Zergio 0 Опубликовано: 9 марта 2008 Рассказать Опубликовано: 9 марта 2008 Автор Вопрос снимаю, т.к. задуманое реализовал другим способом. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.