2012-05-02 3 views
-1

Как спрятать эту вещь для сбора данных из нескольких объектов $ objectId? Как и от $ objectId 1038 до 1048.PHP «for loop» для сбора данных

Ниже представлен полный сценарий, который может собирать данные. В строке $objectId = ""; //I want to gather info about IDs lets say from 1038 - 1048 должен быть цикл, который, я думаю, но Ive не смог сделать это хорошо.

<form name="myForm" action="" method="post" id="myForm"> 
    <table cellpadding="2" border="1"> 
    <tr> 
     <td width="264" rowspan="2" valign="top"><?php 

    function transformHTML($string) 
    { 
     $string = trim($string); 
     $string = utf8_decode($string); 
     $string = htmlentities($string, ENT_NOQUOTES); 
     $string = str_replace("#", "&#35;", $string); 
     $string = str_replace("%", "&#37;", $string); 

     return $string; 
    } 

    function get_string_between($string, $start, $end){ 
     $string = " ".$string; 
     $ini = strpos($string,$start); 
     if ($ini == 0) return ""; 
     $ini += strlen($start); 
     $len = strpos($string,$end,$ini) - $ini; 
     return substr($string,$ini,$len); 
    } 

    if($_POST['submit']) { 

     $objectId = ""; //I want to gather info about IDs lets say from 1038 - 1048 

      $error_B = "<span class=error>Error #2:<br> Does the item exist (ID: " . $objectId . ")?</span><br>"; 

      $lines = file('http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj=' . $objectId); 
      foreach ($lines as $line_num => $line) { 
       $lineCrawl = htmlspecialchars($line); 
       $StringSum = "$StringSum$lineCrawl"; 
      } 
      $parsedGuidePrice = get_string_between($StringSum, "Current guide price", "Today"); 
      $parsedItemName = get_string_between($StringSum, "&lt;title&gt;", " - Grand Exchange - RuneScape&lt;/title&gt;"); 
      $parsedItemIconUrl = get_string_between($StringSum, '&lt;meta property=&quot;og:image&quot; content=&quot;', '&quot; /&gt;'); 

      $guideprice = preg_replace("/[^\.kbm0-9]/", "", $parsedGuidePrice); 

      if (strpos($guideprice,'k') !== false) { 
       $guideprice = preg_replace("/[^0-9]/", "", $parsedGuidePrice); 
       $guideprice *= 100; 
      } else if (strpos($guideprice,'m') !== false) { 
       $guideprice = preg_replace("/[^0-9]/", "", $parsedGuidePrice); 
       $guideprice *= 100000; 
      } else if (strpos($guideprice,'b') !== false) { 
       $guideprice = preg_replace("/[^0-9]/", "", $parsedGuidePrice); 
       $guideprice *= 100000000; 
      } 
      if ($guideprice == "") { 
       echo $error_B; 
      } else { 
       echo "<img src='" . $parsedItemIconUrl . "' class='parsedItemIconUrl'>"; 
       echo "<br>"; 
       echo "<strong>" . $parsedItemName . "</strong> guide price: <strong>" . $guideprice . "</strong>"; 
       echo "<br>"; 
       echo "<small>(Item ID: " . $objectId . ")</small><br><br><br>"; 
      } 
    } 
    ?></td> 
     <td width="172"></td> 
     <td width="99"><input type="submit" name="submit" alt="Get yesterday's averge market price" title="Get yesterday's averge market price"></td> 
    </tr> 
    <tr valign="top"> 
     <td></td> 
     <td><input value="Reset" type="button" name="reset" alt="Reset the form" title="Reset the form" onClick="javascript:window.location = '';"></td> 
    </tr> 
    </table> 
</form> 
+0

Не могли бы вы указать, что theproblem на самом деле? Какие результаты вы ожидаете, что вы на самом деле получаете? – Malovich

+0

