写入 Joomla 数据库
Write to Joomla database
我有一个很酷的 joomla 组件,它通过创建 url(请参阅 link)帮助我注册用户。
joomla extention
我想做的是能够使用相同的方法在不同的 table 上书写:
这是帮助用户注册的代码:
//http://YOURSITE.COM/index.php?option=com_hoicoiapi&task=registration&name=NAME&username=USERNAME&passwd=PASSWORD&email=EMAIL
public function registration()
{
$name = JRequest::getVar('name');
$username = JRequest::getVar('username');
$passwd = JRequest::getString('pass');
$email = JRequest::getVar('email');
$data = array(
"name"=>$name,
"username"=>$username,
"password"=>$passwd,
"password2"=>$passwd,
"email"=>$email,
"block"=>1,
"groups"=>array("2"),
"sendEmail"=>("1"),
);
$user = new JUser;
//Write to database
if(!$user->bind($data)) {
$status = "Could not bind data. Error: " . $user->getError();
}
if (!$user->save()) {
$status = "Could not save user. Error: " . $user->getError();
}
else {
$status = "Success";
}
$message = array(
'message' => $status
);
header('Content-Type: application/json');
echo json_encode ($message);
jexit();
}
更明确地说,我希望能够在名为 belvw_zoo_comment 的 table 中撰写评论
有没有办法通过修改上面的代码来做到这一点?我在想这样的事情:
//http://YOURSITE.COM/index.php?option=com_hoicoiapi&task=comment&author=AUTHOR&email=EMAIL&content=CONTENT
public function comment()
{
$author = JRequest::getVar('author');
$email = JRequest::getVar('email');
$content = JRequest::getVar('content');
$data = array(
"author"=>$author,
"email"=>$email,
"content"=>$content,
);
$comment = new comment;
//Write to database
if(!$comment->bind($data)) {
$status = "Could not bind data. Error: " . $user->getError();
}
if (!$comment->save()) {
$status = "Could not save user. Error: " . $user->getError();
}
else {
$status = "Success";
}
$message = array(
'message' => $status
);
header('Content-Type: application/json');
echo json_encode ($message);
jexit();
}
当然上面的代码是行不通的。
在代码的开头添加:
$comment = JRequest::getVar('comment');
然后在成功子句中添加以下块
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->insert('#__zoo_comment');
$query->set('name_of_field = '.$db->quote($comment));
$db->setQuery( $query );
$db->execute();
您必须将 'name_of_field' 的名称更改为您的字段名称,并且它假定评论位于提交表单中名为 'comment' 的字段中。
所以你会得到:
public function registration()
{
$name = JRequest::getVar('name');
$username = JRequest::getVar('username');
$passwd = JRequest::getString('pass');
$email = JRequest::getVar('email');
$comment = JRequest::getVar('comment');
$data = array(
"name"=>$name,
"username"=>$username,
"password"=>$passwd,
"password2"=>$passwd,
"email"=>$email,
"block"=>1,
"groups"=>array("2"),
"sendEmail"=>("1"),
);
$user = new JUser;
//Write to database
if(!$user->bind($data)) {
$status = "Could not bind data. Error: " . $user->getError();
}
if (!$user->save()) {
$status = "Could not save user. Error: " . $user->getError();
}
else {
$status = "Success";
//Save comment
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->insert('#__zoo_comment');
$query->set('name_of_field = '.$db->quote($comment));
$db->setQuery( $query );
$db->execute();
}
$message = array(
'message' => $status
);
header('Content-Type: application/json');
echo json_encode ($message);
jexit();
}
这是最终为我工作的代码:
public function event()
{
//$id = JRequest::getVar('id');
$ide = JRequest::getVar('ide');
$name = JRequest::getVar('name');
$email = JRequest::getVar('email');
$confirmed = JRequest::getVar('confirmed');
$quantity = JRequest::getVar('quantity');
$ip = $_SERVER['REMOTE_ADDR'];
$date = date('Y-m-d H:i:s');
//Custom Joomla code for inseting to comment table starts
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Insert columns.
$columns = array('ide', 'name','email','confirmed', 'ip','date'); // table column names
// Insert values.
$values = array($db->quote($ide), $db->quote($name), $db->quote($email), $db->quote($confirmed), $db->quote($ip) , $db->quote($date)); // values
// Prepare the insert query.
$query
->insert($db->quoteName('#__rseventspro_users'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
// Set the query using our newly populated query object and execute it.
$db->setQuery($query);
$message=$db->execute();
$last_id = $db->insertid();
$query1 = $db->getQuery(true);
// Insert columns.
$columns1 = array('ids', 'quantity'); // table column names
// Insert values.
$values1 = array($db->quote($last_id), $db->quote($quantity)); // values
// Prepare the insert query.
$query1
->insert($db->quoteName('#__rseventspro_user_tickets'))
->columns($db->quoteName($columns1))
->values(implode(',', $values1));
// Set the query using our newly populated query object and execute it.
$db->setQuery($query1);
$message=$db->execute();
header('Content-Type: application/json');
echo json_encode ($message);
jexit();
//Custom Joomla code for inseting to comment table starts
}
我有一个很酷的 joomla 组件,它通过创建 url(请参阅 link)帮助我注册用户。 joomla extention
我想做的是能够使用相同的方法在不同的 table 上书写: 这是帮助用户注册的代码:
//http://YOURSITE.COM/index.php?option=com_hoicoiapi&task=registration&name=NAME&username=USERNAME&passwd=PASSWORD&email=EMAIL
public function registration()
{
$name = JRequest::getVar('name');
$username = JRequest::getVar('username');
$passwd = JRequest::getString('pass');
$email = JRequest::getVar('email');
$data = array(
"name"=>$name,
"username"=>$username,
"password"=>$passwd,
"password2"=>$passwd,
"email"=>$email,
"block"=>1,
"groups"=>array("2"),
"sendEmail"=>("1"),
);
$user = new JUser;
//Write to database
if(!$user->bind($data)) {
$status = "Could not bind data. Error: " . $user->getError();
}
if (!$user->save()) {
$status = "Could not save user. Error: " . $user->getError();
}
else {
$status = "Success";
}
$message = array(
'message' => $status
);
header('Content-Type: application/json');
echo json_encode ($message);
jexit();
}
更明确地说,我希望能够在名为 belvw_zoo_comment 的 table 中撰写评论 有没有办法通过修改上面的代码来做到这一点?我在想这样的事情:
//http://YOURSITE.COM/index.php?option=com_hoicoiapi&task=comment&author=AUTHOR&email=EMAIL&content=CONTENT
public function comment()
{
$author = JRequest::getVar('author');
$email = JRequest::getVar('email');
$content = JRequest::getVar('content');
$data = array(
"author"=>$author,
"email"=>$email,
"content"=>$content,
);
$comment = new comment;
//Write to database
if(!$comment->bind($data)) {
$status = "Could not bind data. Error: " . $user->getError();
}
if (!$comment->save()) {
$status = "Could not save user. Error: " . $user->getError();
}
else {
$status = "Success";
}
$message = array(
'message' => $status
);
header('Content-Type: application/json');
echo json_encode ($message);
jexit();
}
当然上面的代码是行不通的。
在代码的开头添加:
$comment = JRequest::getVar('comment');
然后在成功子句中添加以下块
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->insert('#__zoo_comment');
$query->set('name_of_field = '.$db->quote($comment));
$db->setQuery( $query );
$db->execute();
您必须将 'name_of_field' 的名称更改为您的字段名称,并且它假定评论位于提交表单中名为 'comment' 的字段中。
所以你会得到:
public function registration()
{
$name = JRequest::getVar('name');
$username = JRequest::getVar('username');
$passwd = JRequest::getString('pass');
$email = JRequest::getVar('email');
$comment = JRequest::getVar('comment');
$data = array(
"name"=>$name,
"username"=>$username,
"password"=>$passwd,
"password2"=>$passwd,
"email"=>$email,
"block"=>1,
"groups"=>array("2"),
"sendEmail"=>("1"),
);
$user = new JUser;
//Write to database
if(!$user->bind($data)) {
$status = "Could not bind data. Error: " . $user->getError();
}
if (!$user->save()) {
$status = "Could not save user. Error: " . $user->getError();
}
else {
$status = "Success";
//Save comment
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->insert('#__zoo_comment');
$query->set('name_of_field = '.$db->quote($comment));
$db->setQuery( $query );
$db->execute();
}
$message = array(
'message' => $status
);
header('Content-Type: application/json');
echo json_encode ($message);
jexit();
}
这是最终为我工作的代码:
public function event()
{
//$id = JRequest::getVar('id');
$ide = JRequest::getVar('ide');
$name = JRequest::getVar('name');
$email = JRequest::getVar('email');
$confirmed = JRequest::getVar('confirmed');
$quantity = JRequest::getVar('quantity');
$ip = $_SERVER['REMOTE_ADDR'];
$date = date('Y-m-d H:i:s');
//Custom Joomla code for inseting to comment table starts
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Insert columns.
$columns = array('ide', 'name','email','confirmed', 'ip','date'); // table column names
// Insert values.
$values = array($db->quote($ide), $db->quote($name), $db->quote($email), $db->quote($confirmed), $db->quote($ip) , $db->quote($date)); // values
// Prepare the insert query.
$query
->insert($db->quoteName('#__rseventspro_users'))
->columns($db->quoteName($columns))
->values(implode(',', $values));
// Set the query using our newly populated query object and execute it.
$db->setQuery($query);
$message=$db->execute();
$last_id = $db->insertid();
$query1 = $db->getQuery(true);
// Insert columns.
$columns1 = array('ids', 'quantity'); // table column names
// Insert values.
$values1 = array($db->quote($last_id), $db->quote($quantity)); // values
// Prepare the insert query.
$query1
->insert($db->quoteName('#__rseventspro_user_tickets'))
->columns($db->quoteName($columns1))
->values(implode(',', $values1));
// Set the query using our newly populated query object and execute it.
$db->setQuery($query1);
$message=$db->execute();
header('Content-Type: application/json');
echo json_encode ($message);
jexit();
//Custom Joomla code for inseting to comment table starts
}