2016-07-31 14 views
0

これは少し混乱して説明するのは難しいですが、私はそれを説明するために最善を尽くします。PHP:foreachのglobは各行に乗算されますか?

基本的には、自分の製品のすべての画像を保持する画像ディレクトリ(test)があります。画像はSTOCKと呼ばれるMySQLデータベースのフィールドである前に

999999999Image1.jpg 
999999999Image2.jpg 
999999999Image3.jpg 
999999999Image4.jpg 
999999999Image5.jpg 

555555555Image6.jpg 
555555555Image7.jpg 
555555555Image8.jpg 
555555555Image9.jpg 
555555555Image10.jpg 

etc etc... 

番号:

画像はこのように見えます。

今、私はそうのようにmysqlデータベース内の各項目の画像を表示する​​3210を使用しようとしている:私は自分のコードを実行したときに

while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 

    $STOCK = $row['STOCK']; 

    foreach(glob('test/'.$STOCK.'*') as $image) { 

     if($image != ""){ 
      $pic_list2 .= '<img data-src="'.$image.'" class="smallImg" width="57" height="43" data-id="'.$STOCK.'" data-details="'.$ADVERT_DESCRIPTION_main.'" data-name="'.$MAKE2.' '.$MODEL2.' '.$DERIVATIVE2.'" data-price="'.$PRICE2.'" src="'.$image.'" alt="" />'; 

     } 
     else{ 
      $pic_list2 = ''; 
     } 
    } 

    /////rest of my code....///// 

} 

はしかし、私は非常に奇妙な出力を得ます...

私が持っている問題は、MYSQL結果の各出力で、glob()によって見つかったイメージが次の結果にも追加されていることです!その結果、最初の結果の画像が次の結果に追加され、最初の結果と2番目の結果の画像が3番目の結果に追加されます。

これが欲しいです誰かが正しい方向に向けることができます。

ご協力いただければ幸いです。

+0

は、私はできない、whileループ – Mihai

+0

@Mihai外にあなたのforeachのを入れてください。変数$ STOCKはwhileループ内にあり、それは各製品に関連する画像を見つけるために使用する画像名の一部です。 – Jackson

+0

... glob( 'test/1 *') 'もglob( 'test/11 *')'と同じ画像を見つけられません。 '$ STOCK'が数字で区切り記号がない場合、これは一つの可能​​な説明のようです。 –

答えて

1

私はお勧め:

while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 

    $STOCK = $row['STOCK']; 

    $pic_list2 = ''; // you need this line also here !! only change 

    foreach(glob('test/'.$STOCK.'*') as $image) { 

     if($image != ""){ 
      $pic_list2 .= '<img data-src="'.$image.'" class="smallImg" width="57" height="43" data-id="'.$STOCK.'" data-details="'.$ADVERT_DESCRIPTION_main.'" data-name="'.$MAKE2.' '.$MODEL2.' '.$DERIVATIVE2.'" data-price="'.$PRICE2.'" src="'.$image.'" alt="" />'; 

     } 
     else{ 
      $pic_list2 = ''; 
     } 
    } 

    /////rest of my code....///// 

} 
+0

OMG、これでした.. My $ pic_list2 = '';私のwhileループの外にあり、あなたの答えに示唆されているwhileループの中に入れたとき、それは魅力的に機能しました。 :) – Jackson

+1

@ジャックソンそれは助けてうれしい!幸せなコーディング! – caramba

0

これはどうですか?これにより、各mysql出力に対して新しい配列キーが作成されます。

<?php 
$i = 0; 
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){ 

    $STOCK = $row['STOCK']; 

    foreach(glob('test/'.$STOCK.'*') as $image) { 

     if($image != ""){ 
      $pic_list2[$i] .= '<img data-src="'.$image.'" class="smallImg" width="57" height="43" data-id="'.$STOCK.'" data-details="'.$ADVERT_DESCRIPTION_main.'" data-name="'.$MAKE2.' '.$MODEL2.' '.$DERIVATIVE2.'" data-price="'.$PRICE2.'" src="'.$image.'" alt="" />'; 
     } 
     else{ 
      $pic_list2[$i] = ''; 
     } 
    } 
    $i++; 
    /////rest of my code....///// 
} 
?>