gpt4 book ai didi

php - 使列表中的元素可点击 (PHP)

转载 作者:行者123 更新时间:2023-11-28 16:04:12 26 4
gpt4 key购买 nike

我目前正在开发一个简单的网页,使用户能够:将图像和相应的标题上传到数据库,让用户查看图像并删除它们。我已经用下面的代码完成了前两个:

<?php
#include_once("connection.php");
$db = new mysqli("192.168.2.2", "root", "", "proyectoti");
if ($db->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
echo "Información de servidor: ";
echo $db->host_info . "\n";

// Initialize message variable
$msg = "";

// If upload button is clicked ...
if (isset($_POST['upload'])) {
// Get image name
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); #$_FILES['image']['name'];
// Get text
$image_text = mysqli_real_escape_string($db, $_POST['image_text']);

$sql = "INSERT INTO images (image, image_text) VALUES ('{$image}', '{$image_text}')";
// execute query
mysqli_query($db, $sql);
}
$result = mysqli_query($db, "SELECT * FROM images");

?>
<!DOCTYPE html>
<html>
<head>
<title>Proyecto TI | Sube imágenes</title>
<style type="text/css">
#content{
width: 50%;
margin: 20px auto;
border: 1px solid #cbcbcb;
}
form{
width: 50%;
margin: 20px auto;
}
form div{
margin-top: 5px;
}
#img_div{
width: 80%;
padding: 5px;
margin: 15px auto;
border: 1px solid #cbcbcb;
}
#img_div:after{
content: "";
display: block;
clear: both;
}
img{
float: left;
margin: 5px;
width: 300px;
height: 140px;
}
</style>
</head>
<body>
<h1>Proyecto TI | <a> Interfaz </a></h1>
<div id="content">
<?php
while ($row = mysqli_fetch_array($result)) {
echo "<div id='img_div'>";
#echo "<img src='images/".$row['image']."' >";
echo '<img src="data:image/jpeg;base64,'.base64_encode( $row['image'] ).'"/>';
echo "<p>".$row['image_text']."</p>";
echo "</div>";
}
?>
<form method="POST" action="index.php" enctype="multipart/form-data">
<input type="hidden" name="size" value="1000000">
<div>
<input type="file" name="image">
</div>
<div>
<textarea
id="text"
cols="40"
rows="4"
name="image_text"
placeholder="Di algo de esta imagen ^^"></textarea>
</div>
<div>
<button type="submit" name="upload">Publicar</button>
</div>
</form>
</div>
</body>
</html>

看起来像这样:How it looks

现在,我唯一缺少的部分是能够删除图像(基本上我只回显每个图像),您建议我如何完成此操作,使每个元素都可点击,比方说,弹出一个用于执行操作(从数据库中删除)的对话框或按钮。

我真的不太了解 PHP 或 CSS/HTML,任何帮助将不胜感激,谢谢!

最佳答案

在此循环中:

  <?php
while ($row = mysqli_fetch_array($result)) {
echo "<div id='img_div'>";
#echo "<img src='images/".$row['image']."' >";
echo '<img src="data:image/jpeg;base64,'.base64_encode( $row['image'] ).'"/>';
echo "<p>".$row['image_text']."</p>";
echo "</div>";
}
?>

个人我会添加一个元素来点击——比如“x”或其他什么——具有唯一的数据属性: https://www.abeautifulsite.net/working-with-html5-data-attributes

显然你必须添加图像的唯一 id,这样你才能让 SQL 知道要删除哪一行......像这样:

 echo "<div class='delete-image' data-id='" . $row['id'] . "'>x</div>';

然后我会将此类链接到 AJAX 调用以向服务器发出异步请求并在不重新加载页面的情况下删除图像。这不是很难。

一个更简单的解决方案是在循环中创建一个新表单,这样您就可以为每个图像创建多个表单,在表单中添加一个带有图像 ID 的隐藏字段并制作一个带有值“删除”或简单的“x”的提交按钮。

与创建支票的方式相同:

if (isset($_POST['upload'])) { ... }

你可以创建这样的东西:

if (isset($_POST['delete-image'])) { ... }

您将像普通表单输入一样携带图像 ID 值。你可以用它做任何你想做的事。

不过,我强烈建议您研究一下如何使用 jquery 和 ajax 调用。

关于php - 使列表中的元素可点击 (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49501083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com