簡體   English   中英

編輯表單不起作用 php

[英]Edit form doesn't work php

實際上試圖解決問題 3 天,現在不知道該怎么做。 編輯表單不起作用。 我沒有錯誤消息。

沒有保存數據文件,因為我只從數據庫輸出。 編輯.php

<?php
include_once 'config.php';
if (isset($_POST['submit'])){
  if (empty($_POST['username'])){
    $errors = "Впишите ваше имя";
  }elseif (empty($_POST['email'])){
    $errors = "Впишите ваш email";
  }elseif (empty($_POST['task'])){
    $errors = "Впишите задание";
  }elseif (empty($_FILES['image']['name'])){
    $errors = "Вставьте картинку";
  }else{
    $id = $_GET['edit'];
    $username = mysqli_real_escape_string($db,
              trim($_POST['username']));
    $email = mysqli_real_escape_string($db,
              trim($_POST['email']));
     $task = mysqli_real_escape_string($db,
              trim($_POST['task']));
        $image = mysqli_real_escape_string($db,
          $_FILES['image']['name']);
        $target = "uploads/".basename($_FILES['image']['name']);

        $sql = "UPDATE `tasks` SET `username`='$username', `email`='$email',
         `task`='$task', `image`='$image'  WHERE `id`='$id'";
        mysqli_query($db, $sql);
        move_uploaded_file($_FILES['image']['tmp_name'], $target);
        $home_url = 'http://' . $_SERVER['HTTP_HOST'];
        header('Location:' . $home_url);
     }
    }
  ?>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>задачник</title>
  <link rel="stylesheet" 
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
  integrity="sha384-
BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" 
crossorigin="anonymous">
  <link href="/css/style.css" rel="stylesheet">
</head>
<body>
  <header>
      <h3>Внесение изменений в запись</h3>
     <a href="index.php" class="btn btn-default">На страницу 
администратора</a>
  </header>
  <br>
  <form method="POST" action="<?=$_SERVER['PHP_SELF'];?>" class="input_form" 
 enctype="multipart/form-data">
  <input type="text" name="username" placeholder="Введите Имя" 
class="username_input">
  <input type="email" name="email" placeholder="Введите email" 
class="email_input">
    <br>
    <br>
  <input type="hidden" name="MAX_FILE_SIZE" value="300000" />
  <input type="text" name="task" placeholder="Введите задание" 
class="task_input">
    <p>Сменить изображение</p>
  <input type="file" name="image" multiple accept="image/png, image/jpeg, 
image/gif">
    <br>
    <button type="submit" name="submit" id="add_btn">Изменить 
запись</button>
</form>

我試圖var_dump($_GET('edit')); 我得到了我想要編輯的頁面的正確 id,但在提交按鈕后,我被重定向到 index.php,db 中沒有任何變化。 var_dump($_POST['submit']); 給出字符串(0),但是這個項目的另一個文件夾中的 save_task 表單工作正常,提交后也給出字符串(0)。

edit.php文件中的更新查詢不正確。

$sql = "UPDATE `tasks` SET `username`='$username', `email`='$email',`task`='$task',  WHERE `id`='$id'";

更新查詢中 where 子句之前存在附加分號。將其刪除。

我認為錯誤在於$image值。 自己調試並找到錯誤 -

<?php
include_once 'config.php';
if (isset($_POST['submit'])){

echo 'form submitted? -  okay <br/>';

  if (empty($_POST['username'])){
    $errors = "Впишите ваше имя";
  }elseif (empty($_POST['email'])){
    $errors = "Впишите ваш email";
  }elseif (empty($_POST['task'])){
    $errors = "Впишите задание";
  }elseif (empty($_FILES['image']['name'])){
    $errors = "Вставьте картинку";
  }else{
     echo 'form validated? -  okay <br/>';
    $id = $_GET['edit'];
    $username = mysqli_real_escape_string($db,
              trim($_POST['username']));
    $email = mysqli_real_escape_string($db,
              trim($_POST['email']));
     $task = mysqli_real_escape_string($db,
              trim($_POST['task']));
        $image = mysqli_real_escape_string($db,
          $_FILES['image']['name']);

          //most probably error is here --- $_FILES['image']['name'] should gives you array!!! as you have used "multiple" in input

          var_dump($_FILES, $_FILES['image'], $_FILES['image']['name']); //die('debug--');

        $target = "uploads/".basename($_FILES['image']['name']);

        $sql = "UPDATE `tasks` SET `username`='$username', `email`='$email',
         `task`='$task', `image`='$image'  WHERE `id`='$id'";

         echo $sql.'<br/>' ;  //copy this sql and run in phpmyadmin sql-console and check if there is any error
         die('checking sql statement');

        mysqli_query($db, $sql);
        move_uploaded_file($_FILES['image']['tmp_name'], $target);
        $home_url = 'http://' . $_SERVER['HTTP_HOST'];
        //header('Location:' . $home_url);
     }
    }
  ?>

檢查edit.php文件中表單標簽中的“action”屬性。 action="<?=$_SERVER['PHP_SELF'];?>"它應該是action="/<?PHP echo basename($_SERVER['REQUEST_URI']); ?>" PHP_SELF 不附加獲取參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM