2017-01-29 3 views
0

was ich versuche zu erreichen ist, alle verfügbaren Bilder von userphotos mit dem gleichen photo_title/timestamp in ein Array und die Menge der Bilder in den designierten Post unter streamitem_id gebucht.Holen Sie mehrere Bilder Array innerhalb Array des Inhalts

Momentan fügt der Beitrag ein, wie es sollte, aber wenn ich mehrere Bilder gleichzeitig hochlade, wird nur eines in der Post angezeigt. Wie würde ich gehen, $posts['streamitem_imageuploaded'] ein Array innerhalb der bereits erstellten Array 'Beiträge' machen.

Hier ist was ich bisher habe.

$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); 

Antwort

1

Das Problem ist, sind Sie $posts['streamitem_imageuploaded'] in jeder Iteration von foreach Schleife zu überschreiben, und das ist, warum Sie immer das letzte Bild in $posts['streamitem_imageuploaded'] bekommen. Sie müssen diese <img ... /> (s) in jeder Iteration an $posts['streamitem_imageuploaded'] anhängen. auf folgende Weise

So Ihre foreach Schleife ändern,

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

Es scheint immer noch das gleiche mit diesem bearbeiten zu können. Zeige nur ein Bild, wenn ich zwei gepostet habe. – Gateway

+1

@Gateway Überprüfen Sie zunächst Ihre Datenbanktabelle und vergewissern Sie sich, dass sie alle Bildinformationen enthält. Dann tun Sie "var_dump ($ images);" in Ihrem Code und prüfen Sie, ob dieses Array alle gewünschten Bilder Informationen enthält oder nicht. –

+0

es bekommt auch das erste Bild, nicht das letzte. – Gateway

Verwandte Themen