2010-11-15 78 views
0

* 以下是我想要達到的目標:* 基本上我有一個表單,人們可以將事件提交到我們的數據庫。在CMS中,我有一個顯示事件數量記錄的頁面。保存櫃檯

* 以下是我有:點擊按鈕* 後,這個腳本被稱爲:

if($subject_type == 'Event') { 

    $query = "SELECT town, update_id, event_validex "; 
    $query .= "FROM dev_town "; 
    $query .= "LEFT JOIN updates ON dev_town.town_id = updates.town "; 
    $query .= " WHERE sitename = '".SITENAME."'"; 
    $query .= " AND month = " .date('m')." AND year =" .date('Y'); 

    $querys = $this->tep_db_query($query); 
    $rows = $this->tep_db_fetch_array($querys); 

    extract($rows); //extract rows, so you don't need to use array 

    $eventid = $event_validex + 1; 

    $sql_data_array = array('event_validex' => $eventid); 


    $submit_to_database = $this->tep_db_perform('updates', $sql_data_array, 'update', "town='".$town."'"); 

這工作得很好,但是我不能似乎解決下位

這就是問題 正如你所看到的,它會檢查當前月份的數據庫並添加它,這是規定sitename和那個月在那裏,而不是一個站點和另一個月。

我該如何獲得它添加行如果sitename和月不在那裏?

我一直在手動添加現在的月份,所以它的工作原理,我相信你可以同意這是一個球疼。

乾杯偷看

回答

2
    如果要檢查,如果站點A +第11個月存在做一個選擇查詢反對,存儲在一個變量返回的行數
  1. 。 ($存在= mysql_num_rows(「您的查詢這裏」);)

然後做的,如果在$語句存在變數,並繼續按照您的意願

if($exists) { 
    // update 
} else { 
// add 
} 
0

我不明白究竟如何你方法「檢查當前月份的數據庫並且增加它」;我會假設你的類的tep_db_perform()方法以某種方式處理這個問題。因爲你已經用選擇命中數據庫了,如果找到了一條記錄,你就可以使用結果集分配給$行作爲檢查SITENAME和Month是否存在記錄的手段。

見下文:

if($subject_type == 'Event') { 

    // build query to check the database for sitename, month and year. 
    $query = "SELECT town, update_id, event_validex "; 
    $query .= "FROM dev_town "; 
    $query .= "LEFT JOIN updates ON dev_town.town_id = updates.town "; 
    $query .= " WHERE sitename = '".SITENAME."'"; 
    $query .= " AND month = " .date('m')." AND year =" .date('Y'); 

    // Execute Query(wrapper for $result = mysql_query I guess?) 
    $querys = $this->tep_db_query($query); 

    // Get a resultset from database. --> you could merge this into one method with $this->tep_db_query 
    $rows = $this->tep_db_fetch_array($querys); 

    if(count($rows) > 0) { 
    extract($rows); //extract rows, so you don't need to use array --> I try to stay away from extract() as it makes for random variables being created. 
    $eventid = $event_validex + 1; 
    $sql_data_array = array('event_validex' => $eventid); 
    $submit_to_database = $this->tep_db_perform('updates', $sql_data_array, 'update', "town='".$town."'"); 
    } else { 
    // insert new record into database 
    // updated with code to execute insert SQL query. 
    $insert = "INSERT INTO updates ('town','month','year','event_validex') VALUES ('".$town."','". date('m')."','". date('Y')."','1')"; 
    $result = $this->tep_db_query($query); 
    } 
.... 

} 

如果我誤解了什麼東西,請讓我知道,幸福通過它與您合作。

希望這會有所幫助。 :)

0
 
$insert = "INSERT INTO updates ('town','month','year','event_validex') VALUES ('".$town."','". date('m')."','". date('Y')."','1')"; 
    $eventid = 1; 
     $sql_data_array = array('event_validex' => $eventid); 
     $submit_to_database = $this->tep_db_perform('updates', $sql_data_array, 'update', "town='".$town."'"); 


    } 
} 

這就是我對else語句那裏,但它會增加一個值,如果它的存在,但不會如果心不是添加新條目..?

+0

這是因爲您沒有執行$ insert查詢,而是運行了如果找到行就會運行的相同邏輯。 – rvdavid 2010-11-15 14:28:59

+0

我已經更新了我的答案,以包含您在上面提供的SQL,試試看。 – rvdavid 2010-11-15 14:33:08

+0

這也不起作用.. – Danienllxxox 2010-11-15 15:56:09