2017-01-29 1 views
0

私が達成しようとしているのは、同じphoto_title/timestampで配列されたuserphotosから利用可能なすべてのイメージを、配列とstreamitem_idの指定されたポストに投稿されたイメージの量にすることです。コンテンツの配列内に複数のイメージ配列を取得する

現在のところ、投稿は挿入する必要がありますが、複数の画像を一度にアップロードする場合は、投稿に1件のみ表示されます。どのように私は$posts['streamitem_imageuploaded']を既に構築された配列 'posts'の中の配列にするつもりですか?

これまで私がこれまで持っていたことは次のとおりです。

$call = "SELECT * 
FROM streamdata m 
JOIN user t1 ON m.streamitem_creator = t1.id 
JOIN user t2 ON m.streamitem_target = t2.id 
WHERE 
m.streamitem_id > ".$_GET['streamitem_id']." 
ORDER BY m.streamitem_timestamp DESC"; 
$check1 = mysqli_query($mysqli, $call) or die(mysqli_error($mysqli)); 

$json = array(
    'posts' => array(), 
); 

while($row = mysqli_fetch_array($check1)){ 

$posts = array(); 


     $posts['streamitem_id'] = $row['streamitem_id']; 


     //start of image code. only ouputs one image in each 'posts' array. 
$sqlhhh = "SELECT * FROM userphotos WHERE photo_name='".$row['photo_title']."' AND photo_ownerid='".$row['streamitem_creator']."' AND photo_datetime='".$row['streamitem_timestamp']."' ORDER BY photo_id DESC"; 
$resulthhh = mysqli_query ($mysqli,$sqlhhh)or die(mysqli_error($mysqli)); 
$photo_num=mysqli_num_rows($resulthhh); 

$images = array(); 
while ($rowhhh = mysqli_fetch_assoc($resulthhh)) { 
$rowhhh = mysqli_fetch_assoc($resulthhh); 
    $images[] = $rowhhh['photo_imagedata']; 
} 

foreach ($images as $ima){ 

    if($photo_num==1){ 
     $posts['streamitem_imageuploaded']='<img src="data:image/jpeg;base64,'. base64_encode($ima) .'" />'; 
    }else{ 
     $posts['streamitem_imageuploaded']='<img class="stream_images" style="width:235px;height:200px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($ima) .'" />'; 
    } 

} 


$json['posts'][] = $posts; 
} 
} 
echo json_encode($json); 

答えて

1

問題は、あなたがforeachループの各反復で$posts['streamitem_imageuploaded']を上書きしている、である、そしてあなたは常に$posts['streamitem_imageuploaded']で最後の画像を取得している理由です。各反復でにそれらを<img ... />(s)追加する必要があります。

したがって、次のようにあなたのforeachループは、まだこの編集と同じであるように思わ

foreach ($images as $ima){ 
    if($photo_num==1){ 
     $posts['streamitem_imageuploaded'] = '<img src="data:image/jpeg;base64,'. base64_encode($ima) .'" />'; 
    }else{ 
     $posts['streamitem_imageuploaded'][] = '<img class="stream_images" style="width:235px;height:200px;object-fit:cover;margin:2px;padding:2px;" src="data:image/jpeg;base64,'. base64_encode($ima) .'" />'; 
    } 
} 
+0

、変更します。私が2つを掲示したときに1つの画像しか表示しない。 – Gateway

+1

@Gatewayデータベーステーブルを最初に確認し、すべての画像情報があることを確認してください。次に、あなたのコードで 'var_dump($ images);'を実行し、この配列に必要なすべての画像情報があるかどうかをチェックします。 –

+0

これは最後の画像でもなく、最初の画像も取得します。 – Gateway

関連する問題