2014-07-24 2 views
0

간단한 HTML DOM PHP 스크립트를 사용하여 앱을 만들려고하고 있지만 현재 벽에 붙어있어 도움을받을 수 있기를 바랍니다.PHP 간단한 HTML DOM 반환 배열?

목표는 mySQL 데이터베이스에서 제품 번호를 읽고이 숫자를 URL 상수와 연결 한 다음이 결과 웹 사이트를 특정 클래스로 구문 분석하는 것입니다. 결과는 화면에 인쇄되어야합니다.

내 문제는 스크립트가 함수 배열의 첫 번째 결과 만 반환한다는 것입니다. $ prices-> children [4]를 호출하는 등의 몇 가지 시도를했지만 아무것도 도움이되지 않습니다.

url을 사용하여 get_prices_array() 함수를 트리거하면 여러 결과가 반환되지만 -> while while while while while this while loop.이 함수는 배열의 첫 번째 결과 만 반환합니다.

Heres 내 코드, 당신이 올바른 방향으로 날 가리킬 수 있기를 바랍니다!

감사합니다.

<?php 

include('simple_html_dom.php'); 

function get_prices_array($url) { 

    $x = file_get_html($url); 
    foreach ($x->find('span.price')as $dom) { 
     $y = $dom->outertext; 
     return $y; 
    } 
    $x->clear(); 
} 

$con = mysqli_connect("localhost", "***", "***", "***"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
exit(); 
} 

$result = mysqli_query($con, "SELECT * FROM articles"); 

while ($row = mysqli_fetch_array($result)) { 
    $constant = '***'; 
    $prices = get_prices_array($constant . $row["product_number"]); 
    echo $row["product_number"] . " - " . $prices . '<br />'; 
} 

mysqli_close($con); 
?> 

는 // 편집 //

I 각 스팬 가격 클래스를 통해 루프 기능 get_prices_array()을 변경 및 배열에 따라서 추가 어레이는 함수로부터 복귀된다. 배열의 처음 5 개 결과는 변수에 저장되고 반환 문자열에 추가됩니다. 당신의 도움을 주셔서 감사합니다!

<?php 

include('simple_html_dom.php'); 

function get_prices_array($url) { 

$x = file_get_html($url); 
$y = array(); 
foreach ($x->find('span.price')as $dom) { 
    $x = ($dom->outertext); 
    $y[] = $x; 
} 
return $y; 
//$x->clear(); 
} 

$con = mysqli_connect("localhost", "***", "***", "***"); 
// Check connection 
if (mysqli_connect_errno()) { 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
exit(); 
} 

$result = mysqli_query($con, "SELECT * FROM articles"); 

while ($row = mysqli_fetch_array($result)) { 
$constant = '***'; 
$prices = get_prices_array($constant . $row["product_number"]); 
$pos1 = $prices[0]; 
$pos2 = $prices[1]; 
$pos3 = $prices[2]; 
$pos4 = $prices[3]; 
$pos5 = $prices[4]; 
echo $row["product_number"] . " - " . $pos1 . " - " . $pos2 . " - " . $pos3 . " - " . $pos4 . " - " . $pos5 .'<br />'; 
} 

mysqli_close($con); 
?> 
+1

foreach 루프 내부에서 사용자의 상황에 따라 완전히 잘못되었습니다. 그것을 사용하여 연락해야합니다. 그런 다음 루프가 연결된 문자열을 반환합니다. –

+1

자연스럽게 그것은'return'을 사용한 이후 실제로 일어날 것입니다. 다중 span.price 값을 기대하고 있습니까? 당신이 그 요소를 직접 호출하지 않는다면, 그 값을 얻고 그 값을 반환하십시오. – Ghost

+0

이제 당신이 말한 문제를 볼 수 있습니다. span.class는 최대 15 개의 결과를 반환하며, 처음 5 개의 인스턴스가 유도 행으로 반환되기를 바랍니다. 또는 연관 배열로 참조 할 수 있습니다. – cyclington

답변

0

문제는 get_prices_array ($ url) 함수의 foreach 루프에서 사용 된 리턴 때문입니다.

foreach 루프는 한 번만 실행됩니다. 루프 내에서 조건없이 돌아 오는 경우에는 루프의 의미가 없습니다.