it-swarm-vi.com

Làm thế nào để lưu các giá trị hộp kiểm trong một bảng?

Làm thế nào tôi có thể chèn dữ liệu từ một biểu mẫu html vào một bảng trong cơ sở dữ liệu Joomla.
[.__.] Mã mẫu của biểu mẫ:
[.__.] Name : <input type="textbox" name="username"> Selection1 : <input type="checkbox" name="choice1" value="first"> Selection2 :<input type="checkbox" name="choice2" value="second"> Selection3: <input type="checkbox" name="choice3" value="third"> <input type="submit" value="submit" action="save_to_joomla_database.php"></form>

Tôi cần viết kịch bản nào trong save_to_joomla_database.php sẽ lưu trữ dữ liệu trong bất kỳ bảng cụ thể nào của cơ sở dữ liệu Joomla?

2
saibbyweb

Trước tiên, bạn sẽ cần nhận các giá trị bằng cách sử dụng JInput như vậy,

$input = JFactory::getApplication()->input;
$username = $input->get('username');
$choice1 = $input->get('choice1');
$choice2 = $input->get('choice2');
$choice3 = $input->get('choice3');

sau đó cho truy vấn cơ sở dữ liệu của bạn, bạn có thể sử dụng như sau:

$db = JFactory::getDbo(); 
$query = $db->getQuery(true);

$columns = array('username', 'choice1', 'choice2', 'choice2');
$values = array($db->quote($username), $db->quote($choice1), $db->quote($choice2), $db->quote($choice3));

$query->insert($db->quoteName('#__table_name'))
      ->columns($db->quoteName($columns))
      ->values(implode(',', $values));

$db->setQuery($query);
$db->execute();

Tất nhiên bạn sẽ cần phải thực hiện một số thay đổi đối với truy vấn cơ sở dữ liệu để phù hợp với nhu cầu của bạn nhưng điều này sẽ giúp bạn bắt đầu

5
Lodder

@Lodder hoàn toàn chính xác, nhưng có một cú pháp khác cho những người quan tâm. Tôi thích cú pháp này vì nó lưu cách gõ tên trường nhiều lần

$data = new stdClass;
$input = JFactory::getApplication()->input;
$data->username = $input->get('username');
$data->choice1 = $input->get('choice1');
$data->choice2 = $input->get('choice2');
$data->choice3 = $input->get('choice3');

$db = JFactory::getDbo(); 
$db->insertObject('#__table_name', $data);

Miễn là các thuộc tính của đối tượng của bạn khớp chính xác với tên cột, bạn chỉ có thể chèn đối tượng trực tiếp vào bảng bằng cách sử dụng insertObject

5
David Fritsch