-1

I am working on a code where i got most of the functionality from this post: https://stackoverflow.com/a/19582946/1316372

But i tried to fetch the data from a Mysql database as following:

//my 2 db queries
  $query = array();
  $properties_array = array();

  $selector_query = tep_db_query("SELECT * FROM bts_selectors");
  while ($selector = tep_db_fetch_array($selector_query)) {
  $query[] = array('id' => (int)$selector['id'], 
                         'selector' => $selector['selector']
                         );
 }

 $properties_query = tep_db_query("SELECT * FROM bts_properties WHERE selector_id= '".(int)$selector['id']."'");
  while ($properties_result = tep_db_fetch_array($properties_query)) {
  $properties_array[] = array('id' => (int)$properties_result['id'], 
                            'selector_id' => (int)$properties_result['selector_id'],
                            'css_element' => $properties_result['css_el'],
                            'element_value' => $properties_result['css_val']
                         );
} 

//this is a working static array
$probs_good =array(
    1 => array(
        array('id' => 1, 'selector_id' => 1, 'css_element' => 'border', 'element_value' => '3px solid'),
        array('id' => 2, 'selector_id' => 1, 'css_element' => 'padding', 'element_value' => '10px')
    )
); 
///here the output should be generated
$css = '';
foreach($query as $selector){

    //$properties = $probs_good[$selector['id']]; //this the working static array
    $properties = $properties_array[$selector['id']];

    $rules = '';
    foreach($properties as $element){
        $rules .= "\n \t$element[css_element]:$element[element_value];";
    }

    $css .= "$selector[selector]".'{'."$rules \n".'}'."\n\n";
}
echo "<pre>";
echo "$css";
echo "</pre>";

I am aware that the way i go over the foreach requires that the array should have the same structure as the $probs_good, but honestly i fail with each try. In the post i refer to there is a quoted query made. I made some attempts to comply to that also. For now i thought it would be better to just show clean/simple code and explain what i tried to achieve.

2
  • As i expect the answer soon will be closed, I'll need to do some more investigation. Commented Sep 4, 2014 at 0:20
  • I hope it will not be closed before i can accept my own answer, so it will be help full for others. Commented Sep 4, 2014 at 11:37

1 Answer 1

0

Ok, after doing the research i found the solution (SO EASY, BUT WHEN NEVER HAD TO.....)

      $selectors_array = array();
      $selector_query = tep_db_query("SELECT * FROM bts_selectors");
      while ($selector = tep_db_fetch_array($selector_query)) {
      $selectors_array[] = array('id' => $selector['id'], 
                             'selector' => $selector['selector']
                             );
    }

    $css = '';
    foreach ( $selectors_array as $selector ) { 
    $rules = '';

    $properties_query = tep_db_query("SELECT * FROM bts_properties WHERE selector_id = '" . $selector['id'] . "' ");

   while ($properties = tep_db_fetch_array($properties_query)) {    
    $rules .= "\n \t$properties[css_el]:$properties[css_val];";
    }
        $css .= "$selector[selector]".'{'."$rules \n".'}'."\n\n";
    }

    echo "<pre>";
    echo "$css";
    echo "</pre>";

Generated and wanted output:

.thisone{
border:1px solid;
padding:10px; 
}

#thatone{
border:1px solid; 
}

.body{
width:40px;
height:40px; 
}
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.