2013-02-28 71 views
0

我有一個用於約會的joomla組件,我有用於約會開始日期的複選框......我的問題是我一次只能做一個約會,我希望能夠檢查多個箱子,以便這些箱子的值可以保存在mysql中,當我檢查多個複選框時,只有最後一次檢查被保存在數據庫中...在mysql中插入多個複選框值

這裏是joomla組件的代碼,我認爲必須調整如果你能這樣幫助傢伙...

這是一個複選框代碼...

$timetableHTML .= '<td class="timeSlot timeFree" ><input type="checkbox" name="appointment[]" value="'.$startKey.'" onclick="changeTimes(\''.$calendar->min_duration.'\',\''.$startKey.'\',\''.$endKey.'\')"/></td>'; 

,這是保存功能部件的控制器......

function save() { 
    global $app; 
    JRequest::checkToken() or jexit('Invalid Token'); 

    $db =& JFactory::getDBO(); 
    $row =& JTable::getInstance('appointments', 'Table'); 
    $post = JRequest::get('post',4); 
    if (!$row->bind($post)) { JError::raiseError(500, $row->getError()); } 
    for ($i=1;$i<=10;$i++) { 
     if (is_array($row->{'field'.$i})) $row->{'field'.$i} = implode('|',$row->{'field'.$i}); $row->{'field'.$i} = strip_tags($row->{'field'.$i}); 
    } 
    if (!$row->check()) { JError::raiseError(500, $row->getError()); } 
    if (!$row->store()) { JError::raiseError(500, $row->getError()); } 
    $row->checkin(); 

      if ($this->config->emails){ 
       $this->notifyOwner(array($row->id)); 
       $this->notifyAppointee(array($row->id)); 
      } 

      $url = JRoute::_('index.php?option=com_jxtcappbook'.(JRequest::getInt('pop', 0) ? '&view=complete&tmpl=component' : '')); 
    $this->setRedirect($url ,JText::_('Termin je zakazan!'.$pop)); 
} 

我GOOGLE了一下,我想我需要設置jrequest ::與陣列得到的,是嗎?

+0

什麼版本的Joomla? – Tom 2013-02-28 01:43:30

回答

0

假設Joomla> 1.6。由於您使用JRequest了相當數量:

$appointments = JRequest::getVar('appointments', null, 'post', 'array'); 

或因爲這更好的將被棄用後3.0可以使用JInput:

$jinput = JFactory::getApplication()->input; 
$appointments = $jinput->post->get('appointments', 'null', 'ARRAY'); 

清理輸入,並加入到DB:

foreach (array_keys($appointments) as $element) { 
    $myappointments[] = $db->quote($element); 
} 


// construct query using implode and use comma separator 
$myappointments = implode(',', $myappointments); 
$db =& JFactory::getDBO(); 
$query = $db->getQuery(true); 
$query = sprintf('UPDATE $db->quoteName(#__mytable) SET $db->quote(...) WHERE $db->quote(...) IN (%s)', $myappointments); 
$db->setQuery($query); 
$db->query(); 

你明白了...

編輯(基於你的評論):

我仍然不知道你想達到什麼。所以我很難提供方向。我會再試一次。我猜你想要從表單中檢查值並將其放入數據庫。

//this pulls out the values in an array of all the things that have been "checked" (selected in the checkbox) 
$jinput = JFactory::getApplication()->input; 
$appointments = $jinput->post->get('appointments', 'null', 'ARRAY'); 

//**This is not code you need** I just want to illustrate what you are getting. 
//This is looping through the values of the checkboxes to see what you have 
for($i=0; $i < count($appointments); $i++){ 
    echo "Selected " . $appointments[$i]; 
} 

我之前提供的代碼展示瞭如何獲取值並存儲到數據庫中。因爲我不知道數據庫結構,所以我無法給出關於數據庫的說明。

+0

我只是將此代碼添加到現有的保存功能?以及我將更新查詢置於括號(...)中的內容是什麼? – Shile 2013-02-28 13:23:28

+0

@Shile是的,你可以添加到你現有的保存功能。我不知道你的桌子上有什麼欄目,所以我不能告訴你(...)中發生了什麼。清理輸入並添加到數據庫的部分僅僅是從複選框中獲取一些值並添加到數據庫的示例。這可能不是你需要的,只是向你展示你可以用它做什麼。 – Tom 2013-02-28 15:15:03

+0

我只是想添加多個複選框的值到現有的保存功能,添加到數據庫的其他值,我對此非常新,所以我不明白這一切... – Shile 2013-02-28 15:40:12