We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 24075
    • 83 Posts
    Hi!

    I have new little problem

    this sample code:

    <?php
    
    function getTree2($parent2) {
    
        $path = MODX_CORE_PATH . 'components/pepish2/';
        $result = $modx->addPackage('pepish2',$path . 'model/','pp_');
      
      if($result){
      $g = $modx->newQuery('Category');
      $g->where(array(
        'parent_id' => $parent2,
    ));
    
      $trees = $modx->getCollection('Category',$g);
    }  
      
    $pole2 = array();
      
    foreach ($trees as $tre) {
    	$pole2[] = $tre->get('category_id');
    	$pole2 = array_merge($pole2, getTree2($tre->get('category_id')));
      echo '$pole2'.$pole2.'<br>';
    }
    
    return $pole2;
    }
    
    
    $iii = '9';  //this is only sample number
    $seznam_kategorii = getTree2($iii);
    
    echo '<br>$seznam_kategorii= '.$seznam_kategorii.'<br>';
    
    $seznam_kategorii[] = $iii;
    $seznam_kategorii_retezec = implode(',', $seznam_kategorii);
    echo '<br>Seznam kategorií:  '.$seznam_kategorii_retezec.'<br>';




    Output this code is:
    category_id and all parrent_id's in string

    Right result for id = 9 is
    Seznam kategorií: 26,21,30,27,31,25,23,28,24,22,29,9

    but in this code is result:
    Internal Server Error



    This code working fine:

    <?php
    function getTree2($parent2) {
    
      $database3="databasename";
    mysql_connect ("mysql.server", "user", "password");
    mysql_query('SET NAMES utf8'); 
    @mysql_select_db($database3) or die( "Unable to select database");
      
      $result2 = mysql_query('SELECT * FROM category WHERE parent_id='.$parent2.' ORDER BY name asc');
    
      $pole2 = array();
      while ($row2 = mysql_fetch_assoc($result2)) {
        $pole2[] = $row2['id'];
    //    array_merge($pole2, getTree2($row2['id']));
    $pole2 = array_merge($pole2, getTree2($row2['id']));
      }
    
      return $pole2;
    }
    
    
    
    $iii = 9;
    $seznam_kategorii = getTree2($iii);
    
    $seznam_kategorii[] = $iii;
    $seznam_kategorii_retezec = implode(',', $seznam_kategorii);
    echo '<br>Seznam kategorií:  '.$seznam_kategorii_retezec.'<br>';


    Any idea?

    Thanks!
      Petr Püschel, Czech Republic
      <hr>
      http://puschpull.org
      <hr>
      • 4172
      • 5,888 Posts
      try this:

      <?php
      
      function getTree2($parent2)
      {
          global $modx;
      
          $g = $modx->newQuery('Category');
          $g->where(array('parent_id' => $parent2));
          $pole2 = array();
          if ($trees = $modx->getCollection('Category', $g)) {
              foreach ($trees as $tre) {
                  $pole2[] = $tre->get('category_id');
                  $pole2 = array_merge($pole2, getTree2($tre->get('category_id')));
                  echo '$pole2' . $pole2 . '';
              }
          }
      
          return $pole2;
      }
      
      $path = MODX_CORE_PATH . 'components/pepish2/';
      $result = $modx->addPackage('pepish2', $path . 'model/', 'pp_');
      
      if ($result) {
          $iii = '9'; //this is only sample number
          $seznam_kategorii = getTree2($iii);
      }
      
      
      echo '$seznam_kategorii= ' . $seznam_kategorii . '';
      
      $seznam_kategorii[] = $iii;
      $seznam_kategorii_retezec = implode(',', $seznam_kategorii);
      echo 'Seznam kategorií:  ' . $seznam_kategorii_retezec . '';
      
      
      
        -------------------------------

        you can buy me a beer, if you like MIGX

        http://webcmsolutions.de/migx.html

        Thanks!
        • 24075
        • 83 Posts
        Bruno17:

        Thanks for Your reply!

        This code working fine

        Thank you wery much.
        :-)

        P.S.:

        Problem be in
        global $modx;
        ?
          Petr Püschel, Czech Republic
          <hr>
          http://puschpull.org
          <hr>
          • 24075
          • 83 Posts
          I have problem with this:

          if($result){
            $f = $modx->newQuery('Galerie');
            $f->where(array(
                'kategorie:IN' => array($seznam_kategorii_retezec),
          ));
            $f->sortby('galerie_id','ASC');
          
            $vypis = $modx->getCollection('Galerie',$f);
          }


          right result is for example:
          Seznam kategorií: 20,13,18,14,16,17,12,19,15,8

          but this mu code result in SQL SELECT:
          SELECT `Galerie`.`galerie_id` AS `Galerie_galerie_id`, ******* FROM `pp_galerie` AS `Galerie` WHERE `Galerie`.`kategorie` IN (20) ORDER BY galerie_id ASC


          only first nuber is in thus query
          ??
            Petr Püschel, Czech Republic
            <hr>
            http://puschpull.org
            <hr>
            • 4172
            • 5,888 Posts
            does this work for you?
             $f->where(array('kategorie:IN' => $seznam_kategorii));
              -------------------------------

              you can buy me a beer, if you like MIGX

              http://webcmsolutions.de/migx.html

              Thanks!
              • 24075
              • 83 Posts
              Quote from: Bruno17 at Mar 06, 2012, 12:00 PM
              does this work for you?
               $f->where(array('kategorie:IN' => $seznam_kategorii));

              Bruno17:
              Work !
              Like always

              Thanks!
                Petr Püschel, Czech Republic
                <hr>
                http://puschpull.org
                <hr>
                • 24075
                • 83 Posts
                This is actual code (functional):

                <?php
                function getTree($parent) {  
                  global $modx;
                    $path = MODX_CORE_PATH . 'components/pepish2/';
                    $result = $modx->addPackage('pepish2',$path . 'model/','pp_');  
                  if($result){
                  $g = $modx->newQuery('Category');
                  $g->where(array(
                    'parent_id' => $parent,
                ));
                  $trees = $modx->getCollection('Category',$g);
                }  
                $pole = array();  
                foreach ($trees as $tre) {
                	$pole[] = $tre->get('category_id');
                	$pole = array_merge($pole, getTree($tre->get('category_id')));
                }
                return $pole;
                }
                
                
                
                
                $path = MODX_CORE_PATH . 'components/pepish2/';
                $result = $modx->addPackage('pepish2',$path . 'model/','pp_');
                
                echo '<form action="[[~[[*id]]]]" method="post" class="form">
                <select name="sel_cat" size="1">';
                
                if($result){
                  $d = $modx->newQuery('Category');
                  $d->where(array(
                    'view' => '1',
                ));
                  $d->orCondition(array(
                   'view' => '2',
                ));
                  $d->sortby('category_id','ASC');
                //$d->limit('16');
                
                  $seznam = $modx->getCollection('Category',$d);
                }
                
                foreach ($seznam as $sez) {
                	echo '<option value='.$sez->get('category_id').'>'.$sez->get('name').'</option>';
                }
                
                echo '</select>
                <input type="submit" value="odeslat">
                </form><br><hr>';
                
                 $d->prepare();
                  echo 'SQL QUERY:<br><font face="Tahoma" size="-2" color="#FFFF99">'.$d->toSql().'</font><br><hr>';
                
                
                if (!isset($_POST['sel_cat'])) $_POST['sel_cat'] = '0';
                $a = ($_POST['sel_cat']);
                
                
                
                echo 'ID zvolené kategorie je: '.$a.'<br>';
                
                if($result){
                  $e = $modx->newQuery('Category');
                  $e->where(array(
                    'category_id' => $a,
                ));
                  $seze = $modx->getCollection('Category',$e);
                }
                
                foreach ($seze as $se) {
                	echo 'Vybraná kategorie je: '.$se->get('name').'<hr>';
                }
                
                
                $iii = $a;
                $seznam_kategorii = getTree($iii);
                $seznam_kategorii[] = $iii;
                $seznam_kategorii_retezec = '\''.implode('\',\'', $seznam_kategorii).'\'';
                echo 'Seznam kategorií celé vybrané větve:  <br>'.$seznam_kategorii_retezec.'<br><hr>';
                
                
                if($result){
                  $f = $modx->newQuery('Galerie');
                  $f->where(array('kategorie:IN' => $seznam_kategorii));
                  $f->sortby('galerie_id','ASC');
                //$f->limit('16');
                  $vypis = $modx->getCollection('Galerie',$f);
                }
                    
                $f->prepare();
                 echo 'SQL QUERY:<br><font face="Tahoma" size="-2" color="#FFFF99">'.$f->toSql().'</font><br><hr>';
                 echo 'Celkový počet nalezených záznamů: '.count($vypis).'<br><hr>';    
                    
                echo '<div id="db">
                <table align="center" width="96%" height="auto" border="1" bordercolor="#FFCC00" bgcolor="#008080">';
                echo '<tr class="tab"><th>ID</th><th>Name CZ</th><th>Name Latin</th><th>Místo</th><th>Datum snímku</th><th>Cesta k fotografii</th></tr>';
                
                foreach ($vypis as $vyp) {
                  echo '<tr>';
                  echo '<td> '.$vyp->get('galerie_id').'</td>'."\n";
                  echo '<td> '.$vyp->get('name_cz').'</td>'."\n";
                  echo '<td> '.$vyp->get('name_lat').'</td>'."\n";
                  echo '<td> '.$vyp->get('kde').'</td>'."\n";
                  echo '<td> '.$vyp->get('kdy').'</td>'."\n";
                  echo '<td> '.$vyp->get('path_large').'</td>'."\n";
                  echo '</tr>';
                }
                
                echo '</table>
                </div> <!-- end db -->';
                


                and here is online:
                http://puschpull.org/modx_rev/test-dropdown/dropdown-new

                :)

                  Petr Püschel, Czech Republic
                  <hr>
                  http://puschpull.org
                  <hr>