2013-11-22 5 views
-2

У меня есть многомерный массив, где под "images" Я хочу, чтобы петля 4 строки из моей базы данных. Это означает, что я пытаюсь поместить цикл в массив. Помоги мне.Я хочу поставить цикл while в массив

$sql_album = "SELECT * FROM albums"; 
$res_album = mysql_query($sql_album) or die(mysql_error()); 

$albums = array(); 

while ($row_album = mysql_fetch_assoc($res_album)) { 
    $albums[$row_album['title']] = array(
     "description" => $row_album['description'], 
     "date" => $row_album['date'], 
     "images" => array(
      //i want to insert a loop here shown down 
     ) 
    ); 
} 

Это цикл я хочу вставить где я написал комментарий в верхнем скриптом:

$sql_thumb = "SELECT * FROM photos WHERE album_id = '".$row_album['id']."' LIMIT 0, 4"; 
$res_thumb = mysql_query($sql_thumb) or die(mysql_error()); 

while ($row_thumb = mysql_fetch_assoc($res_thumb)) { 
    echo $row_thumb['thumb_url']; 
} 
+0

Насколько я знаю, PHP не позволит вам сделать это. – srain

+1

Почему бы вам не запустить цикл первым, а затем вставить результаты в элемент «images»? Это должно сработать. Не делайте свой код грязным с множеством вложенных вещей. – deb0rian

+0

@srain Да, но должен быть способ. Например, в «изображения», чтобы создать массив, а затем сделать цикл в конце скрипта – sectumsempra

ответ

3

Начало здесь ...

include('../path/to/mysqli/connection/statements'); 

$query = " 
SELECT a.id 
    , a.title 
    , a.description 
    , a.date 
    , p.thumb_url 
    FROM albums a 
    LEFT 
    JOIN photos p 
    ON p.album_id = a.id 
ORDER 
    BY a.id; 
"; 

$result = mysqli_fetch_assoc($db,$query); 
+0

Работает, но как мне вставить результат запроса в элемент «images»? – sectumsempra

+0

Ну, грубо говоря, while ($ current_album == $ row_album ['title']) {$ image [] = $ row ['image'];} Но это стандартный материал - и многие из них лучше оснащены для консультирования по конструированию циклов в PHP – Strawberry

0

К сожалению, PHP не позволяет такого рода использования. Вы могли бы, однако сделать что-то вроде этого

$sql_album = "SELECT * FROM albums"; 
$res_album = mysql_query($sql_album) or die(mysql_error()); 

$albums = array(); 

while ($row_album = mysql_fetch_assoc($res_album)) { 
    $albums[$row_album['title']] = array(
     "description" => $row_album['description'], 
     "date" => $row_album['date'], 
     "images" => array() 
    ); 

    $sql_thumb = "SELECT * FROM photos WHERE album_id = '".$row_album['id']."' LIMIT 0, 4"; 
    $res_thumb = mysql_query($sql_thumb) or die(mysql_error()); 

    while ($row_thumb = mysql_fetch_assoc($res_thumb)) { 
     $albums[$row_album['title']]["images"][] = row_thumb['thumb_url']; 
    } 
} 
+0

Я знаю. Я просто надеюсь найти другой способ сделать это. – sectumsempra

+0

Ну, есть много способов добиться этого эффекта. Вам нужно быть более конкретным, чем вы хотите. –

+0

Я бы не назвал это «печальным». Написание кода внутри конструктора массива - это функция, которую я когда-либо видел на Python, и даже там она часто делает код намного сложнее читать. – SpliFF

Смежные вопросы