Обновить значения таблицы в базе данных - PullRequest
0 голосов
/ 04 мая 2018

То, что у меня есть, это веб-сайт на основе HTML и со строками из базы данных

Что я хочу: Я хочу, чтобы он обновил поля с помощью 1 кнопки. У меня сейчас проблема в том, что он не будет обновлять правую строку. Первым обновится база данных.

Я хочу, чтобы он обновлял только те вещи, которые были отредактированы (например, 1 или 2 из 10), а остальные остались прежними.

Как выглядит моя страница

Как выглядит база данных

$PAGES = $app->get_pages();
  foreach($PAGES as $Pages){
    echo "
      <tr>
      <td>".$Pages['id']."</td>
       <form action='' method='post'>
      <td><input type='text' class='form-control profiel' name='PageName' value='".$Pages['naam']."'</td>
      <td><input type='text' class='form-control profiel' name='PageUrl' value='".$Pages['url']."'</td>
      <td><input type='text' class='form-control profiel' name='PageStatus' value='".$Pages['status']."'</td>
      <td><input type='text' class='form-control profiel' name='PagePos' value='".$Pages['positie']."'</td>

       <input type='hidden' name='pageID' value='".$Pages['id']."'>
       <td><button type='submit' name='deletePage'><i class='fa fa-trash'></i></button></td>
        </tr>
        ";
       }
      echo "
        </tbody></table>
         <button type='submit' class='btn btn-danger' name='updatePage'>Bewerk</button>
         </form>



if(isset($_POST['updatePage'])){
                unset($updateVAL);
                $updateVAL['naam'] = $app->check_string($_POST['PageName']);
                $updateVAL['url'] = $app->check_string($_POST['PageUrl']);
                $updateVAL['status'] = $app->check_string($_POST['PageStatus']);
                $updateVAL['positie'] = $app->check_string($_POST['PagePos']);
                $app->update_tabel('pages', $updateVAL);
                }

Функция для обновления:

public function update_tabel($tabel, $updateVAL){
        $q = '';
        foreach ($updateVAL as $key => $value) {
            $value  = str_replace("'","&#39;",$value);
            $q .= "`".$key."` = '".$value."',";
        }

        if(isset($q) && ($q !='')) {
            $q = substr($q,0,-1);
            $this->database->query("UPDATE ".$tabel." SET ".$q." LIMIT 1");
            $this->database->execute();
        }   
    }

* * Пример тысячи двадцать-одина * +1022 *

например, если я отредактирую 'Support' и сделаю из него 'Supporttt', он отредактирует его в базе данных НО установит для 'Home' значение 'Suporttt' и не изменит 'Support' «Suporttt», поэтому он обновляет не нужные записи

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Это то, что вам нужно сделать. Вы видите, что вы установили скрытое поле с именем pageID. Используйте это скрытое поле в качестве условия предложения where для запроса на обновление.

изменить код следующим образом

    if(isset($_POST['updatePage'])){
            unset($updateVAL);
            $updateVAL['naam'] = $app->check_string($_POST['PageName']);
            $updateVAL['url'] = $app->check_string($_POST['PageUrl']);
            $updateVAL['status'] = $app->check_string($_POST['PageStatus']);
            $updateVAL['positie'] = $app->check_string($_POST['PagePos']);
$id = $app->check_string($_POST['pageID']);

            $app->update_tabel('pages', $updateVAL,$id);
            }

Измените функцию обновления следующим образом

    public function update_tabel($tabel, $updateVAL,$id){
    $q = '';
    foreach ($updateVAL as $key => $value) {
        $value  = str_replace("'","&#39;",$value);
        $q .= "`".$key."` = '".$value."',";
    }
rtrim($q,',');
$q .= " WHERE id = $id";

    if(isset($q) && ($q !='')) {
        $q = substr($q,0,-1);
        $this->database->query("UPDATE ".$tabel." SET ".$q." LIMIT 1");
        $this->database->execute();
    }   
}
0 голосов
/ 04 мая 2018

Ваш запрос должен выглядеть следующим образом:

$this->database->query("UPDATE ".$tabel." SET ".$q." WHERE id='".$id."' LIMIT 1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...