Przycinanie zdjęć powinno odbywać się na etapie ładowania tych zdjęć do systemu - stworzenie miniatur.
Można to wykonać za pomocą biblioteki:
http://www.php.net/manual/en/book.imagick.phpWizualnie jeśli zdjęcia koniecznie muszą pozostać w takiej postaci, to można spróbować wstawić je jako tło dla elementu blokowego, przykładowo:
<div style="float:left;width:100px;height:100px;margin:5px;background:url(adres_obrazka .jpg) no-repeat 50% 50%; background-size:cover; background-attachement:fixed; "></div> <div style="float:left;width:100px;height:100px;margin:5px;background:url(adres_obrazka .jpg) no-repeat 50% 50%; background-size:cover; background-attachement:fixed; "></div> <div style="float:left;width:100px;height:100px;margin:5px;background:url(adres_obrazka .jpg) no-repeat 50% 50%; background-size:cover; background-attachement:fixed; "></div> <div style="float:left;width:100px;height:100px;margin:5px;background:url(adres_obrazka .jpg) no-repeat 50% 50%; background-size:cover; background-attachement:fixed; "></div> <div style="clear:both"></div>
Czyli kod wyglądałby mniej więcej tak:
$kategoria = $_POST['kategoria'];
db_connect();
$zapytanie = "SELECT * FROM $kategoria";
$id = $row[0];
$link = $row[2];
echo '<div style="float:left;width:100px;height:100px;margin:5px;background:url(../'. ($link) .') no-repeat 50% 50%; background-size:cover; background-attachement:fixed; "></div>'; }
db_close();
echo '<div style="clear:both"></div>';
Oczywiście style najlepiej wyodrębnić do odpowiednich klas.