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
As well as the missing
</script>,child1.document.write('.$row2['ARTICLE_DESC'].')should bechild1.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 thereturn falsewill 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.