Jump to content

function question: returning values from dynamically generated/assigned variable


animus

Recommended Posts

[b]PROBLEM:[/b]

I am having trouble returning values from a function that dynamically creates/assigns variables based on database entries. The idea is to have just a page call to the database and have php make my page. However, each page will have a ton of links to other products and parts of the site. Therefore, I just want to have each page’s links/images/resources handled in the following way:

<a title="<? echo $image_description_151; ?>" href="<? echo $image_url_151; ?>"><? echo $image_title_151; ?></a>

I have got this to work when it is not encapsulated within a function.

Any thoughts?


[b]DB STRUCTURE:[/b]

[color=red]DB:[/color] Pages Table
      Links Table
      Images Table
      Resources Table
     
Pages table houses 1 Primary Key page_id and the foreign keys for the other tables
Links table houses link_title, link_description, link_url, active & page_id (foreign key)
Images and resources tables are exact same structure as links (i.e. resoure_title, images_title)

[color=red]PHP:[/color]1 php file 'dbhook.php' (login information for DB)
        1 php to return values from DB


[b]PHP SCRIPT:[/b]

<?php
$myPage=1;
$myPageData = array("link","image","resource");
$myPageData_length = count($myPageData);
for($i=0;$i<=($myPageData_length-1);$i++){
getData($myPage,$myPageData[$i]);
}

function getData($page,$searchOn){

### Function to retrive all page data from database ####

/*
Date: 07.13.06    
Varible structure:
VARIABLE_title_NUMBER, VARIABLE_description_NUMBER, VARIABLE_url_NUMBER
where NUMBER is the link number on the page & VARIBLE is what section of database to look under, all three should be used on each link line
[color=orange]example: <a title="<? echo $VARIABLE_description_NUMBER; ?>" href="<? echo $VARIABLE_url_NUMBER; ?>"><? echo $VARIBLE_title_NUMBER; ?></a>[/color]
*/

//create a plural variable for the DB query
$plural = $searchOn."s";

//include my hook into the database
include('dbhook.php');

//connect to mySQL
mysql_connect(localhost,$username,$password);

//select the correct database
@mysql_select_db($database) or die("I am sorry but I do not see the database you requested");

//assign query variables
$query="SELECT aagtest.$plural.".$searchOn."_title, aagtest.$plural.".$searchOn."_description, aagtest.$plural.".$searchOn."_url, aagtest.$plural.active FROM aagtest.pages LEFT JOIN aagtest.$plural ON aagtest.pages.page_id = aagtest.$plural.page_id WHERE aagtest.$plural.page_id =$page";

//perform querys
$result=mysql_query($query);
$totalNumberOfFields=mysql_num_fields($result);
$totalNumberOfFields=$totalNumberOfFields-1;

//set arrays for processing returned results
$myLinks=array();

//determine row amounts
$num=mysql_num_rows($result);

#loop through returned results and dynamically create varibles
#assign these varible names to dynamically created array values
$linkNum=0;
for($i=0;$i<=($num-1);$i++){
for($z=0;$z<=($totalNumberOfFields-1);$z++){
$myColumnHeading=mysql_field_name($result,$z);
$myVar=$myColumnHeading."_".$linkNum;
$info=@mysql_result($result,$linkNum,$myColumnHeading);
$myLink=$myVar;
$$myLink=$myLinks[$linkNum][$z]=$info;
}
$linkNum++;
}
mysql_close();
}

?>
i didn't slog through all your code, but it sounds to me like you'd be better off using an array rather than ending your variables in _number.  perhaps restructure your data as:

[code]$image[NUMBER_here] = array
(
  'title' => "Image NUMBER's title",
  'description' => "Image NUMBER's description",
  'url' => "Image NUMBER's url"
);[/code]

then you can simply pass through all of the $image array with a foreach and you'll have all your images displayed:

[code]<?php
foreach ($image AS $sub_array)
{
  echo '<a title="'.$sub_array['description'].'" href="'.$sub_array['url'].'">'.$sub_array['title'].'</a>';
}
?>[/code]

simply build the array of info as such in each of your query's rows, assign it to a temporary array value, and make the array of image info arrays as the function's return value.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.