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'] );
}

画像のアップロード中に既に使用可能なタグをユーザーに表示することに関する限り、ユーザーが入力したタグがデータベースに既に存在するかどうかを確認し、存在する場合はそれらを表示することで ajaxify できます...そしてそれらを繰り返し挿入することを避けますデータベースで。

これはスタートであり、改善することができます。

それが役に立てば幸い。

于 2013-01-28T08:13:30.020 に答える