Получить последние отмеченные флажки - PullRequest
0 голосов
/ 16 января 2011

Я не уверен, как решить эту проблему, которая смущала меня в течение нескольких дней. У меня есть форма, которая обновляет запись пользователя в MySQL, когда флажок установлен. Вот как моя форма делает это:

if (isset($_POST['Update'])) {  
        $paymentr = $_POST['paymentr']; //put checkboxes array into variable
        $paymentr2 = implode(', ', $paymentr); //implode array for mysql
        $query = "UPDATE transactions SET paymentreceived=NULL";
        $result = mysql_query($query);
        $query = "UPDATE transactions SET paymentdate='0000-00-00'";
        $result = mysql_query($query);
        $query = "UPDATE transactions SET paymentreceived='Yes' WHERE id IN ($paymentr2)";
        $result = mysql_query($query);
        $query = "UPDATE transactions SET paymentdate=NOW() WHERE id IN ($paymentr2)"; 
        $result = mysql_query($query);

        foreach ($paymentr as $v) { //should collect last updated records and put them into variable for emailing. 

            $query = "SELECT id, refid, affid FROM transactions WHERE id = '$v'";

            $result = mysql_query($query) or die("Query Failed: ".mysql_errno()." - ".mysql_error()."<BR>\n$query<BR>\n");
            $trans = mysql_fetch_array($result, MYSQL_ASSOC);

            $transactions .= '<br>User ID:'.$trans['id'].' -- '.$trans['refid'].' -- '.$trans['affid'].'<br>'; 


        }


    }   

К сожалению, тогда он обновляет ВСЕ записи пользователей с самой последней датой, а это не то, чего я хочу. Альтернатива, о которой я подумал, заключалась в том, чтобы через Javascript дать флажку значение, которое будет динамически обновляться при его выборе пользователем. Тогда в массив будут помещены только те флажки. Это возможно? Есть ли лучшее решение? Я даже не уверен, что смогу обдумать, как это сделать С помощью Javascript. Возможно, ответ заключается в том, как написан мой код mysql?

-

Редактировать: Хорошо, просто больше информации. Запросы SQL, которые я продолжаю, - первые два, чтобы стереть все в чистоте (в случае, если флажок UNCHECKED), а затем они обновляют запросы SQL, основываясь на том, какие флажки отмечены после публикации.

Однако я думаю, что это плохой способ сделать это. Зачем заставлять базу данных сначала уничтожать ВСЕ данные для получения и оплаты? Проблема также в том, что * все последующие флажки, независимо от того, как давно они были проверены, обновляются в запросе SQL, как сейчас. * Должен быть способ обновления это лучше. Я просто не уверен, КАК это сделать. есть идеи?

Ответы [ 2 ]

2 голосов
/ 16 января 2011

Вы не фильтруете по id в этих запросах:

 $query = "UPDATE transactions SET paymentreceived=NULL";
 $query = "UPDATE transactions SET paymentdate='0000-00-00'";

Попробуйте добавить: WHERE id IN ($paymentr2)";

0 голосов
/ 16 января 2011

Проблема в ваших первых 2 SQL-выражениях UPDATE. Вы не предоставляете предложение WHERE, поэтому оно обновит все ваши записи. Вы можете добавить:

 WHERE id IN ($paymentr2)

к вашим первым двум операторам ОБНОВЛЕНИЯ

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