2015-11-09 3 views
-1

Я создаю сайт подержанного автомобиля для класса. У меня есть база данных mysql, которая имеет две таблицы. Один для деталей автомобиля и один стол для фотографий автомобиля. Я пытаюсь показать одну единственную фотографию автомобиля рядом с некоторыми деталями (например, вы видите на cars.com), но я боюсь. Идентификатор автомобиля - одна таблица, а «ext_1» - в другой таблице.Образ изображения PHP из mysql из разных таблиц

<?php 

$page_title = "List cars"; 

require_once ('includes/header.php'); 
require_once('includes/database.php'); 

//select statement 
$sql = "SELECT * FROM inventory_tbl, inventory_photos_tbl"; 
//execute the query 
$query = $conn->query($sql); 

//Handle selection errors 
if (!$query) { 
$errno = $conn->errno; 
$errmsg = $conn->error; 
echo "Selection failed with: ($errno) $errmsg<br/>\n"; 
$conn->close(); 
//require_once ('includes/footer.php'); 
exit; 
} 
//display results in a table 
?> 
<h2>Inventory</h2> 

<table border="1px solid" border="collapse" align ="center" height='300' width='750' > 
<tr><center> 
      <th></th> 
    <th>Year</th> 
    <th>Make</th> 
    <th>Model</th> 
    <th>Mileage</th> 
      <th>Price</td> 
    <th>Details</th> 
</center> 
</tr> 

<?php 
//insert a row into the table for each row of data 
    while (($row = $query->fetch_assoc()) !==NULL){ 
     echo "<tr>"; 
     echo "<td><img src =" .$row['id']. $row['ext_1']. " width = 100  height = 100></td>"; 
     echo "<td>", $row['year'], "</td>"; 
     echo "<td>", $row['make'], "</td>"; 
     echo "<td>", $row['model'], "</td>"; 
     echo "<td>", number_format($row['mileage']), "</td>"; 
     echo "<td>","$", number_format($row['price']), "</td>"; 
     echo "<td><a href='cardetails.php?id=", $row['id'],"'>View Details</td>"; 
     echo "</tr>"; 
    } 
?> 

<?php 
// clean up resultsets when we're done with them! 
$query->close(); 

// close the connection. 
$conn->close(); 

//include the footer 
require_once ('includes/footer.php'); 
+0

Без знания запроса (что вы написали в коде), как любой может помочь? –

+0

Дайте таблицу структуры таблицы + код, который вы пытались –

+0

Пожалуйста, предоставьте дополнительную информацию о запросе, который вы используете, и о проблемах, которые у вас были до сих пор. – JuanN

ответ

0

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

Во-первых, запрос должен квалифицировать состояние соединения, поэтому изменить запрос:

$sql = "SELECT * FROM inventory_tbl, inventory_photos_tbl WHERE inventory_tbl.id = inventory_photos_tbl.ext_1" 

Во-вторых, IMG тег должен относиться только к исходному фото/колонки, так что это должно быть что-то вроде:

echo "<td><img src =" .$row['myPhotoColumn']. " width = 100  height = 100></td>"; 
0

Как я не знаю структуру таблицы. Я принял название реляционного столбца как 'id' в таблице inventory_photos_tbl.

<?php 
$sql = "SELECT * FROM inventory_tbl"; 
$query = $conn->query($sql); 
while (($row = $query->fetch_assoc()) !==NULL){ 
     $carID=$row['id']; 

     // In this query, i'm assuming the relational column as 'id'. (If you are having different column name, please change it here itself) 
     $imgQuery = $conn->query("SELECT * FROM inventory_photos_tbl WHERE id=$carID LIMIT 0,1"); 
     while(($rowImg = $imgQuery->fetch_assoc())) 
     { 
      $carIMG=$rowImg['ext_1']; 
     } 

    echo "<tr>"; 
    echo "<td><img src ="$carID.$carIMG" width = 100 height = 100></td>"; 
    echo "<td>", $row['year'], "</td>"; 
    echo "<td>", $row['make'], "</td>"; 
    echo "<td>", $row['model'], "</td>"; 
    echo "<td>", number_format($row['mileage']), "</td>"; 
    echo "<td>","$", number_format($row['price']), "</td>"; 
    echo "<td><a href='cardetails.php?id=", $row['id'],"'>View Details</td>"; 
    echo "</tr>"; 
}?> 
+0

Это работает, но приводит к дополнительному попаданию в Д-р –

+0

Да, @ Jose'Vargas. Я знаю, но OP не смог рассказать реальную структуру таблицы. Таким образом, без 'JOIN' я закодировал это. –

0

Что вы хотите сделать, это левое соединение. (Объедините данные из правой таблицы в левую таблицу, если существуют данные в правой таблице).

Ваш оператор SQL будет выглядеть следующим образом.

$sql = "SELECT * FROM inventory_tbl LEFT JOIN inventory_photos_tbl as images ON images.ext_1 = car_id";

Изображение служит в качестве псевдонима для ваших фотографий таблицы. Вы сопоставляете столбец images.ext_1 с столбцом car_id главной таблицы, что и означает оператор ON. Подумайте об этом в качестве предложения where для JOIN

Теперь вы можете ссылаться на любую из данных в инвентаре_photos_table, которую вы хотите на своем PHP, используя переменную $ row, такую ​​как $ row ['image_column_name'].

Возможно, вы захотите обернуть данные изображения в оператор if, чтобы показать изображение с образцом, если изображение еще не связано с транспортным средством.

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