#php #jquery #mysql
#php #jquery #mysql
Вопрос:
Я пытаюсь помочь другу с веб-сайтом. Обычно я не работаю с PHP, jquery.
Выпадающий список имеет 4 уровня. Первый уровень имеет 4 балла. 4 пункта имеют свои собственные подуровни, отличные друг от друга.
Я пытаюсь найти их, а затем отобразить в выпадающем списке непосредственно из базы данных.
И я застрял на втором уровне с этой ошибкой
Обратите внимание: Пытаюсь получить свойство ‘subcategorie’ не-объекта в …..
Что мне удалось сделать до сих пор:
<?php $categorii = $wpdb->get_results("SELECT DISTINCT categorie FROM catalog_rural");
?>
<?php
$subcategorie = $wpdb->get_results("SELECT DISTINCT subcategorie FROM catalog_rural WHERE categorie = 'Afaceri'");
?>
<div class="container">
<?php
foreach($categorii as $categorie) {
?>
<ul>
<li>
<a <?php if(isset($_GET['categorie']) amp;amp; $categorie->categorie==$_GET['categorie']){ echo "btn-success";}else{ echo "btn-info";};?> href="<?php site_url(); ?>catalog-rural/?categorie=<?php echo urlencode($categorie->categorie); ?>"> <i class="fa fa-caret-down"></i>
<?php echo $categorie->categorie ; ?> </a>
<ul class="">
<li> <a href="<?php echo site_url(); ?>/catalog-rural/?categorie=<?php echo urlencode($_GET['categorie']); ?>amp;subcategorie=<?php echo $subcategorie->subcategorie; ?>" class="list-group-item <?php if($subcategorie->subcategorie==$_GET['subcategorie']){ echo "active";};?> "><?php echo $subcategorie->subcategorie; ?> </a>
</li>
</ul>
</li>
</ul>
</a>
Комментарии:
1. Вы говорите о наборе данных, состоящем примерно из 16 элементов (4×4). Я бы просто вернул все это в одном запросе и обработал остальную логику в коде вашего приложения.
2.
btn-success
иbtn-info
недопустимые атрибуты для гиперссылки (или любого html-элемента …) ~ они должны быть именами классов?3. Вы генерируете недопустимый HTML -у вас недопустимая вложенность html-элементов, поэтому, вероятно, что-то не работает
4. Я предполагаю, что ваш var
$subcategory
, который вы получаете обратно, является массивом , а не объектом, или он пуст. Попробуйте поместить это в цикл foreach, как вы делали для$categorii
Ответ №1:
Привет, вам нужно выполнить цикл foreach для $subcategorie
, как вы сделали для $categorii
. Потому что вы получаете массив, а не объект, который вы получили для $categorii
. Здесь я установил его вокруг li
, потому что оно кажется лучшим.
<?php
$categorii = $wpdb->get_results("SELECT DISTINCT categorie FROM catalog_rural");
?>
<?php
$subcategories = $wpdb->get_results("SELECT DISTINCT subcategorie FROM catalog_rural WHERE categorie = 'Afaceri'");
?>
<div class="container">
<?php
foreach( $categorii as $categorie ) {
?>
<ul>
<li>
<a
<?php
#### What are these? Are they classnames? ####
if( isset( $_GET['categorie'] ) amp;amp; $categorie->categorie==$_GET['categorie'] ){
echo "btn-success";
}else{
echo "btn-info";
};
?> href="<?php site_url(); ?>catalog-rural/?categorie=<?php echo urlencode( $categorie->categorie ); ?>">
<i class="fa fa-caret-down"></i>
<?php echo $categorie->categorie; ?>
</a>
<ul class="">
<?php foreach( $subcategories as $subcategorie ) { ?>
<li>
<a href="<?php echo site_url(); ?>/catalog-rural/?categorie=<?php echo urlencode( $_GET['categorie'] ); ?>amp;subcategorie=<?php echo $subcategorie->subcategorie; ?>" class="list-group-item <?php if($subcategorie->subcategorie==$_GET['subcategorie']){ echo "active";};?> ">
<?php echo $subcategorie->subcategorie; ?>
</a>
</li>
<?php } ?>
</ul>
</li>
</ul>
Ответ №2:
Не предназначено как решение вашей ошибки " Trying to get property 'subcategorie' of non-object"
~ просто для иллюстрации недопустимой разметки. Если бы вы использовали правильный отступ в коде, вы, вероятно, смогли бы это заметить!
<?php
$categorii = $wpdb->get_results("SELECT DISTINCT categorie FROM catalog_rural");
?>
<?php
$subcategorie = $wpdb->get_results("SELECT DISTINCT subcategorie FROM catalog_rural WHERE categorie = 'Afaceri'");
?>
<div class="container">
<?php
foreach( $categorii as $categorie ) {
?>
<ul>
<li>
<a
<?php
#### What are these? Are they classnames? ####
if( isset( $_GET['categorie'] ) amp;amp; $categorie->categorie==$_GET['categorie'] ){
echo "btn-success";
}else{
echo "btn-info";
};
?> href="<?php site_url(); ?>catalog-rural/?categorie=<?php echo urlencode( $categorie->categorie ); ?>">
<i class="fa fa-caret-down"></i>
<?php echo $categorie->categorie; ?>
</a>
<ul class="">
<!-- ### Where is the opening LI? ### -->
<a href="<?php echo site_url(); ?>/catalog-rural/?categorie=<?php echo urlencode( $_GET['categorie'] ); ?>amp;subcategorie=<?php echo $subcategorie->subcategorie; ?>" class="list-group-item <?php if($subcategorie->subcategorie==$_GET['subcategorie']){ echo "active";};?> ">
<?php echo $subcategorie->subcategorie; ?>
</a>
</li>
</ul>
</li>
</ul>
</a><!-- ### what is this closing? ### -->
Комментарии:
1. Ошибка по-прежнему заключается в том, что она вызывает свойство в массиве … сбой Html здесь не является причиной. И в предоставленном коде есть отверстие
li
2. Привет, спасибо за ясность :))) Я все еще получаю сообщение, но теперь оно выглядит более понятным. btn-success и btn-info — это имена классов. «категория» — это первый уровень, также столбец в SQL. «подкатегория» — это второй уровень и еще один столбец SQL.
3. @FedericaClincenaru Поскольку вы все еще пытаетесь вызвать свойство из массива , выполните foreach на своем
$subcategory