Как отправить массив из классического ASP в таблицу на странице PHP? - PullRequest
2 голосов
/ 02 марта 2012

Я делаю SQL-запрос на странице ASP и получаю 100 строк и 7 столбцов данных.

Например, я читаю из строки запроса в моем URL или в форме, которую я отправил как POST / GET,

Я получил это: "myexample.com/order.php?month=2012-03", я использую "2012-03" в качестве значения на странице ASP для запуска запроса "SELECT * FROM CustomerSalesOrder WHERE date LIKE '2012-03%'"

Теперь, как уже упоминалось выше, я получил 100 строк с 7 столбцами данных о том, что мои клиенты покупают в марте.

Как преобразовать эти данные в массив и передать на страницу PHP, чтобы сгенерировать таблицу с отображением данных в таблице?

(Я понимаю, что могу запускать все на одном языке веб-программирования. Но шаг для выполнения запроса на странице ASP был исправлен, его нельзя изменить; также шаг для отображения данных на странице PHP также исправлен. Страница ASP расположена в myexample.com , а страница PHP расположена в mywork.com )

Пожалуйста, проведите меня шаг за шагом:

  • сбросить данные в массив на странице ASP и
  • как передать мои данные (в виде массива) на страницу PHP для отображения данных в правильной отформатированной табличной форме

Я ожидаю, что эксперт проведет меня, конвертируя данные в массив в ASP, и шаг передачи массива на страницу PHP.

Тогда, на странице PHP, как разбить все данные в массиве или присвоить данным значение для переменной? (Я предполагаю, что нужно использовать циклы, в этом случае лучше использовать какой-либо метод цикла?) Как только я получу значение либо в цикле, либо в другом виде, снова вернемся к таблице.

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

Могу ли я предложить, чтобы ваша страница asp выводила «массив» данных SQL в виде XML, а страница PHP просто считывала XML (используя CURL) и анализировала XML в массив php?

Вывод данных SQL в виде XML:

''#### Build SQL Query to grab data as XML (you may want to put this in a stored procedure
dim SqlStr
SqlStr = "SELECT CONVERT(VARCHAR(MAX), ( SELECT [ColA] AS 'A', [ColB] AS 'B', [ColC] AS 'C', [ColD] AS 'D', [ColE] AS 'E', [ColF] AS 'F', [ColG] AS 'G'" & _
         "                 FROM    CustomerSalesOrder " & _
         "                 WHERE [Date] LIKE '2012-03%' " & _
         "               FOR " & _
         "                 XML PATH('R') , " & _
         "                     ROOT('ROOT') " & _
         "               )) as XML"

set rs = db.execute(SqlStr)

do while not rs.eof
    XmlStr = rs("XML")
    rs.movenext
loop

''#### XML Headers
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
Response.ContentType = "text/xml"
Response.Write "<?xml version='1.0' encoding='utf-8'?>"
Response.Write XmlStr

Страница PHP может читать это следующим образом:

$URL = "URL to the ASP page";
$ch  = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
$output = trim(curl_exec($ch));
$xml = simplexml_load_string($output);

//#### Prep Array
var $TargetArray[];
$ArrayPointer = 0;

//#### Parse XML
foreach($xml->children() as $child) {
    $ColA = trim($child->A);
    $ColB = trim($child->B);
    $ColC = trim($child->C);
    $ColD = trim($child->D);
    $ColE = trim($child->E);
    $ColF = trim($child->F);
    $ColG = trim($child->G);

    //#### Push values into your array (This may be buggy, my php & multi dimensional arrays is a tad rusty)
    $row = array('ColA' => $ColA, 'ColB' => $ColB, 'ColC' => $ColC, 'ColD' => $ColD, 'ColE' => $ColE, 'ColF' => $ColF, 'ColG' => $ColG); 
    $TargetArray[$ArrayPointer] = $data;
    $ArrayPointer++;
}

В качестве альтернативы, если вы просто хотите добавить CURL XML в таблицу HTML, вы можете сделать это следующим образом:

//#### Parse XML from CURL into HTML Table
echo "<table>";
echo "<tr>";
echo "  <th>ColA</th>";
echo "  <th>ColB</th>";
echo "  <th>ColC</th>";
echo "  <th>ColD</th>";
echo "  <th>ColE</th>";
echo "  <th>ColF</th>";
echo "  <th>ColG</th>";
echo "</tr>";
foreach($xml->children() as $child) { 
    echo "<tr>";
    echo "  <th>" . trim($child->A) . "</th>";
    echo "  <th>" . trim($child->B) . "</th>";
    echo "  <th>" . trim($child->C) . "</th>";
    echo "  <th>" . trim($child->D) . "</th>";
    echo "  <th>" . trim($child->E) . "</th>";
    echo "  <th>" . trim($child->F) . "</th>";
    echo "  <th>" . trim($child->G) . "</th>";
    echo "</tr>";
}
echo "</table>";

Я уверен, что для этого потребуется некоторая доработка, но этого должно быть достаточно, чтобы вы начали работать как с PHP, так и с ASP.

1 голос
/ 02 марта 2012

Вы можете сделать это следующим образом:

На своей странице ASP вы можете добавить условие, если параметр json присутствует, вы отображаете данные из запроса в формате JSON (только код JSON, без HTML).

На странице PHP отображаются данные со страницы ASP:

$aspData = json_decode(file_get_contents('http://myexample.com/order.php?month=2012-03&json=1'), true);
echo "<table>";
foreach($aspData as $row){
  echo "<tr>";
  foreach($row as $colName => $colVal){
    echo "<td>$colVal</td>";
  }
  echo "</tr>";
}
echo "</table>";

Я не знаю ASP, но должна быть функция для преобразования массива в строку JSON.

...