2010-11-15 9 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."'"); 

Это прекрасно работает, но я не могу показаться, чтобы решить следующий бит

Это проблема Как вы можете видеть, она проверяет базу данных за текущий месяц и добавляет ее, это означает, что имя файла и этот месяц есть, а не сайт и другой месяц.

Как я могу получить его, чтобы добавить строку, если имя файла и месяца не существует?

Я вручную добавляю месяцы в настоящее время, так что это работает, и я уверен, что вы можете согласиться, что это боль в шаре.

Приветствия выглядывает

ответ

2
  1. если вы хотите проверить, если сайт A + 11 месяц существует сделать запрос на выборку против него и сохранить количество строк, возвращаемых в переменной. ($ Существует = mysql_num_rows («ваш запрос здесь»);)

тогда делать, если заявление против $ существует переменной и продолжить, как вы хотите

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

Я не вижу, как именно метод "проверяет базу данных за текущий месяц и добавляет ее"; Я просто предполагаю, что метод tep_db_perform() вашего класса обрабатывает это как-то.

(uhk! N00bed, остальное сообщение было как-то отрублено?) Поскольку вы уже нажимаете на базу данных с помощью select с целью использования данных, если запись найдена, вы можете использовать набор результатов присваивается $ rows в качестве средства проверки наличия записи в 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."'"); 


    } 
} 

это то, что у меня есть для еще заявление там, однако он добавит к стоимости, если ее там, но не добавит новую запись, если ее разве ..?

+0

Это потому, что вы не выполняете запрос $ insert, но выполняете ту же логику, которую вы бы выполнили, если строки найдены. – rvdavid

+0

Я обновил свой ответ, чтобы включить SQL, который вы указали выше, попробуйте это. – rvdavid

+0

это тоже не работает. – Danienllxxox

Смежные вопросы