Jump to content

[SOLVED] passing where I am at to a new page


jakebur01

Recommended Posts

I am having trouble putting this together. I have tried a few things, but I have not been able to figure it out.

 

1. I am trying to run 25 rows.

 

2. Pass where I am at to the next page using $_GET and run the next set of 25 rows.

 

3. and continue until finished

 

<?php

if (isset($_GET['limit_start']))
{
$limit_start=$_GET['limit_start'];
$limit_end=$_GET['limit_end'];
}

ini_set('max_execution_time', '999'); 
// example of how to use basic selector to retrieve HTML contents

include('simple_html_dom.php');



  $source_file = "C:/Inetpub/Websites/edit.com/echo.txt";
$fp= fopen("$source_file", "a");
	$other="\n";
	$db = mysql_connect('localhost', 'xx', 'xx') or die(mysql_error()); 
mysql_select_db('xx') or die(mysql_error()); 
$total_rows = mysql_num_rows(mysql_query("SELECT * FROM zip_code where `state_prefix` = 'OK'", $db));
  
  
$rows_per_loop = 25; 
$total_loops = ceil($total_rows/$rows_per_loop); 


// run the loop, while loop counter is less than the total number of loops:
for($s=0; $s<$total_loops; $s++) {

// get the numbers for the limit, 
// start is just the current loop number multiplied by the rows per loop
// and end is loop counter + 1, multiplied by the rows per loop
$limit_start = $rows_per_loop*$s;
$limit_end = $rows_per_loop*($s+1);

$result = mysql_query("SELECT * FROM zip_code where `state_prefix` = 'OK' LIMIT $limit_start, $limit_end") or die(mysql_error());
while($myrow = mysql_fetch_array ($result))
{



$zip=$myrow['zip_code'];


// get DOM from URL or file
$html=file_get_html("http://www.mysite.com/selector.php?transaction=search&template=map_search&search1=0&pwidth=400&pheight=700&proxIconId=400&proxIcons=1&search2=0&search3=1&country=US&searchQuantifier=AND&address=&city=&stateProvince=+&postalCode=$zip&radius=500&x=78&y=16");

$i = 0;
$tmp = $html->find('span[class=mqEmp], span[class=Black11]');
$cnt = count($tmp) - 1;
foreach($tmp as $e) {
    if($i > 0 && $i < $cnt){



        $outputstring=$e->plaintext;
	$outputstring=$outputstring. "\t";

	 fwrite($fp, $outputstring, strlen($outputstring));

	if ($i % 8 == 0) {
  	 fwrite($fp, $other, strlen($other));
}


    }
    $i++;
}

}

// now that we've run those, let's clear the results so that we don't run out of memory.
mysql_free_result($result);

// show where we are at
echo $limit_start,' - ',$limit_end,'<br />';



sleep(1);		// give PHP a little nap to keep from overloading server
ob_flush(); 	// as recommended by MadTechie, in case we go beyond the max execution time
flush(); 	 	// add flush, to make sure it is outputted
header( "location:http://www.edit.com/selector.php?limit_start=$limit_start&limit_end=$limit_end" );
}
fclose($fp);

?>

 

 

 

I did this quick so hopefully all is good, see if this works for you.

<?php

if ($_GET['limit_end') {
$limit_end=$_GET['limit_end'];
}

ini_set('max_execution_time', '999'); 
// example of how to use basic selector to retrieve HTML contents

include('simple_html_dom.php');

  $source_file = "C:/Inetpub/Websites/edit.com/echo.txt";
$fp= fopen("$source_file", "a");
    $other="\n";
      $db = mysql_connect('localhost', 'xx', 'xx') or die(mysql_error()); 
mysql_select_db('xx') or die(mysql_error()); 
$total_rows = mysql_num_rows(mysql_query("SELECT * FROM zip_code where `state_prefix` = 'OK'", $db));
  
  
$rows_per_loop = 25; 
     
   // run the loop, while loop counter is less than the total number of loops:
while ($s!=$rows_per_loop) {
   $s++;
   // get the numbers for the limit, 
   // start is just the current loop number multiplied by the rows per loop
   // and end is loop counter + 1, multiplied by the rows per loop
    
$result = mysql_query("SELECT * FROM zip_code where `state_prefix` = 'OK' OFFSET $limit_end") or die(mysql_error());
$limit_end++;
while($myrow = mysql_fetch_array ($result))
{
$zip=$myrow['zip_code'];

// get DOM from URL or file
$html=file_get_html("http://www.mysite.com/selector.php?transaction=search&template=map_search&search1=0&pwidth=400&pheight=700&proxIconId=400&proxIcons=1&search2=0&search3=1&country=US&searchQuantifier=AND&address=&city=&stateProvince=+&postalCode=$zip&radius=500&x=78&y=16");

$i = 0;
$tmp = $html->find('span[class=mqEmp], span[class=Black11]');
$cnt = count($tmp) - 1;
foreach($tmp as $e) {
    if($i > 0 && $i < $cnt){
      
      
      
        $outputstring=$e->plaintext;
      $outputstring=$outputstring. "\t";
      
       fwrite($fp, $outputstring, strlen($outputstring));
      
      if ($i % 8 == 0) {
      fwrite($fp, $other, strlen($other));
}
      
      
    }
    $i++;
if ($limit_end==$total_rows) { $s=$rows_per_loop; }
}

}

// now that we've run those, let's clear the results so that we don't run out of memory.
   mysql_free_result($result);
   
   // show where we are at
   echo "$limit_end of $total_rows<br />";
   
   
   
   sleep(1);      // give PHP a little nap to keep from overloading server
   ob_flush();    // as recommended by MadTechie, in case we go beyond the max execution time
   flush();        // add flush, to make sure it is outputted
   if($limit_end!=$total_rows) { header( "location:http://www.edit.com/selector.php?limit_end=$limit_end" ); }
   }
fclose($fp);

?>

if ($limit_end) {  
$result = mysql_query("SELECT * FROM zip_code where `state_prefix` = 'OK' OFFSET $limit_end") or die(mysql_error());
} else {
$result = mysql_query("SELECT * FROM zip_code where `state_prefix` = 'OK'") or die(mysql_error());
}

 

This way we only offset after the first round, forgot that $Limit_end would have no value until it was run the first time through.

 

 

Just caught something else:

$limit_end++;

while($myrow = mysql_fetch_array ($result))

 

Make the $limit_end inside your while loop:

 

while($myrow = mysql_fetch_array ($result)) {

$limit_end++;

 

Something isn't right. I'm getting PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 840 bytes). Something else must be out of place. It won't even do one row if I change $rows_per_loop to 1.

 

I also changed

 

if ($limit_end==$total_rows) { $s=$rows_per_loop; }

}

 

to

 

if ($limit_end==$total_rows) { $i=$rows_per_loop; }

}

 

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.