Извикване на функция в HTML от PHP на една страница

vinsbg

Registered
Здравейте,

може да е елементарно, но нещо не успявам да го направя. Имам следната ситуация
Код:
// Тук имам HTML ... разни дивове
<?PHP 
$images = [];
                foreach($pdo->query("SELECT * FROM images ORDER BY image_id") as $row) 
                {
				// images
			         $images[$row['image_id']] = [
		                          'name' => $row['image_name']
		             ];
                }
		        function image_html($image, $size = 'small') {
  			       return '<img src="img/uploads/' . $image['name'] . '" class="' . $size . '" class="img-responsive" />';
		        }
?>
// продължава HTML-a 
<div>
<?php echo image_html($image[0]); ?>
</div>
Грешката, която получавам е

Notice: Undefined variable: image...
Как точно да извикам сега функцията?
 
Според мен много беше омазал нещата.. промених малко кода.

PHP:
<?php
	$images = array();
	$q = $pdo->query("SELECT * FROM images ORDER BY image_id");
	foreach($q as $row)  {
		$images[$row['image_id']]['name'] = $row['image_name'];
	}

	function image_html($image, $size = 'small') {
    $out = '<img src="img/uploads/' . $image['name'] . '" class="' . $size . '" class="img-responsive" />';
 		return $out;
	}
	
?>
<div>
<?php echo image_html($image[0]); ?>
</div>
 
Да, така сработи ...
Само един върпос:

Добавям в ORDER клаузата DESC, но снимките не се сменят.. Винаги са първите 5-6 резултата от базата в зависимост от LIMIT-а, който съм сложил?

Освен това, защо трябва да започна от $images[1], а не от $images[0]?
Ако започна да ги извеждам по $images[0] първия резултат е offcet error...

p.s. Няма значение 'ASC' или 'DESC' съм сложил винаги са едни и същи резултати...
 
PHP:
$image[ ID на снимката ]

Ако нямаш снимка с image_id -> 0 ще ти покаже грешка.

Не знам каква ти е идеята, може по името да викаш снимката, можеш по ID. Какво точно искаш да направиш, за да можем да ти помогнем по-добре.
 
vinsbg каза:
Да, така сработи ...
Само един върпос:

Добавям в ORDER клаузата DESC, но снимките не се сменят.. Винаги са първите 5-6 резултата от базата в зависимост от LIMIT-а, който съм сложил?

Освен това, защо трябва да започна от $images[1], а не от $images[0]?
Ако започна да ги извеждам по $images[0] първия резултат е offcet error...

p.s. Няма значение 'ASC' или 'DESC' съм сложил винаги са едни и същи резултати...
ORDER BY id DESC подай някакво поле по което да сортира.
 
Проблема е в HTML-a и CSS-a. Имам следния хтмл
Код:
<div class="container-fluid"> 
            <div class="row"> 
                <div class="col-sm-4 col-md-4 col-lg-4 nopadding"> 
                    <div class="small-box">
			<?php echo image_html($images[1]); ?>
                    </div> 
                    <div class="large-box">
			<?php echo image_html($images[2], 'large'); ?>
                    </div>
                </div> 
                <div class="col-sm-4 col-md-4 col-lg-4 nopadding"> 
                    <div class="small-box">
			<?php echo image_html($images[3]); ?>
                    </div>
                    <div class="small-box">
			<?php echo image_html($images[4]); ?>
                    </div>
                    <div class="small-box">
			<?php echo image_html($images[5]); ?>
                    </div>
                </div> 
                <div class="col-sm-4 col-md-4 col-lg-4 nopadding"> 
                    <div class="large-box">
			<?php echo image_html($images[6], 'large'); ?>
                    </div>
                    <div class="small-box">
			<?php echo image_html($images[7]); ?>
                    </div>
                </div>
            </div>
        </div>
Както може да се види има два различни див-а small-box и large-box. Съответно искам да ги напълня със снимки.
Код:
$images = array();
        $q = $pdo->query("SELECT * FROM images ORDER BY image_id DESC LIMIT 8");
        foreach($q as $row)  {
                $images[$row['image_id']]['name'] = $row['image_name'];
        }

        function image_html($image, $size = 'small') {
    $out = '<img src="img/uploads/' . $image['name'] . '" class="' . $size . '" class="img-responsive" />';
                return $out;
        }
В момента се пълнят със снимки по този начин, но изважда първите 6 резултата от базата от ID-1 до ID-6.


!! Ако LIMIT-a e по-малък от 8 извежда 2 офсет грешки..
Също така, както споменах няма значение ASC или DESC е сложено .. извежда само първите 6 снимки.

Идеята е, че когато се добави нова снимка в базата данни и е сложено да извежда последно 6 добавени да ги извежда тях..

@dakata__92, подал съм по image_id...

p.s. Явно аз нещо не мога да разбера.. с масива аз не казвам ли точно кои редове от таблицата да извади? Ако е така то значи на мен масив не ми върши работа тук и трябва да се търси друго решение.
 
Ако ти е масив просто използвай някоя от тези сортиращи функции:
http://bg2.php.net/manual/bg/book.array.php
arsort();
sort();
asort();
... :?:
 
Аз просто искам да напълня дивовете със снимки от таблицата. Всички снимки са в една таблица..
Не съм сигурен, че изобщо ми е нужен масив и да посочвам редовете. Идея по какъв друг начин може да стане?

Ok, оправих го.. проблема си беше тук
$images[$row['image_id']]
промених го на $images[] и се оправи.
 
Ами ти си искал на 1-во ниво на масива... аз ти го дадох с ID и вътре името.. щеше да си спестиш много време, ако беше задал правилно въпроса
 

Back
Горе