2010-11-15 88 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