Re: help with an array if its possible!

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/22/2011 3:43 PM, Adam Preece wrote:
> Hi Gang!
> 
> i have 2 assoc arrays from 2 querys, 
> 
> first one is page categorys it consists of:
> 	id
> 	name
> 
> second is pages
> 	name
> 	cat_id
> 
> now, i am using smarty, so i pass arrays into the view. this i would like to pass to the view and display within a html select element.
> 
> 	<select id="name">
> 		<option value="CAT_ID">CAT NAME
> 			<option disabled="disabled">PAGE NAME ASSOCIATED TO THE CAT NAME</option>
> 		</option>
> 	</select>
> 
> and i cannot think of how i can structure an array to pass in to achieve this and/or is it even possible :-/.
> 
> i hope this makes sense.
> 
> i'm truly stuck!
> 
> kind regards
> 
> Adam Preece
> 	

I see that you have a nested <option ...> tag.  Maybe you are looking for the
<optgroup> tag.

<select>
  <optgroup label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select>

<?php

$categories[] = array('id' => 1, 'name' => 'cars');
$categories[] = array('id' => 2, 'name' => 'trucks');
$categories[] = array('id' => 3, 'name' => 'motorcycles');

$pages[] = array('id' => 1, 'name' => 'Neon', 'cat_id' => 1);
$pages[] = array('id' => 2, 'name' => 'Saturn', 'cat_id' => 1);
$pages[] = array('id' => 3, 'name' => 'F150', 'cat_id' => 2);
$pages[] = array('id' => 4, 'name' => 'Ram 2500', 'cat_id' => 2);
$pages[] = array('id' => 5, 'name' => 'Suzuki', 'cat_id' => 2);
$pages[] = array('id' => 6, 'name' => 'Honda', 'cat_id' => 3);

echo "<select id=\"page_id\">\n";

foreach ($categories AS $cat) {
  $c_cat_name = htmlspecialchars($cat['name']);
  echo "\t<optgroup label=\"{$c_cat_name}\">\n";

  foreach ($pages AS $page) {
    if ( $page['cat_id'] == $cat['id'] ) {
      $c_page_id = htmlspecialchars((int)$page['id']);
      $c_page_name = htmlspecialchars($page['name']);
      echo "\t\t<option value=\"{$c_page_id}\">{$c_page_name}</option>\n";
    }
  }
  # Reset pages so you can loop through it again
  reset($pages);
  echo "\t</optgroup>\n";
}

echo "</select>\n";
?>

All the above is untested, but should get you very close to what I think you are
trying to accomplish.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux