2012-03-20 8 views
-1

アップロードされたフォルダ内のイメージを取得し、適切な場所にファイル名を埋め込んだ簡単なスクリプトを作成しようとしています。 ファイル名のアップロードと書き込みをデータベースに成功させました(その部分が必要なのかどうか不明)。 これを最も効果的に達成する方法について、いくつかの明確さが大好きです。私はいくつかのことを試しましたが、これまで運がありませんでした。PHPのフォルダからイメージリストを取得してイメージを作成するsrcタグ

<?php 
$hote = 'localhost'; 
$base = '*****'; 
$user = '*****'; 
$pass = 'testuser2012'; 
$cnx = mysql_connect ($hote, $user, $pass) or die(mysql_error()); 
$ret = mysql_select_db ($base) or die (mysql_error()); 
$image_id = mysql_real_escape_string($_GET['ID']); 
$sql = "SELECT image FROM image_upload WHERE ID ='$image_id'"; 
$result = mysql_query($sql); 
$image = mysql_result($result, 0); 

header('Content-Type: text/html'); 
echo '<img src="' . $image . '"/>'; 
exit; 
?> 

しかし、おそらく、私は完全な機能を説明する必要があります:私は、PHPのイメージギャラリーが呼び出されたときに、そのフォルダからのものと画像を移入し、thierフォルダにthier画像をアップロードするユーザーを必要としています。 フォルダからファイルのリストを読み込むべきかどうかわかりません。または、DBに名前を書いてそこから引っ張ってください...それは私の問題がある場所です 上記のコードは私が使っているものですが、ファイル名を返す間はタグにエコーしません。 ..not必ず私の愚かさはどこにある:)

私は次のようである移入しようとしていますHTML:

<div class="slide"> 
       <div class="image-holder"> 
        <img src="img/asoft_table.jpg" alt="" /> 
       </div> 
       <div class="info"> 

        <p>Morbi a tellus lorem, id scelerisque ligula. Maecenas vitae turpis et.</p> 
       </div> 
      </div> 
      <div class="slide"> 
       <div class="image-holder"> 
        <img src="img/soft_table.jpg" alt="" /> 
       </div> 
       <div class="info"> 

        <p>Sed semper, lorem ac lobortis bibendum, magna neque varius augue, vel accumsan.</p> 
       </div> 
      </div> 
      <div class="slide"> 
       <div class="image-holder"> 
        <img src="img/living_room2.jpg" alt="" /> 
       </div> 
+0

あなたがやったいくつかのことを投稿してください;-) –

+0

あなたはファイル名を持っていて、それらをタグの適切な部分にエコーします。あなたの質問は何ですか?これまでどんなコードを持っていますか? – Brad

+0

'$ image = mysql_result($ result、0、 'image');'? – ianbarker

答えて

1

あなたが唯一のディレクトリ内を探しているなら、あなたのイメージのパスは、静的なことを行っています。データベースにイメージ名が格納されている場合は、単純にファイル名を出力し、静的パスを追加する小さなクエリを実行できます。

$result = mysql_query("SELECT * FROM Images"); 

while($row = mysql_fetch_array($result)) { 
    echo "<img src='/path/to/images/".$row['image_name']."'/>"; 
} 

はまさにここで何が起こっているかを打破するには - 基本的にMySQLのクエリは $resultに格納されています。次に、 whileループを作成して、MySQLクエリから返された配列を循環させます。各指標については

0 => 'id' => 1, 
     'file_name' => 'foo.jpg', 
     'file_size' => '36.6 kb', 
     'time_stamp' => '14/01/02', 
    1 => 'id => 2, 
     'file_name' => 'bar.jpg', 
     'file_size' => '12.8 kb', 
     'time_stamp' => '14/01/03' 

while意志出力のネストされた配列:この配列には、次のようになります。この場合、データベース行になります。次に、各データベース行の画像タグをechoにして、その画像の名前をタグに追加します。

HTMLには、各画像の要素ブロックが作成されています。だから静的なページで100の画像を持っていたら、HTML 100のブロックを別々に繰り返さなければなりません。プログラミングでは、これを行う必要はありません。私の例では、MySQLは、それぞれの画像とその行を含む大きなarrayを返します。したがって、100枚の画像を持つテーブルをお持ちの場合、arrayには100個のアイテムがあるため、whileループが実行され、100回印刷されます。フォローですか?だからあなたのHTMLを使用して

、あなたのコードは次のようになります。

<? while($row = mysql_fetch_array($result)) ?> 

<div class="slide"> 
    <div class="image-holder"> 
    <? echo "<img src='img/".$row['image_name']."' alt='' />"; ?> 
    </div> 
    <div class="info"> 
    <p> 
     <? echo $row['image_description']; ?> 
    </p> 
    </div> 
</div> 

<? endwhile; ?> 

あなたがHTMLの1つのブロックを作成する見ることができる、とPHPがループを通って、返された変数に基づいて、あなたのために移入されますように。

日付/サイズ別に注文する場合は、アップロード時にこれらの変数を決定し、それらをデータベースの列に追加することができます。テーブルにタイムスタンプとインデックスを付けることで、データベースの出力からの順序付けに大きく役立ちます。私はそうのように私のテーブルを構築します:

+----+-----------+-----------+------------+ 
| id | file_name | file_size | time_stamp | 
+----+-----------+-----------+------------+ 
| 1 | foo.jpg | 36.6 kb | 14/01/02 | 
+----+-----------+-----------+------------+ 

をトラバースとは対照的に、データベース内のファイル情報を格納しますが/あなたのディレクトリを解析すると、おそらくあなたの最善の策である、あなたはまだ、ディレクトリの詳細については、このページをチェックアウトすることができます方法および配列here

編集:また、Tizagには、PHPを学習するための包括的なチュートリアルとリソースがあります。

編集:どのように情報を適切な場所に配置するかについての質問に答えるには:これは非常に広範な質問で、さまざまな回答があります。一言で言えば、それはあなたがそれらを注文する方法と、どこに行きたいかによって異なります。 MySQL queriesを使用すると、特定の方法で出力データを並べ替えることができます。さらにinclusionの方法を使用して、サイト全体のデータを分割して並べ替えることができます。

+0

すべての画像srcタグの代わりにそのコードを含める必要がありますか? – Jjames

+0

'while'ループについて説明する私のアップデートを見てください。 5つの異なるイメージタグの変数を生成せず、変数を手動で追加します。データベース内のエントリに基づいてコンテンツを動的に生成します。 –

+0

@Jjames - また、自分自身や他の質問があなたを助けてくれた場合は、チェックボックスをクリックして回答を受け入れてください。助けが必要な場合は、単に回答のコメントに精緻化を要求することができます。 –

関連する問題