pontypete Posted September 6, 2012 Share Posted September 6, 2012 $backlinkSources = array(); $result = mysql_query("SELECT website FROM `free_listings`"); while($row = mysql_fetch_assoc($result)) { $backlinkSources[] = $row; } print_r($backlinkSources); Returns these errors: Array ( [0] => Array ( [website] => http://www.safehandsplans.co.uk ) [1] => Array ( [website] => http://www.google.com ) ) Warning: file_get_contents() expects parameter 1 to be string, array given in /home/content/95/9771895/html/checktest.php on line 39 Warning: Illegal offset type in /home/content/95/9771895/html/checktest.php on line 45 Warning: file_get_contents() expects parameter 1 to be string, array given in /home/content/95/9771895/html/checktest.php on line 39 Warning: Illegal offset type in /home/content/95/9771895/html/checktest.php on line 45 Array ( ) Thanks in advance! Link to comment https://forums.phpfreaks.com/topic/268060-do-while-array/ Share on other sites More sharing options...
pontypete Posted September 6, 2012 Author Share Posted September 6, 2012 And this works... (but I need it feeding in from SQL) $backlinkSources = array ('http://www.safehandsplans.co.uk','http://www.google.com'); Link to comment https://forums.phpfreaks.com/topic/268060-do-while-array/#findComment-1375698 Share on other sites More sharing options...
spiderwell Posted September 6, 2012 Share Posted September 6, 2012 the errors seem to be occuring AFTER your print_r() and you havent shown us that part of the code, please post that and it will help us help you Link to comment https://forums.phpfreaks.com/topic/268060-do-while-array/#findComment-1375699 Share on other sites More sharing options...
MMDE Posted September 6, 2012 Share Posted September 6, 2012 $backlinkSources = array(); $result = mysql_query("SELECT website FROM `free_listings`"); while($row = mysql_fetch_assoc($result)) { $backlinkSources[] = $row; } print_r($backlinkSources); Returns these errors: Array ( [0] => Array ( [website] => http://www.safehandsplans.co.uk ) [1] => Array ( [website] => http://www.google.com ) ) Warning: file_get_contents() expects parameter 1 to be string, array given in /home/content/95/9771895/html/checktest.php on line 39 Warning: Illegal offset type in /home/content/95/9771895/html/checktest.php on line 45 Warning: file_get_contents() expects parameter 1 to be string, array given in /home/content/95/9771895/html/checktest.php on line 39 Warning: Illegal offset type in /home/content/95/9771895/html/checktest.php on line 45 Array ( ) Thanks in advance! I don't see 45 lines, neither the lines that gives the errors. What the code does is looping through the mysql_query's result. What it loops through is arrays of all the columns you've selected in your mysql_query. You are assigning these to a new array. This new array will therefor be an array of arrays. do this after the loop to see the content of the array $backlinkSources: echo '<pre>'; print_r($backlinkSources); echo '</pre>'; You will probably need to do this: foreach($backlinkSources AS $backlinkSource){ file_get_contents($backlinkSource['website']); } Or just do this while you loop through the results: while($row = mysql_fetch_assoc($result)) { $backlinkSources[] = $row['website']; } The latter is probably the best. Another little thing to note is what would happen if the mysql_query resulted in no rows? You would never create the array $backlinkSources, and later would try to use it. Do this before the loop to make sure it exists: $backlinkSources = array(); Or you could just check if the mysql_query resulted in 0 rows and terminate the execution of the rest of the related code: if(!mysql_num_rows($result)){ return; //should terminate the function if this is a function } Link to comment https://forums.phpfreaks.com/topic/268060-do-while-array/#findComment-1375700 Share on other sites More sharing options...
pontypete Posted September 6, 2012 Author Share Posted September 6, 2012 /* This is the part I need, but is corrupting everything else... $backlinkSources = array(); $result = mysql_query("SELECT website FROM `free_listings`"); while($row = mysql_fetch_assoc($result)) { $backlinkSources[] = $row; } print_r($backlinkSources);*/ $backlinkSources = array ('http://www.safehandsplans.co.uk','http://www.google.com'); $reportArray = array(); $falseFound = false; foreach ($backlinkSources as $source) { $html = file_get_contents ( $source ); $links = ExtractHrefLinks($html); if (CheckForTargetUrl($links, $url) === false) { $falseFound = true; $reportArray[$source] = 0; } else { $reportArray[$source] = 1; } } print_r($reportArray); if ($falseFound === true) { GenerateReportEmail($email, $fromEmail, $subject, $body, $url, $reportArray); } function GenerateReportEmail($email, $fromEmail, $subject, $body, $url, $reportArray) { $header = "From: " . $fromEmail . "\r\n"; foreach ($reportArray as $key => $report) { if ($report == false) { $body .= "Backlink to $url not found on: $key\n"; //update as link 0 $sqlUpdate = "UPDATE free_listings SET backlinkactive='0' WHERE website='$key'"; mysql_query($sqlUpdate) or die (mysql_error()); } } mail($email, $subject, $body, $header); } function CheckForTargetUrl($links, $target) { foreach ($links as $link) { if (strpos($link, $target) !== false) { return true; } } return false; } function ExtractHrefLinks($html) { $dom = new DOMDocument; $linkUrls = array(); @$dom->loadHTML($html); $links = $dom->getElementsByTagName('a'); foreach ($links as $link){ $linkUrls[] = $link->getAttribute('href'); } return $linkUrls; } Link to comment https://forums.phpfreaks.com/topic/268060-do-while-array/#findComment-1375701 Share on other sites More sharing options...
MMDE Posted September 6, 2012 Share Posted September 6, 2012 As I said in my earlier post: $backlinkSources[] = $row['website']; Oh and sorry, I didn't see you created the $backlinkSources array before the mysql_query. If it is a function, you may still want to terminate the execution of the rest of the code when there is no results from the mysql_query. Link to comment https://forums.phpfreaks.com/topic/268060-do-while-array/#findComment-1375703 Share on other sites More sharing options...
pontypete Posted September 6, 2012 Author Share Posted September 6, 2012 Thank you, much appreciated! Link to comment https://forums.phpfreaks.com/topic/268060-do-while-array/#findComment-1375705 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.