Member 14649933 Ответов: 1

Как обновить запись базы данных на основе выбранного идентификатора


Здесь я хочу обновить колонку memberStatus в моей таблице пользователей на основе выбранного идентификатора. В моем заявлении foreach у меня есть кнопка activate, которую я использую для своего обновления. Проблема в том, что он не обновляется в правильной строке. Он принимает первый идентификатор, а не выбранный идентификатор. Как я могу заставить его обновить правильную запись или строку?

Что я уже пробовал:

function check_view() {
 global $wpdb;


 $output .= '<table>
  <tr style="color: #fff; background: #08a873">
    <th>   Account ID</th>
    <th>   Name</th>
    <th>Phone</th>
    <th>Email</th>
    <th>Referer ID</th>
    <th> Activate Member</th>
  </tr>';
 $results = $wpdb->get_results("select * from $wpdb->users WHERE memberStatus = 'Not Active'"); 
 $current_date = date('Y-m-d H:i:s');

 foreach( $results as $user_data) {


        $startTimeStamp = strtotime($user_data->deposit_date);
        $endTimeStamp = strtotime($current_date);

        $timeDiff = abs($endTimeStamp - $startTimeStamp);

        $numberDays = $timeDiff/86400;  // 86400 seconds in one day

        // and you might want to convert to integer
        $numberDays = intval($numberDays);

       $roi = $user_data->amount * 2;  
       $amount_growth = $roi - $user_data->amount;

 $output .= "<tr>
    <td> $user_data->ID</td>
    <td> $user_data->user_nicename</td>
    <td> $user_data->Phone</td>
    <td> $user_data->user_email</td>
    <td> $user_data->refID</td>
    <td> <form method='post'> <input type='submit' name='submit' value='Activate' /> </form> </td>
  </tr>";


 if($_POST['submit']) {

    $todate = date('Y-m-d H:i:s');   

    //Update Member Status
    $status = "Active";
    $where = array('ID' => $user_data->ID);
        $subs = array('user_registered' =>  $todate, 'memberStatus'=> $status);
        $table_name  = $wpdb->prefix."users";

       $actMember = $wpdb->update($table_name, $subs, $where);


     if($actMember) {
       header("Refresh:0");
       exit;
          } else {
       echo 'not';
       }
 }

 }
 $output .= '</table>';

 return $output;
}

Afzaal Ahmad Zeeshan

Я не вижу, куда вы отправляете идентификатор пользователя в запросе.

Member 14649933

ID пользователя я использую в предложении where является тот же идентификатор пользователя, что я получая в мой цикл foreach. Я не уверен, что это было вашей заботой.

1 Ответов

Рейтинг:
2

Richard Deeming

Как сказал Афзаал, вы не отправляете идентификатор пользователя, когда нажимаете на кнопку. Вам нужно добавить скрытый ввод в форму с идентификатором пользователя, который вы хотите обработать:

$output .= "<tr>
    <td> $user_data->ID</td>
    <td> $user_data->user_nicename</td>
    <td> $user_data->Phone</td>
    <td> $user_data->user_email</td>
    <td> $user_data->refID</td>
    <td> <form method='post'> <input type='hidden' name='ID' value='$user_data->ID' /> <input type='submit' name='submit' value='Activate' /> </form> </td>
  </tr>";
Вам также нужно будет переместить свой if($_POST['submit']) блок снаружи здания foreach петля - желательно перед началом $wpdb->get_results позвоните, чтобы отображаемые данные отражали только что сделанное обновление.