Что я делал, добавлял +1 к объекту $ I, но программа все еще читала тот же URL :( –

+0

Он работает, спасибо! То, что я сделал, было в последней строке 'if ($ _ POST ['submit']) {} 'Я добавил' $ objectId + = 1' и зациклил все внутри него с помощью 'for ($ objectId = 1038; $ objectId <= 1048; $ objectId ++)' {но это не удалось. Могу ли я узнать почему? –

ответ

1
<form name="myForm" action="" method="post" id="myForm"> 
    <table cellpadding="2" border="1"> 
    <tr> 
     <td width="264" rowspan="2" valign="top"><?php 

    function transformHTML($string) 
    { 
     $string = trim($string); 
     $string = utf8_decode($string); 
     $string = htmlentities($string, ENT_NOQUOTES); 
     $string = str_replace("#", "&#35;", $string); 
     $string = str_replace("%", "&#37;", $string); 

     return $string; 
    } 

    function get_string_between($string, $start, $end){ 
     $string = " ".$string; 
     $ini = strpos($string,$start); 
     if ($ini == 0) return ""; 
     $ini += strlen($start); 
     $len = strpos($string,$end,$ini) - $ini; 
     return substr($string,$ini,$len); 
    } 

    function echoObjectIdStuff($objectId) { 
     $error_B = "<span class=error>Error #2:<br> Does the item exist (ID: " . $objectId . ")?</span><br>"; 

     $lines = file('http://services.runescape.com/m=itemdb_rs/viewitem.ws?obj=' . $objectId); 
     foreach ($lines as $line_num => $line) { 
      $lineCrawl = htmlspecialchars($line); 
      $StringSum = "$StringSum$lineCrawl"; 
     } 
     $parsedGuidePrice = get_string_between($StringSum, "Current guide price", "Today"); 
     $parsedItemName = get_string_between($StringSum, "&lt;title&gt;", " - Grand Exchange - RuneScape&lt;/title&gt;"); 
     $parsedItemIconUrl = get_string_between($StringSum, '&lt;meta property=&quot;og:image&quot; content=&quot;', '&quot; /&gt;'); 

     $guideprice = preg_replace("/[^\.kbm0-9]/", "", $parsedGuidePrice); 

     if (strpos($guideprice,'k') !== false) { 
      $guideprice = preg_replace("/[^0-9]/", "", $parsedGuidePrice); 
      $guideprice *= 100; 
     } else if (strpos($guideprice,'m') !== false) { 
      $guideprice = preg_replace("/[^0-9]/", "", $parsedGuidePrice); 
      $guideprice *= 100000; 
     } else if (strpos($guideprice,'b') !== false) { 
      $guideprice = preg_replace("/[^0-9]/", "", $parsedGuidePrice); 
      $guideprice *= 100000000; 
     } 
     if ($guideprice == "") { 
      echo $error_B; 
     } else { 
      echo "<img src='" . $parsedItemIconUrl . "' class='parsedItemIconUrl'>"; 
      echo "<br>"; 
      echo "<strong>" . $parsedItemName . "</strong> guide price: <strong>" . $guideprice . "</strong>"; 
      echo "<br>"; 
      echo "<small>(Item ID: " . $objectId . ")</small><br><br><br>"; 
     } 
    } 

    if($_POST['submit']) { 
     for($id = 1038; $id <= 1048; $id++) { 
      echoObjectIdStuff($id); 
     } 
    } 

    ?></td> 
     <td width="172"></td> 
     <td width="99"><input type="submit" name="submit" alt="Get yesterday's averge market price" title="Get yesterday's averge market price"></td> 
    </tr> 
    <tr valign="top"> 
     <td></td> 
     <td><input value="Reset" type="button" name="reset" alt="Reset the form" title="Reset the form" onClick="javascript:window.location = '';"></td> 
    </tr> 
    </table> 
</form> 
+0

Это работаю, спасибо! То, что я сделал, было в последней строке 'if ($ _ POST ['submit']) {}' Я добавил '$ objectId + = 1' и зациклил все внутри него с помощью' for ($ objectId = 1038; $ objectId ++) {'but notddd. Могу ли я знать почему? –

+1

Я предполагаю, что вы хотите, чтобы $ objectId увеличивался в 1 каждый раз, когда кто-то подавал форму? Если это так, PHP не поддерживает состояние переменной между запросами, вы должны посмотреть на сеансы для этого. В противном случае вам не нужно делать + = 1, часть $ objectId ++ цикла for делает это для каждой итерации. Подробнее о сеансах здесь: http://www.php.net/manual/en/session.examples.basic.php И о циклах: http://php.net/manual/en/control-structures. for.php – Mahn

+0

благодарим за ответ. Хорошо одобренный ответ на этот вопрос helpt, но это то, что я предоставил в похвале выше, не - $ objectID увеличивается в 1 каждый раз за концы цикла. (в моем нерабочем решении) –