2012-10-17 49 views
0

* 很抱歉的長期職位 * 我使用捲曲在PHP post上的表單提交表單值的努力來回報post的結果,某種形式的領域需要一些幫助,形式有點不尋常。如何使用捲曲使用JS

捲曲腳本

$ch = curl_init(); 
$data = array('field_1_name' => 'field_value', 
       'field_2_name' => 'field_value', 
       'field_3_name' => 'field_value', 
      ); 
curl_setopt($ch, CURLOPT_URL,'http://url.com'); 
curl_setopt ($ch, CURLOPT_POST, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$fp = fopen('data.php', 'w'); 
curl_setopt($ch, CURLOPT_FILE, $fp); 
curl_exec ($ch); 
curl_close ($ch); 
fclose($fp); 

事情你應該知道的

  1. 的字段是不是text-fields而是radiodropdown字段的組合。
  2. 表格中包含JS,但螢火蟲控制檯未顯示AJAX信息 - 而是該表單與SESSIONSHTTP-CACHE數據一起使用。
  3. 一旦選擇了一個表單域,該頁面就好像是reload,並插入了下一個下拉列表的值。 (再次螢火未示出以此爲AJAX請求。)

這裏的一個dropdown字段的形式的示例

<select name="field_name" onchange="document.getElementById('uploadForm').action.value='RELOAD';document.getElementById('uploadForm').reloadTrigger.value='trigSize';document.getElementById('uploadForm').submit();"> 
    <option value="option_1">option_1</option> 
    <option value="option_2">option_2</option> 
    <option value="option_3">option_3</option> 
</select> 

通知的onChange事件與下一個dropdwon觸發重新加載網頁,並其各自的options

我試圖完成

每個dropdown字段包含的各種選項。基於表單上選擇的組合,最終頁面重新加載將基於選擇的這些選項返回價格。我需要將價格選項保存到我的數據庫中。

所以我的數據庫看起來是這樣的:

option_1 | option_2 | option_3 | price | 
field_1 | field_2 | field_3 | 25  | 

我包括所有這些信息,因爲有人用經驗能可能指向我在更好方向(意爲:茨/庫/教程/等等)我不確定cURL是否適合這份工作。我更喜歡PHP。那麼你們覺得呢?感謝您的時間和建議。我歡迎並欣賞所有有用的信息。

- 旁註 - 我用WATIR-WebDriver寫了一個RUBY的腳本,這個腳本成功地抓取信息,但工作方式太慢了。每種產品平均有5,000種不同的組合,這種方法每分鐘只能返回約10個。 (FAIL)

編輯1

只是爲了澄清。此表格不在我的服務器上,不屬於我或由我操作。我打算颳去表單返回的數據。

+0

爲什麼使用通常用於遠程URL操作的cURL?爲什麼不使用php $ _POST捕獲。你不會詳細討論這個問題,你只是在附註中說一些關於信息的信息。 –

+1

表單不在我的服務器上。它位於我不屬於或由我經營的外部網站上。這就是我使用cURL的原因。我的道歉 - 我認爲這是暗示在我的問題。我會修改。 – fyz

+0

我認爲你的模型是非常直接的,除非你可以直接訪問遠程數據庫,這是你可以做的唯一的事情。不過,你可能會考慮一件事,那就是你不必在文件中寫回應;相反,您可以使用'DOMDocument :: loadHTML()'立即解析它。 – Passerby

回答

0

看來,你想要得到的最終重新加載的結果,將返回HTML窗體中的價格。最後一頁將包含所有選定的值和價格。現在,您無需在將價格傳遞給表單時獲取價格以外的其他值。價格可以通過正則表達式抓取。這些值可以很容易地保存在數據庫中。

我認爲這將是可能的解決方案!