2016-04-26 4 views
1

Привет всем и спасибо, что помогли мне ... У меня есть 1 база данных и 3 запроса одновременно. Каждый запрос выбирает другой год и берет данные из этой колонки.foreach - получить конкретное значение от второго или третьего массива

Это мой код

$items = array(); 

     // while we still have rows from the db, display them 
while ($row = mysql_fetch_array($result1)) { 

    $items[] = $row; 
} 

while ($row = mysql_fetch_array($result2)) { 

    $items[] = $row; 
} 

while ($row = mysql_fetch_array($result3)) { 

    $items[] = $row; 
} 


mysql_close($connect); 

?> 

<?php foreach($items as $key => $item) : ?> 

    <?php print "I DONT KNOW WHAT TO DO"; ?> 

<?php endforeach; ?> 

Когда я типа:

<?php echo print_r($keys); ?> 

Я вижу, что у меня есть массив 0, 1 и 2. Я хотел бы получить определенную строку из первый (1) или второй (2) массив.

Я пытаюсь понять это, и я просто не могу ...

Спасибо всем большое!

Edit:

Полный код:

<?php 
    include ('db.php'); // for db details 
    include ('functions.php'); 

    $connect = @mysql_connect($host,$username,$password) or die('<p class="error">Unable to connect to the database server at this time.</p>'); 
    if (!$connect) { 
     die('Could not connect: ' . mysql_error()); 
    } 



    @mysql_select_db($database,$connect) or die('<p class="error">Unable to connect to the database at this time.</p>'); 

    $query1 = "SELECT * FROM godina2015 WHERE mjesec='8' AND godina='2015'"; 
    $query2 = "SELECT * FROM godina2015 WHERE mjesec='7' AND godina='2015'"; 
    $query3 = "SELECT * FROM godina2015 WHERE mjesec='6' AND godina='2015'"; 

    $result1 = @mysql_query("$query1") or die('<p class="error">There was an unexpected error grabbing news from the database.</p>'); 
    $result2 = @mysql_query("$query2") or die('<p class="error">There was an unexpected error grabbing news from the database.</p>'); 
    $result3 = @mysql_query("$query3") or die('<p class="error">There was an unexpected error grabbing news from the database.</p>'); 


    $items = array(); 

      // while we still have rows from the db, display them 
    while ($row = mysql_fetch_array($result1)) { 

     $items[] = $row; 
    } 

    while ($row = mysql_fetch_array($result2)) { 

     $items[] = $row; 
    } 

    while ($row = mysql_fetch_array($result3)) { 

     $items[] = $row; 
    } 


    mysql_close($connect); 

    ?> 

    <?php foreach($items as $key => $item) : ?> 

     <?php print_r ($item); ?> 

    <?php endforeach; ?> 

EDIT # 2

<?php 
    include ('db.php'); // for db details 
    include ('functions.php'); 

    $connect = mysql_connect($host,$username,$password) or die('<p class="error">Unable to connect to the database server at this time.</p>'); 
    if (!$connect) { 
     die('Could not connect: ' . mysql_error()); 
    } 



    mysql_select_db($database,$connect) or die('<p class="error">Unable to connect to the database at this time.</p>'); 

    $query = "SELECT * FROM godina2015 WHERE mjesec IN(8,7,6) AND godina='2015'"; 

    $result = mysql_query("$query") or die('<p class="error">There was an unexpected error grabbing news from the database.</p>'); 

    $items = array(); 

      // while we still have rows from the db, display them 
    while ($row = mysql_fetch_array($result)) { 

     $items[] = $row; 
    } 

    mysql_close($connect); 

    ?> 

    <?php foreach($items as $key => $item) : ?> 

     <?php echo $items[1]['AWAsistCTR2']; ?> 

    <?php endforeach; ?> 
+0

Что делать, если вы делаете 'print_r ($ item);' в вашем цикле foreach? –

+0

это может помочь http://stackoverflow.com/questions/17139453/php-accessing-multidimensional-array-values ​​ –

+0

показать 'var_dump ($ items)'. вам нужно показать/объяснить, как выглядит ваша структура данных. но, учитывая, как вы строите массив, вы получите $ $ items [0] ... $ items [n] 'для ваших первых результатов запроса, $ items [n + 1] ... $ items [n + m] 'для второго запроса и т. д. ... –

ответ

0

Внутри цикла сделать var_dump ($ пункт).

Вы увидите структуру массива/объекта в своем браузере.

Ищите поле, в котором есть данные, которые вы хотите (это, вероятно, будет иметь то же имя, что и столбец в вашей базе данных).

Вы можете получить к нему доступ, используя $ item ['field'] внутри цикла. Или $ items [номер массива здесь (0,1,2)] ['field'].

И я верю, что когда вы сказали ROW, вы имели в виду COLUMN.

+0

. Мы могли бы помочь вам лучше, если вместо кода, который вы только что добавили, вы сделали var_dump ($ items) после mysql_close ($ connect) и вставить здесь результат. – wavvves

0

Мой первый ответ ... так взволнован. Я знаю, что вы пытаетесь сделать, поскольку иногда мне приходится делать то же самое, когда я использую код, чтобы «выяснить», как разные (динамические) ответы на запросы относятся друг к другу. Я обычно влагаю результаты, чтобы иметь что-то реляционное, которое можно логически проанализировать.

while ($row = mysql_fetch_array($result1)) { 
    $items[0][] = $row; 
} 

while ($row = mysql_fetch_array($result2)) { 
    $items[1][] = $row; 
} 

while ($row = mysql_fetch_array($result3)) { 
    $items[2][] = $row; 
} 

Это различать разные наборы записей, так что можно разобрать массив любым способом, который вы хотели, даже рекурсивно, если это необходимо.

(array)$newArray = parseArray($items); 

... Отсюда

function parseArray($inArray) { 
    (array)$outArray = Array(); 

    foreach($inArray as $element) { 
     if('some condition with $element') {  //maybe $element['date']=10? 
      $outArray[] = parseArray($element); 
     } else { 
      $outArray[] = $element; 
     } 
    } 
    return $outArray(); 
} 

затрудняюсь ответить (и тест), не зная, что данные выглядит, но, возможно, некоторые идеи. Теперь я готовлюсь к первому проголосованию.

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