views:

134

answers:

4

Hello,

I have this php code, with which I am trying to generate a popup window that will contain the contents of a html file, however after adding in the script tags, no html is displayed. I tried echoing out $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 will still not load and does not give a precise error.

i have updated the code above

+1  A: 

Your <script> tag is never closed and your javascript instructions are not ended with semicolons. It might be the source of the problem

Gonzalo Quero
+4  A: 

As well as the missing </script>,

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

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

The json_encode() function will take care of any quoting for you.

Edit:

<a href='#' onclick=makewindows()> should be <a href='#' onclick='makewindows(); return false;'> - You should have quotes there, and the return false will stop you getting taken to "#" when you click the link.

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

Greg
Is there any problem with mixing json with ajax? Is there any way to avoid writing temporay html files to the server all the time..or otherwise how would you use a blank.html? I have fixed the problems you highlighted, but there is still a script error that stops it from even being loaded.
Joshxtothe4
JSON and AJAX go very, very well together. blank.html wouldn't contain anything more than a minimal html page (doctype, <title>). You can then document.write to it with javascript.
Greg
Please add the script error to your question
Greg
There is no exact error, but I have pasted the current code..I don't see why it would be generating an error
Joshxtothe4
+1  A: 

You have to print_r an array, like print_r($row2);

method
+1  A: 

In this line:

$row2 = mysql_fetch_array($htmlset);

You are setting $row2 to be an array representing an entire row of the result from your query. Even if the "row" is just one field, it's still an array. If you want to get just the value of the first field, you can use mysql_result.

The parameters are: resource $result , int $row [, mixed $field ] so an example of the usage would be:

// 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);
nickf
I am fixing this now, but I think the error is lower than that, as a popup windows will not even open
Joshxtothe4