Html output error with javascript

I have this php code with which I am trying to create a popup that will contain the content of the html file, however, after adding in the script tags, the html is not displayed. I tried to echo $ row2, but the word array is printed to the screen and nothing else.

<?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: I have fixed the errors that Roborg pointed out, however the script still won't load and give the exact error.

i updated the code above

0


source to share


4 answers


Apart from the absent </script>

,

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

should be

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

The function json_encode()

will take care of any quoting for you.



Edit:

<a href='#' onclick=makewindows()>

should be <a href='#' onclick='makewindows(); return false;'>

- there should be quotes, and return false

will stop you when you go to the "#" when you click a link.

Also, from memory, I'm not sure if you can open about: blank and then write for it - I think it sees this as cross-domain scripting. You might be better off creating a minimal "blank.html" file on your server and using that.

+3


source


Your <script

> tag is never closed and your javascript statements do not end with a semicolon. This could be the source of the problem.



0


source


You need to print an array like print_r($row2);

0


source


In this line:

$row2 = mysql_fetch_array($htmlset);

      

You are setting $row2

as an array representing the whole row of the result from your query. Even if "string" is only one field, it is still an array. If you only want to get the value of the first field, you can use mysql_result

.

Parameters:, resource $result , int $row [, mixed $field ]

so an example of use:

// 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


source







All Articles