Как сделать пост SQL запросом?

Добрый день.
Требуется запостить сторонним скриптом пост на PHP.

Если можно примерчик самый простой…

Спасибо

20 комментариев

avatar
Судя по всему тут одним запросом не обойтись ((
avatar
Добавка топика
public function AddTopic(TopicEntity_Topic $oTopic) {
		$sql = "INSERT INTO ".Config::Get('db.table.topic')." 
			(blog_id,
			user_id,
			topic_type,
			topic_title,			
			topic_tags,
			topic_date_add,
			topic_user_ip,
			topic_publish,
			topic_publish_draft,
			topic_publish_index,
			topic_cut_text,
			topic_forbid_comment,			
			topic_text_hash			
			)
			VALUES(?d,  ?d,	?,	?,	?,  ?, ?, ?d, ?d, ?d, ?, ?, ?)
		";			
		if ($iId=$this->oDb->query($sql,$oTopic->getBlogId(),$oTopic->getUserId(),$oTopic->getType(),$oTopic->getTitle(),
			$oTopic->getTags(),$oTopic->getDateAdd(),$oTopic->getUserIp(),$oTopic->getPublish(),$oTopic->getPublishDraft(),$oTopic->getPublishIndex(),$oTopic->getCutText(),$oTopic->getForbidComment(),$oTopic->getTextHash())) 
		{
			$oTopic->setId($iId);
			$this->AddTopicContent($oTopic);
			return $iId;
		}		
		return false;
	}


Полный текст топика
public function AddTopicContent(TopicEntity_Topic $oTopic) {
		$sql = "INSERT INTO ".Config::Get('db.table.topic_content')." 
			(topic_id,			
			topic_text,
			topic_text_short,
			topic_text_source,
			topic_extra			
			)
			VALUES(?d,  ?,	?,	?, ? )
		";			
		if ($iId=$this->oDb->query($sql,$oTopic->getId(),$oTopic->getText(),
			$oTopic->getTextShort(),$oTopic->getTextSource(),$oTopic->getExtra())) 
		{
			return $iId;
		}		
		return false;
	}


Теги топика
public function AddTopicTag(TopicEntity_TopicTag $oTopicTag) {
		$sql = "INSERT INTO ".Config::Get('db.table.topic_tag')." 
			(topic_id,
			user_id,
			blog_id,
			topic_tag_text		
			)
			VALUES(?d,  ?d,  ?d,	?)
		";			
		if ($iId=$this->oDb->query($sql,$oTopicTag->getTopicId(),$oTopicTag->getUserId(),$oTopicTag->getBlogId(),$oTopicTag->getText())) 
		{
			return $iId;
		}		
		return false;
	}
avatar
Собственно это наверное как то из модуля надо запускать… я тут покапался, но почему то не работает сие творение:

$id = mysql_insert_id();
$sql ="INSERT INTO `prefix_topic_content` (
topic_id ,
topic_text ,
topic_text_short ,
topic_text_source ,
topic_extra
)
VALUES (
".$id.", '$usd', '$desc', '$usd', '')";


mysql_query($sql);
$sql ="INSERT INTO `prefix_topic` (
topic_id,
blog_id,
user_id ,
topic_type ,
topic_title ,
topic_tags ,
topic_date_add ,
topic_date_edit ,
topic_user_ip ,
topic_publish ,
topic_publish_draft ,
topic_publish_index ,
topic_rating ,
topic_count_vote ,
topic_count_read ,
topic_count_comment ,
topic_cut_text ,
topic_forbid_comment ,
topic_text_hash
)
VALUES (
".$id.", '13', '1', 'topic', '$title', 'теги, теги', ".time().", NULL , '', '1', '1', '0', '0.000', '0', '0', '0', NULL , '0', '')";



mysql_query($sql);
avatar
Когда делаете
INSERT INTO `prefix_topic`

какого фига вы ID суете, там это поле ауто-инкремент, его база назначит, а вот уже когда суете контент топика — там уже этот ID и надо указывать +)
avatar
все равно пустой экран в итоге ни ошбики ничего (
avatar
Не понятно, а что вы увидеть хотите?
В вашем примере вы ничего и не выводите. Если SQL сработал, ошибки и не будет, и подтверждения никакого не будет…
avatar
хочу увидеть новый данные в базе, следовательно и посты.
avatar
На самом деле это все изврат…
Гораздо правильнее и проще написать небольшой API.
Модуль, который по определенному урлу будет получать POST данные, там будет и текст топика и данные пользователя, от которого будет постинг. Так не надо «дублировать» код основного модуля «топик», да и валидация данных будет осуществлена всеми внутренними механизмами движка.

Там работы то часа на два =)
avatar
А не проще сделать sql файл и залить его через менеджер БД. Что и куда пихать уже выше описали.
avatar
нет не проще
avatar
просто я уже таким образом заливал на других движках, а тут в чем проблема не пойму
avatar
а может лучше сделать что-то вроде шлюза, чтобы модуль LS принимал нужные данные и забрасывал в свою БД?
avatar
Если б знал как сделал бы, а то что имею с тем и работаю, такое ощющение что проблема именно c LS, или модрерай или еще что мешает
avatar
Проблема не в ЛС, а в изначально неверном подходе. Он как раз и мешает. Выше верно было сказано: такие задачи решаются через API. Одним запросом тут не обойтись.
avatar
Если хотите, могу написать такую фиговину.
Будет API:
site.ru/api/user/add — добавить пользователя
site.ru/api/user/update — обновить данные пользователя
site.ru/api/user/get — получить пользователя
site.ru/api/blog/add — добавить блог
site.ru/api/blog/update — обновить блог
site.ru/api/blog/get — получить информацию блога
site.ru/api/blog/get/topic — получить топики блога
site.ru/api/topic/add — добавить топик
site.ru/api/topic/get — получить топик
site.ru/api/topic/get/comment — получить комментарии топика
site.ru/api/topic/add/comment — добавить корневой комментарий в топик
site.ru/api/topic/update — обновить топик
ну и так далее, по основным сущностям движка.
avatar
Ну это было бы просто шикарно, можно было бы и виндовый клиент тогда замутить для стрита
avatar
Значит и другим пригодится сие творение.
Для себя я уже пишу такую штуку, хочу сделать клиент под iPhone+iPod, так как планируется закачки геометок с карты сайта на телефон + отдача с телефона лога GPS с нанесением трекинга на карту сайта.
avatar
карта сайта = географическая карта на сайте (гуглмапс)
avatar
Если API будет покрывать все задачи движка, то я могу взяться за реализацию виндового клиента под LS, думаю многим будет интересен он для удобства работы с сайтом
avatar
И как?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.