Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 274
  • Last Modified:

PHP // MYSQL get multiple rows if any and display them

If a search finds multiple rows I want to display them, I don't know if the while loop needs to be in my query function, or if I need to use /mysql_fetch_assoc()/

//this works and pulls in 1 record
function get_order_info($search_value, $search_field, $table){
	global $mysqlconn;
	$query_error="Data Not Found";
	// building query 
	$query="SELECT * ";
		if($table=="usps"){
			$query .="FROM ". USPS_TABLE ;
		}
		else{
			$query .="FROM ". UPS_TABLE ;
		}
	$query .= " WHERE ". $search_field;
	$query .= " = ". $search_value;
	$query .= " LIMIT 0, 10";
	
	$query_result_set = mysql_query($query, $mysqlconn)
	
	//this test to see if there is actual data will reurn false if the query cannot find anything
	if($order_info= mysql_fetch_array($query_result_set)){
		return $order_info;
	}else{
		return $query_error;
	}
}

Open in new window

0
frtools
Asked:
frtools
  • 3
  • 2
1 Solution
 
tehpnkprdgyCommented:
You were close, just need a while loop.
<?php
function get_order_info($search_value, $search_field, $table){
        global $mysqlconn;
        $query_error="Data Not Found";
        // building query 
        $query="SELECT * ";
                if($table=="usps"){
                        $query .="FROM ". USPS_TABLE ;
                }
                else{
                        $query .="FROM ". UPS_TABLE ;
                }
        $query .= " WHERE ". $search_field;
        $query .= " = ". $search_value;
        $query .= " LIMIT 0, 10";
        
        $query_result_set = mysql_query($query, $mysqlconn)
        
        
        while ($row = mysql_fetch_array($query_result_set))
{
       //Do what every you want to do with your data here, it will loop
       //through the results row by row
}
 
    return $yourResults;
?>

Open in new window

0
 
frtoolsAuthor Commented:
So now I would return $row and out of the while loop return the query_error()
0
 
frtoolsAuthor Commented:
ok here is the code and i want to display multiple rows if there is any. My form brings in a search string, my main <?php> block checks for the post variable;
//This is main .php page calls functions
 
<?php
$table="usps";
 
//Form validation check for search 
if(isset($_POST['form_zipcode'])){
 while($sel_order=search_for($_POST['form_zipcode'], $table_field,$table)){
    echo output_track_info($sel_order);
  }
}else{
  echo "Enter a search above.";
}
?>
 
 
 
//functions.php
 
 
function search_for($form_result, $table_field, $table){
    $end="END OF SEARCH";
    //Call functions to get array data, and clickable link data 
    while($result= get_order_info($form_result, $table_field ,$table)){
	return $result;
    }
    return $end;
}
 
 
 
function get_order_info($search_value, $search_field, $table){
 global $mysqlconn;
 $end="END OF SEARCH";
 $query_error="Data Not Found";
	
 // building query 
 $query="SELECT * ";
  if($table == "usps"){
   $query .="FROM ". USPS_TABLE ;
  }
  else{
   $query .="FROM ". UPS_TABLE ;
  }
  $query .= " WHERE ". $search_field;
  $query .= " = ". $search_value;
  $query .= " LIMIT 5, 10";
 
  $query_result_set = mysql_query($query, $mysqlconn);
  //this test to see if there is actual data
  if(!$query_result_set){
	die("Failed to find search criteria ". mysql_error());
  }else{
       while ($row = mysql_fetch_array($query_result_set)){
	return $row;
       }
  }
	return $end;
}
 
 
				

Open in new window

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
NerdsOfTechCommented:
You can also return the result as a global array if you need to use the recordset later.

Is there a particular field you are interested in extracting?

//This is main .php page calls functions
 
<?php
$table="usps";
 
//Form validation check for search 
if(isset($_POST['form_zipcode'])){
 while($sel_order=search_for($_POST['form_zipcode'], $table_field,$table)){
    echo output_track_info($sel_order);
  }
}else{
  echo "Enter a search above.";
}
 
?>
 
 
 
//functions.php
 
global $data;
 
function search_for($form_result, $table_field, $table){
    $end="END OF SEARCH";
    //Call functions to get array data, and clickable link data 
    while($result= get_order_info($form_result, $table_field ,$table)){
        return $result;
    }
    return $end;
}
 
 
 
function get_order_info($search_value, $search_field, $table){
 global $mysqlconn;
 $end="END OF SEARCH";
 $query_error="Data Not Found";
        
 // building query 
 $query="SELECT * ";
  if($table == "usps"){
   $query .="FROM ". USPS_TABLE ;
  }
  else{
   $query .="FROM ". UPS_TABLE ;
  }
  $query .= " WHERE ". $search_field;
  $query .= " = ". $search_value;
  $query .= " LIMIT 5, 10";
 
  $query_result_set = mysql_query($query, $mysqlconn);
  //this test to see if there is actual data
  if(!$query_result_set){
        die("Failed to find search criteria ". mysql_error());
  }else{
       $x=0;
       while ($row = mysql_fetch_array($query_result_set)){
	foreach ($row as $key => $value){
         $data[$x][$key]=$value
        }
	$x++;
       }
   return $data;
  }
}
                             

Open in new window

0
 
NerdsOfTechCommented:
Typo fixed.

Again is there a certain field you need for the tracking function?

if so instead of the forloop you could do:
$data[$x] = $row['{field_name_here}'];

//This is main .php page calls functions
 
<?php
$table="usps";
 
//Form validation check for search 
if(isset($_POST['form_zipcode'])){
 while($sel_order=search_for($_POST['form_zipcode'], $table_field,$table)){
    echo output_track_info($sel_order);
  }
}else{
  echo "Enter a search above.";
}
 
?>
 
 
 
//functions.php
 
global $data;
 
function search_for($form_result, $table_field, $table){
    $end="END OF SEARCH";
    //Call functions to get array data, and clickable link data 
    while($result= get_order_info($form_result, $table_field ,$table)){
        return $result;
    }
    return $end;
}
 
 
 
function get_order_info($search_value, $search_field, $table){
 global $mysqlconn;
 $end="END OF SEARCH";
 $query_error="Data Not Found";
        
 // building query 
 $query="SELECT * ";
  if($table == "usps"){
   $query .="FROM ". USPS_TABLE ;
  }
  else{
   $query .="FROM ". UPS_TABLE ;
  }
  $query .= " WHERE ". $search_field;
  $query .= " = ". $search_value;
  $query .= " LIMIT 5, 10";
 
  $query_result_set = mysql_query($query, $mysqlconn);
  //this test to see if there is actual data
  if(!$query_result_set){
        die("Failed to find search criteria ". mysql_error());
  }else{
       $x=0;
       while ($row = mysql_fetch_array($query_result_set)){
	foreach ($row as $key => $value){
         $data[$x][$key]=$value;
        }
	$x++;
       }
   return $data;
  }
}
                                

Open in new window

0
 
frtoolsAuthor Commented:
Figured it out I need to echo inside the while loop not return;
Thanx everyone
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now