Любитель пытается исправить выпадающее меню из SQL

#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