#php
#php
Вопрос:
Я получил некоторый результат из базы данных и хочу отобразить результат отдельно.
Если pb_title совпадает с temp_title, тогда поместите его в div красного цвета, иначе pb_title не совпадает с temp_title, тогда поместите его в div серого цвета
Вот мой пробный код :
$select_brand = "SELECT * FROM tblProduct_Brand WHERE pb_display='display'";
$result = mysqli_query ($mydatabase, $select_brand);
if($result)
{
while($row = mysqli_fetch_array($result))
{
$pb_feature_image = substr(($row['pb_feature_image']),3);
$pb_logo = substr(($row['pb_logo']),3);
$temp_result;
if($temp_result == $row["pb_title"])
{
//if product brand title is same, put it in same area
echo '<div style="padding:20px; background-color:red;">';
echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
echo '</div>';
echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
echo '<div style="height:40px;width:80px;float:right">';
echo '<img src="'.$pb_logo.'" width="100%"/>';
echo '</div>';
echo '<div style="clear:both"></div>';
echo '<a class="product-content">'.$row["pb_content"].'</a>';
echo '</div>';
echo '</div>';
$temp_result = $row["pb_title"];
}
else
{
//if not same, put in another area
echo '<div style="padding:20px; background-color:grey;">';
echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
echo '</div>';
echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
echo '<div style="height:40px;width:80px;float:right">';
echo '<img src="'.$pb_logo.'" width="100%"/>';
echo '</div>';
echo '<div style="clear:both"></div>';
echo '<a class="product-content">'.$row["pb_content"].'</a>';
echo '</div>';
echo '</div>';
}
}
Любая ошибка в коде, пожалуйста, исправьте меня.
Спасибо.
Комментарии:
1. С какими ошибками вы сталкиваетесь. ?
2. @Adeel Я не могу поместить тот же результат pb_title в тот же div. Например, если заголовок row1 и заголовок row2 совпадают, результат будет отображаться в красном поле div. И заголовок строки 3 не совпадает с заголовком строки 2, он будет отображаться в сером окне div.
3. Я думаю, вам нужно немного прояснить, что вы пытаетесь сделать. Объяснения пока имеют очень мало смысла.
4. @user3663143 Позвольте мне понять это правильно; вы хотите добавить все заголовки, которые соответствуют одному div, вместо создания нового div для каждого из них?
5. @Darren У меня здесь есть два div с красным и серым цветом. Я хочу, чтобы все совпадающие заголовки были в КРАСНОМ div, а не совпадающие заголовки — в СЕРОМ div.
Ответ №1:
Следующий код предполагает, что вы сделали что-то подобное с данными, которые вы извлекли из sql-запроса:
$data = array();
while($row = mysqli_fetch_assoc($result)) {
$data[] = $row;
}
Который возвращает массив, подобный этому:
Array (
[0] => Array(
'pb_title' => '',
'pb_content' => '',
//...etc
),
//.....etc
)
Теперь, предполагая, что я правильно понял ваш вопрос, вы хотели бы сделать что-то вроде этого:
$i = array();
$key = 'A';
foreach ($data as $item) {
if ($item['pb_title'] == $key) {
$i['red'][] = $item;
} else {
$i['grey'][] = $item;
}
}
Который дает вам массив red
(совпадающий) и grey
(не совпадающий).
Который вы можете перебирать и соответствующим образом генерировать свои div
. Что-то вроде этого (псевдокод)
echo '<div style="padding:20px; background-color:red;">';
foreach($i['red'] as $row) {
echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
echo '</div>';
echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
echo '<div style="height:40px;width:80px;float:right">';
echo '<img src="'.$logo.'" width="100%"/>';
echo '</div>';
echo '<div style="clear:both"></div>';
echo '<a class="product-content">'.$row["pb_content"].'</a>';
echo '</div>';
}
echo '</div>';
Комментарии:
1. был ли другой способ без использования массива? Можем ли мы использовать оператор if else для этого ..?
2. @user3663143 все они будут в одном и том же 1 подразделении или будут иметь свои собственные подразделения?
3. Они переходят к своему собственному div
Ответ №2:
$temp_result;
if($temp_result == $row["pb_title"])
Перед проверкой условия вы должны были присвоить некоторое значение $temp_result , но вы этого не сделали, и вы все равно сравниваете его.
Редактировать :
Я понимаю, что изначально вы не установили никакого значения $ temp_result, и оно всегда поступает в ваш блок Else, где вы не присваиваете $temp_result = $row["pb_title"];
, так что оно должно сохранять предыдущее значение, вы сделали это только в блоке If , вам нужно поместить тот же код и в ваш блок else..
Просто отредактируйте этот раздел в своем коде
else
{
//if not same, put in another area
echo '<div style="padding:20px; background-color:grey;">';
echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
echo '</div>';
echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
echo '<div style="height:40px;width:80px;float:right">';
echo '<img src="'.$pb_logo.'" width="100%"/>';
echo '</div>';
echo '<div style="clear:both"></div>';
echo '<a class="product-content">'.$row["pb_content"].'</a>';
echo '</div>';
echo '</div>';
$temp_result = $row["pb_title"]; // added this to save previous result
}
Комментарии:
1. Да, я пробовал раньше. Тогда вывод всего результата будет отображаться в виде красного цвета в поле div.
2. Что должна содержать эта переменная $temp_result. ?
3. Я хочу, чтобы начальный заголовок row1 был «A», а заголовок row2 тоже был «A». Поэтому поместите их в один и тот же красный div. Когда выполняется цикл до row3 и заголовок равен «B», тогда будет отображаться поле div серого цвета.
4. $temp_result используется для хранения pb_title, который получает
5. могу ли я сделать «A» и заголовок результатом, который я получаю из базы данных? это означает, что ЕСЛИ текущий заголовок не совпадает с предыдущим заголовком, чем отдельный.
Ответ №3:
Убедитесь, что программирование должно быть эффективным, для этого вам нужно иметь следующие идеи:
1) Здесь вам не нужно использовать if($result)
, потому что, когда результаты sql верны, только тогда это позволит выполнить условие
2) При программировании старайтесь избегать большего if else
условия для повышения эффективности.
<?php
$select_brand = "SELECT * FROM tblProduct_Brand WHERE pb_display='display'";
$result = mysqli_query ($mydatabase, $select_brand);
while($row = mysqli_fetch_array($result))
{
$pb_feature_image = substr(($row['pb_feature_image']),3);
$pb_logo = substr(($row['pb_logo']),3);
$temp_result;
if($temp_result == $row["pb_title"]) { $style = 'style="padding:20px; background-color:red;"'; }
else { $style = ' style="padding:20px; background-color:grey;"'; }
echo '<div '.$style.' >';
echo '<div style="display:inline-block;width:340px;height:250px;vertical-align:top;">';
echo '<img src="'.$pb_feature_image.'" width="100%" height="100%"/>';
echo '</div>';
echo '<div style="display:inline-block;width:330px;height:250px;padding-left:10px;">';
echo '<div style="height:40px;width:80px;float:right">';
echo '<img src="'.$pb_logo.'" width="100%"/>';
echo '</div>';
echo '<div style="clear:both"></div>';
echo '<a class="product-content">'.$row["pb_content"].'</a>';
echo '</div>';
echo '</div>';
$temp_result = $row["pb_title"];
}
?>