Использование PHP для пометки формы для вставки или обновления функции - PullRequest
0 голосов
/ 09 марта 2012

интересно, каков лучший способ достичь чего-либо.

Подводя итог, у меня есть форма, которую я загружаю с помощью ajax, который я использую для обновления и вставки новых строк в базу данных.Чтобы определить, является ли это обновлением или вставкой, я использую приведенный ниже код (обновленные формы используют запрос mysql для заполнения полей формы).

Мой код кажется неаккуратным и не рекомендуется.Есть ли еще какие-либо предложения о том, как лучше всего это сделать?

<? 
require_once("config.php");

$insert = false;
$update = false;
$targID = 0;

if(isset($_POST['targID'])){
$targID =  $_POST['targID'];
$targRow = mysql_fetch_array(mysql_query("select * from events where eventid=$targID"));
$update = true;
}else{
$insert = true;
}

?>
<script type="text/javascript">
    var insert = <? echo $insert; ?>+0;
    var update = <? echo $update; ?>+0;

    ......javascript button events, validation etc based on inssert/update
</script>

Ответы [ 3 ]

0 голосов
/ 09 марта 2012

Вы должны использовать нативный MySQL:

INSERT ... ON DUPLICATE KEY UPDATE

См: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

0 голосов
/ 09 марта 2012

Какой смысл определять это на стороне клиента?Есть ли разница?

Для серверной части я бы использовал $ targID, переданный из скрытого поля.если оно больше нуля - обновить, в противном случае - вставить.

0 голосов
/ 09 марта 2012

Вы уже знаете в клиенте, является ли это обновлением или вставкой, потому что вы отправляете или не отправляете элемент данных POST. Поэтому я бы написал JS на исходной странице, чтобы контролировать отправку и что делать с данными, которые отправляются обратно. Трудно написать код, не видя остальную часть страницы, но на уровне псевдокода вы можете сделать следующее:

  1. используйте onsubmit (), чтобы перехватить исходное действие отправки
  2. посмотрите, предоставлен ли targID
  3. если да, отправьте запрос на обновление на сервер. Когда данные строк возвращаются, заполните данные формы и отобразите форму (например, вы можете «показать» скрытый DIV, содержащий форму)
  4. если нет - вам нужно что-нибудь отправить? - просто открыть пустую форму (снова показать ранее скрытый DIV)

Надеюсь, это каким-то образом полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...