【问题标题】:How to display one image at a time?如何一次显示一张图片?
【发布时间】:2023-01-16 19:16:16
【问题描述】:

我目前正在我的学期网站项目中实现上传图像功能。但是,我遇到的问题是当我上传一张图片并继续重新上传另一张图片时。图片相互堆叠,当我刷新时,它根本不会删除所有上传的图片。

上下文图像:

<?php
include 'config.php';
session_start();
if (isset($_POST['submit'])) {
    $email = $_POST['email'];
    $name = $_POST['name'];
    $rating = $_POST['rating'];
    $contact = $_POST['contact'];
    $category = $_POST['category'];
    $feedback = $_POST['feedback'];

    $sql = "INSERT INTO feedback(email,name,contact,category,feedback) VALUES('$email','$name','$contact','$category','$feedback')";
    $result = mysqli_query($conn, $sql);
    if ($result) {
        header('location: feedback.php');
    }
    $sql2 = "INSERT INTO rate(rating) VALUES('$rating')";
    $result = mysqli_query($conn,$sql2);
    if($result){
        header('location: feedback.php');
    }
}
if(isset($_POST['upload'])){
    $filename = $_FILES['uploadfile']['name'];
    $tempname = $_FILES['uploadfile']['tmp_name'];
    $folder = "./image/".$filename;

    $sql3 = "INSERT INTO image(filename)VALUES('$filename')";
    mysqli_query($conn,$sql3);
    move_uploaded_file($tempname,$folder);
}

?>

<!DOCTYPE html>

<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <link rel="stylesheet" href="feedbackphp.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/rateYo/2.3.2/jquery.rateyo.min.css">
</head>

<body>
    <section class="contact">
        <div class="container-lg">
            <div class="text-center mt-5">
                <h2>Feedback Form</h2>
                <p class="lead">We Would like to hear your Feedback!</p>
            </div>
            <div class="row justify-content-center my-5">
                <div class="col-lg-6">
                    <form action="" method="post" enctype="multipart/form-data">
                        <label for="email" class="form-label">Email Address</label>
                        <input type="email" name="email" class="form-control" id="email" placeholder="Enter your Email">

                        <label for="name" class="form-label mt-2">Name</label>
                        <input type="text" name="name" class="form-control" id="name" placeholder="Enter your Name">

                        <label for="contact" class="form-label mt-2">Contact</label>
                        <input type="text" name="contact" class="form-control" id="contact" placeholder="Enter your Contact">

                        <label for="subject" class="form-label mt-2">Category</label>
                        <select class="form-select" name="category" id="subject">
                            <option value="">Select One</option>
                            <option value="Club Maintainence & Equipment">Club Maintainence & Equipment </option>
                            <option value="Club Cleanliness">Club Cleanliness</option>
                            <option value="Membership Issues">Membership Issues</option>
                            <option value="General/Others">General/Others</option>
                        </select>

                        <label for="rating" class="form-label mt-2">Rate Us!</label>
                        <div class="rateyo" id="rating" 
                            data-rateyo-rating="0" 
                            data-rateyo-num-stars="5" 
                            data-rateyo-score="3">
                        </div>

                        <span class="result">0</span>
                        <input type="hidden" name="rating">
                
                        <br>
                        <label for="query" class="form-label mt-2">Feedback Message </label>
                        <textarea id="query" name="feedback" class="form-control" style="height:140px" placeholder="Enter Feedback Message here..."></textarea>

                        <label class="form-label mt-2">Upload File</label>
                        <div class="form-group mt-2">
                            <input class="form-control" type="file" name="uploadfile">
                        </div>
                        <br>
                        <div class="form-group">
                            <button class="btn btn-primary" type="submit" name="upload">Upload</button>
                        </div>
                        <div id="display-image">
                            <?php
                                $query = "SELECT * FROM image";
                                $result = mysqli_query($conn,$query);
                                while($data = mysqli_fetch_assoc($result)){
                            ?>
                                <img src="./image/<?php echo $data['filename'];?>">
                            <?php
                                }
                            ?>
                        </div>
                        
                        

                        <div class="mb-4 text-center mt-2">
                            <button type="submit" name="submit" class="btn btn-primary">Submit Feedback</button>
                        </div>

                    </form>
                </div>
            </div>
        </div>
    </section>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/rateYo/2.3.2/jquery.rateyo.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
    <script src="fbphp.js" type="text/javascript"></script>
</body>

</html>

【问题讨论】:

  • 如果你只想显示单个图像,为什么要查询数据库中的所有图像,只需执行SELECT * FROM image LIMIT 1
  • 但您还应该有一列可能是主 ID 或至少是时间列,以便您可以按最新上传对文件进行排序
  • 警告!你对SQL injection attacks开放!阅读 how to prevent SQL injection in PHP,使用带有绑定参数的准备好的语句,而不是将变量直接注入查询。这不仅仅是关于安全。例如,如果您的数据包含单引号 ',您的查询就会中断。

标签: php html css


【解决方案1】:

您正在选择所有图像

$query = "SELECT * FROM image LIMIT 1";

使用关于将限制设置为 1 的查询;

然后使用它会阻止你使用while loop

希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多