Jump to content

[SOLVED] Help with table layout


omarf

Recommended Posts

I'm using DaDaBIK as the front end for a mySQL database and I need some help setting a table layout.

 

The details of a record page currently looks like this:

 

Field1  Value1

Field2  Value2

Field3  Value3

Field4  Value4

...etc

 

I wish to style it like this

 

Field1  Value1  |  Field2  Value2

Field3  Value3  |  Field4  Value4

...etc

 

Below is the part of the php file that controls the output of this page:

 

function build_details_table($fields_labels_ar, $res_details)
// goal: build an html table with details of a record
// input: $fields_labels_ar $res_details (the result of the query)
// ouptut: $details_table, the html table
{
global $conn, $quote, $alias_prefix, $prefix_internal_table;

// build the table
$details_table = "";

$details_table .= "<table>";

while ($details_row = fetch_row_db($res_details)){ // should be just one

	$count_temp = count($fields_labels_ar);
	for ($i=0; $i<$count_temp; $i++){
		if ($fields_labels_ar[$i]["present_details_form_field"] == "1"){
			$field_name_temp = $fields_labels_ar[$i]["name_field"];

			// hack for mssql, an empty varchar ('') is returned as ' ' by the driver, see http://bugs.php.net/bug.php?id=26315
			// could be not set if it's a foreign key
			if (isset($details_row[$field_name_temp]) && $details_row[$field_name_temp] === ' ') {
				$details_row[$field_name_temp] = '';
			} // end if

			$field_values_ar = array(); // reset the array containing values to display, otherwise for each loop if I don't call build_linked_field_values_ar I have the previous values

			$primary_key_field_field = $fields_labels_ar[$i]["primary_key_field_field"];
			if ($primary_key_field_field != ""){
				$primary_key_field_field = $fields_labels_ar[$i]["primary_key_field_field"];
				$primary_key_table_field = $fields_labels_ar[$i]["primary_key_table_field"];
				$primary_key_db_field = $fields_labels_ar[$i]["primary_key_db_field"];
				$linked_fields_field = $fields_labels_ar[$i]["linked_fields_field"];
				$linked_fields_ar = explode($fields_labels_ar[$i]["separator_field"], $linked_fields_field);
				$alias_suffix_field = $fields_labels_ar[$i]["alias_suffix_field"];

				// get the list of all the installed tables
				$tables_names_ar = build_tables_names_array(0);

				// if the linked table is installed I can get type content and separator of the linked field
				if (in_array($primary_key_table_field, $tables_names_ar)) {
					$linked_table_installed = 1;

					$fields_labels_linked_field_ar = build_fields_labels_array($prefix_internal_table.$primary_key_table_field, "1");
				} // end if
				else {
					$linked_table_installed = 0;
				} // end else

				for ($j=0;$j<count($linked_fields_ar);$j++) {
					////*$field_values_ar[$j] = $details_row[$linked_fields_ar[$j].$alias_prefix.$alias_suffix_field];
					$field_values_ar[$j] = $details_row[$primary_key_table_field.$alias_prefix.$linked_fields_ar[$j].$alias_prefix.$alias_suffix_field];

				} // end for

				/*
				$linked_field_values_ar = build_linked_field_values_ar($details_row[$field_name_temp], $primary_key_field_field, $primary_key_table_field, $primary_key_db_field, $linked_fields_ar);
				*/
				/*
				if (substr($foreign_key_temp, 0, 4) == "SQL:"){
					$sql = substr($foreign_key_temp, 4, strlen($foreign_key_temp)-4);
				} // end if
				else{
				*/
				//$field_values_ar = $linked_field_values_ar;
			}
			else{
				$field_values_ar[0] = $details_row[$field_name_temp];
			}

			$count_temp_2 = count($field_values_ar);
			$details_table .= "<tr><td class=\"td_label_details\"><b>".$fields_labels_ar[$i]["label_field"]."</b></td><td class=\"td_value_details\">";
			for ($j=0; $j<$count_temp_2; $j++) {

				// if it's a linked field and the linked table is installed, get the correct $field_type $field_content $field_separator
				if ($primary_key_field_field != "" && $primary_key_field_field != NULL && $linked_table_installed === 1){

					foreach ($fields_labels_linked_field_ar as $fields_labels_linked_field_ar_element){
						if ($fields_labels_linked_field_ar_element['name_field'] === $linked_fields_ar[$j]) {
							$linked_field_type = $fields_labels_linked_field_ar_element['type_field'];
							$linked_field_content = $fields_labels_linked_field_ar_element['content_field'];
							$linked_field_separator = $fields_labels_linked_field_ar_element['separator_field'];
						} // end if
					} // end foreach

					reset($fields_labels_linked_field_ar);

					$field_to_display = get_field_correct_displaying($field_values_ar[$j], $linked_field_type, $linked_field_content, $linked_field_separator, "details_table"); // get the correct display mode for the field
				} // end if
				else {
					$field_to_display = get_field_correct_displaying($field_values_ar[$j], $fields_labels_ar[$i]["type_field"], $fields_labels_ar[$i]["content_field"], $fields_labels_ar[$i]["separator_field"], "details_table"); // get the correct display mode for the field
				} // end else

				$details_table .= $field_to_display." "; // at the field value to the table
			}
			$details_table = substr($details_table, 0, -6); // delete the last  
			$details_table .= "</td></tr>";

			//$field_to_display = get_field_correct_displaying($details_row[$field_name_temp], $fields_labels_ar[$i]["type_field"], $fields_labels_ar[$i]["content_field"], $fields_labels_ar[$i]["separator_field"], "details_table"); // get the correct display mode for the field

			//$details_table .= "<tr><td class=\"td_label_details\"><b>".$fields_labels_ar[$i]["label_field"]."</b></td><td class=\"td_value_details\">".$field_to_display."</td></tr>";
		} // end if
	} // end for
} // end while

$details_table .= "</table>";

return $details_table;
} // end function build_details_table

 

And here is the current CSS code for the tags on this page:

/********* DETAIL PAGE *********  */

/* the cell that contains the label */
.td_label_details{
text-align: right;
vertical-align: top;
}

/* the cell that contains the value */
.td_value_details{
vertical-align: top;
}

 

I've attached the full php file as well as the complete css file. To see this in action: http://www.smofco.com/dada . I'm a PHP newbie and learning as I go, so thanks for any input!

 

[attachment deleted by admin]

Link to comment
Share on other sites

Never mind, solved with an odd/even checking loop.

 

if($i % 2) {
			$details_table .= "<tr><td class=\"td_label_details\"><b>".$fields_labels_ar[$i]["label_field"]."</b></td><td class=\"td_value_details\">";
		} else {
			$details_table .= "<td class=\"td_label_details\"><b>".$fields_labels_ar[$i]["label_field"]."</b></td><td class=\"td_value_details\">";
		} // end else

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.