Ошибка вывода HTML с помощью JavaScript - PullRequest
0 голосов
/ 01 декабря 2008

У меня есть этот php-код, с помощью которого я пытаюсь создать всплывающее окно, которое будет содержать содержимое html-файла, однако после добавления в теги сценария html не отображается. Я попытался отобразить $ row2, но массив слов выводится на экран и ничего больше.

<?php
session_start();
if (isset($_GET["cmd"]))
  $cmd = $_GET["cmd"];
else
  die("You should have a 'cmd' parameter in your URL");
 $pk = $_GET["pk"];
$con = mysql_connect("localhost","root","geheim");
if(!$con)
{
die('Connection failed because of' .mysql_error());
}
mysql_select_db("ebay",$con);
if($cmd=="GetAuctionData")
{
$sql="SELECT * FROM Auctions WHERE ARTICLE_NO ='$pk'";
$sql2="SELECT ARTICLE_DESC FROM Auctions WHERE ARTICLE_NO ='$pk'";
$htmlset = mysql_query($sql2);
$row2 = mysql_fetch_array($htmlset);
echo $row2;
echo '<script> 
function makewindows(){
child1 = window.open ("about:blank");
child1.document.write('.$row2["ARTICLE_DESC"].');
child1.document.close(); 
}
</script>';

$result = mysql_query($sql);
while ($row = mysql_fetch_array($result))
{
echo "<div id='leftlayer'>
    <strong>Article Number</strong> ".$row['ARTICLE_NO']."
    <p><strong>Article Name</strong></p> ".$row['ARTICLE_NAME']."
    <p><strong>Subtitle</strong></p> ".$row['SUBTITLE']."
    <p><strong>Username</strong></p> ".$row['USERNAME']."
    <p><strong>Total Selling</strong></p> ".$row['QUANT_TOTAL']."
    <p><strong>Total Sold</strong></p> ".$row['QUANT_SOLD']."
    <p><strong>Category</strong></p> ".$row['CATEGORY']."
    <p><strong>Highest Bidder</strong></p> ".$row['BEST_BIDDER_ID']."
  </div>
<div class='leftlayer2'>
  <strong>Current Bid</strong> ".$row['CURRENT_BID']."
  <p><strong>Start Price</strong></p> ".$row['START_PRICE']."
  <p><strong>Buyitnow Price</strong></p> ".$row['BUYITNOW_PRICE']."
  <p><strong>Bid Count</strong></p> ".$row['BID_COUNT']."
  <p><strong>Start Date</strong></p> ".$row['ACCESSSTARTS']."
  <p><strong>End Date</strong></p> ".$row['ACCESSENDS']."
  <p><strong>Original End</strong></p> ".$row['ACCESSORIGIN_END']."
  <p><strong>Auction Type</strong></p> ".$row['AUCTION_TYPE']."
</div>
<div class='leftlayer2'>
    <strong>Private Auction</strong></p> ".$row['PRIVATE_AUCTION']."
  <p><strong>Paypal Accepted</strong></p> ".$row['PAYPAL_ACCEPT']."
  <p><strong>Auction Watched</strong></p> ".$row['WATCH']."
  <p><strong>Finished</strong></p> ".$row['FINISHED']."
  <p><strong>Country</strong></p> ".$row['COUNTRYCODE']."
  <p><strong>Location</strong></p> ".$row['LOCATION']."
  <p><strong>Conditions</strong></p> ".$row['CONDITIONS']."
</div>
<div class='leftlayer2'>
  <strong>Auction Revised</strong></p> ".$row['REVISED']."
  <p><strong>Cancelled</strong></p> ".$row['PRE_TERMINATED']."
  <p><strong>Shipping to</strong></p> ".$row['SHIPPING_TO']."
  <p><strong>Fee Insertion</strong></p> ".$row['FEE_INSERTION']."
  <p><strong>Fee Final</strong></p> ".$row['FEE_FINAL']."
  <p><strong>Fee Listing</strong></p> ".$row['FEE_LISTING']."
  <p><a href='#' onclick='makewindows(); return false;'>Click for full description </a></p>
</div>";

$lastImg = $row['PIC_URL'];
echo "<div id='rightlayer'>Picture Picture
<img src=".$lastImg.">
</div>";

}

}
mysql_close($con);
?>

edit: я исправил ошибки, на которые указал Роборг, однако скрипт все равно не загрузится и не выдаст точную ошибку.

Я обновил код выше

Ответы [ 4 ]

3 голосов
/ 01 декабря 2008

А также пропавшие </script>,

child1.document.write('.$row2["ARTICLE_DESC"].') должно быть

child1.document.write(' . json_encode($row2["ARTICLE_DESC"]) . ');

Функция json_encode() позаботится о любом цитировании для вас.

Edit:

<a href='#' onclick=makewindows()> должно быть <a href='#' onclick='makewindows(); return false;'> - там должны быть кавычки, а return false остановит вас переводом на "#" при нажатии на ссылку.

Кроме того, из памяти я не уверен, что вы можете открыть о: пусто, а затем написать в него - я думаю, что это рассматривается как междоменный сценарий. Возможно, вам лучше создать минимальный файл blank.html на вашем сервере и использовать его.

0 голосов
/ 01 декабря 2008

В этой строке:

$row2 = mysql_fetch_array($htmlset);

Вы устанавливаете $row2 как массив, представляющий всю строку результата вашего запроса. Даже если «строка» - это только одно поле, это все равно массив. Если вы хотите получить только значение первого поля, вы можете использовать mysql_result.

Параметры: resource $result , int $row [, mixed $field ], поэтому пример использования будет:

// get the first field of the first row
$fieldVal = mysql_result($htmlset, 0);

// get the third field
$fieldVal = mysql_result($htmlset, 0, 2);

// get the first field of the 2nd row
$fieldVal = mysql_result($htmlset, 1);
0 голосов
/ 01 декабря 2008

Вы должны напечатать_r массив, как print_r($row2);

0 голосов
/ 01 декабря 2008

Ваш тег <script> никогда не закрывается, и ваши инструкции по JavaScript не заканчиваются точкой с запятой. Это может быть источником проблемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...