1

我试图设置一个表单,允许用户将图像上传到服务器上的文件夹并将标签上传到数据库,以便可以搜索图像标签并且任何选定的图像都会显示与其连接的标签列表. 我试图在stackoverflow上做一个标签系统,只用图像而不是文本。这是我到目前为止所拥有的:

<form action="insert.php" method="post">
<p>
<label for="file">Filename:</label>
<input type="file" name="imageName" id="imageName">
<br />
<label for="tags">Tags</label>
<textarea name="tags" id="tags" cols="45" rows="5"></textarea>
<input type="hidden" name="member" id="member" />
<br />
<input type="submit">
</p>
</form>

这就是表格,这是 php

<?php
$con = mysql_connect("localhost");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("images", $con);

$sql="INSERT INTO images (imageName, tags, member)
VALUES
('$_POST[imageName]','$_POST[tags]','$_POST[member]')";

if (!mysql_query($sql,$con))
 {
 die('Error: ' . mysql_error());
 }
echo "1 record added";

mysql_close($con);

     $allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 200000000000000000000000)
&& in_array($extension, $allowedExts))
 {
  if ($_FILES["file"]["error"] > 0)
   {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
    }
   else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
     else
     {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
     }
    }
else
   {
   echo "Invalid file";
  }

  ?>
4

2 回答 2

0

你可以通过不同的方式做到这一点:

使用简单的 HTML 下拉列表(带有选项允许多选)

<select multiple="multiple" name="Select1" style="width: 129px">
<!-- start loop here-->
<option value="tag1">tag1</option>
<!-- end loop here-->
</select>

在这里,您需要从数据库中加载所有标签。

或使用jQuery UI 自动完成

于 2013-01-28T08:12:34.583 回答
0

在您的 HTML 中:

<input type="hidden" name="member" id="member" />,您没有放置value属性,该属性将包含上传图像/标签的成员的名称。

所以改成:

<input type="hidden" name="member" id="member" value="YOUR_MEMBER_NAME_HERE" />

此外,在 PHP 中,$_POST[imageName]不会包含上传图像的名称。在 PHP - 中有一个单独的超全局数组$_FILES

因此,图像名称将在$_FILES['imageName']['name'].

此外,您只是将图像名称放入数据库中,而不是将图像存储在任何地方。

这是存储图像的代码。

$folder = 'NAME_OF_THE_FOLDER_WHERE_YOU_WANT_TO_SAVE_IMAGES';
if( is_uploaded_file( $_FILES['imageName']['tmp_name'] ) ) {
    move_uploaded_file( $_FILES['imageName']['tmp_name'], "$folder/" . $_FILES['imageName']['name'] );
}

至于在上传图像时向用户显示已经可用的标签,您可以通过检查用户输入的标签是否已经存在于数据库中来验证是否存在,如果是,则显示它们......并避免重复插入它们在数据库中。

这是一个开始,你可以改进它。

希望能帮助到你。

于 2013-01-28T08:13:30.020 回答