Разъезжаются строки в таблице при добавлении ячеек

262
27 ноября 2021, 14:20

Задача - добавление в начале строк картинок, соответствующих названию игры, если подходящей картинки нет, то должна вставляться картинка заглушка.

Таблица формируется, картинки добавляются, но картинка заглушка "/gimage/empty.jpg" не вставляется.

И при формировании таблицы, строки к которым добавлены картинки, сдвигаются соответственно вправо, схематично таблица получается такой (0 - заголовки столбцов, 1-7 -столбцы, х-картинка):

0000000

1234567

х1234567

1234567

х1234567

Понимаю, что проблема в конструкции if в выводе картинок, но не могу понять в чем именно.

``` 
<? 
// Запрос на получение записей для таблицы  
$sql = "SELECT id, game, position, price, org, payment, user, user_url, other FROM utest ORDER by game"; 
// Подготовка запроса 
$statement = $db->prepare($sql); 
// Выполняем запрос 
$statement->execute(); 
// Получаем массив строк  
$result_array = $statement->fetchAll(); 
 
echo "<form action='del.php' method='POST' align='center'><table align='center'>"; 
 
//Создаем таблицу вывода и форму для удаления записей 
echo "<tr><th>Игра</th><th>П</th><th>Цена</th><th>Орг</th><th>Оплата</th><th>Владелец</th><th>Примечание</th></tr>"; 
foreach ($result_array as $result_row) { 
$resgame = $result_row['game']; 
echo "<tr>"; 
 
//запрос картинок 
$sql2 = "SELECT game_pic, pic_img FROM pics WHERE game_pic LIKE '%$resgame%'"; 
// Подготовка запроса 
$statement2 = $db->prepare($sql2); 
// Выполняем запрос 
$statement2->execute(); 
// Получаем массив строк  
$result_array2 = $statement2->fetchAll(); 
foreach ($result_array2 as $result_row2) { 
//echo "<td>" . $result_row["id"] . "</td>"; 
if($result_row2['game_pic'] == ""){ 
//если нет совпадений, выводим заглушку 
echo "<td>" . "<img src='/gimage/empty.jpg' height='100' alt='no_pic'>" . "</td>"; 
} 
//выводим картинку 
else { echo "<td>" . "<img src='{$result_row2['pic_img']}' height='100'>" . "</td>"; 
} 
} 
echo "<td>" . $result_row["game"] . "</td>"; 
echo "<td>" . $result_row["position"] . "</td>"; 
echo "<td>" . $result_row["price"] . "</td>"; 
echo "<td>" . $result_row["org"] . "</td>"; 
echo "<td>" . $result_row["payment"] . "</td>"; 
if($result_row['user_url'] !== "0"){ 
echo "<td>" . "<a href='{$result_row['user_url']}'>{$result_row['user']}</a>" . "</td>"; 
</a>" . "</td>"; 
} 
else { echo "<td>" . $result_row["user"] . "</td>"; 
} 
echo "<td>" . $result_row["other"] . "</td>"; 
echo "<td>" . "<a href='/edit.php?id={$result_row['id']}'>Редактировать</a>" . "</td>"; 
echo "<td>" . "<input type='radio' name='delete_row[]' value='" . $result_row["id"] . "'><input echo type='submit' value='Удалить'></td>"; 
echo "</tr>"; 
} 
} 
catch(PDOException $e) { 
echo "Ошибка: " . $e->getMessage(); 
} 
// Закрываем соединение 
$db = null; 
?> 
```

Answer 1

Валерий. У тебя проблема в том, что ты внутри цикла по строкам таблицы делаешь запрос на картинки, и он скорее всего не возвращает тебе ничего, и вот этот код if($result_row2['game_pic'] == "") не выполняется. По хорошему тебе надо сделать один сложный запрос с JOIN, чтобы сразу выбрать и картинки и данные, и потом просто нарисовать таблицу.

Answer 2

Решил.

В запросе картинок нужно было объявлять переменные перед запросом и в запросе добавил:

min(game_pic)

$sql2 = "SELECT min(game_pic) game_pic, pic_img FROM pics WHERE game_pic LIKE '%$resgame%'";

READ ALSO
Проверка всех input на пустоту и отображение сообщений об ошибке только у пустых

Проверка всех input на пустоту и отображение сообщений об ошибке только у пустых

Если несколько input, рядом с ними сообщения об ошибке, у которых дефолтно display: none

157
Как запретить вставлять цифры в input type=&quot;text&quot;?

Как запретить вставлять цифры в input type="text"?

Стала задача запретить ввод цифр в <input type="text"> созданном для имени

204
Uri как отследить FileNotFoundException

Uri как отследить FileNotFoundException

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

121
Java. Swing. Странное не отображение GUI

Java. Swing. Странное не отображение GUI

Столкнулся с небольшой аномалиейИмеется клиент серверное приложение для игры в крестики-нолики

223