2010-11-22 17 views
0

私のデータベースから画像を表示しようとしていますが、ブラウザ "item_Details.php?itemID = 1"2つのテーブルからデータ(画像とテキスト)を表示しようとしてエラーが発生しました

私はどこに行って見ましたか?私は間違ったことを見ましたが、何も見つかりませんでした。ここで

はテーブルです:

classified.php

:ここ

'CREATE TABLE `images` (
`imagesID` int(5) NOT NULL AUTO_INCREMENT, 
`itemID` int(5) NOT NULL, 
`categoryID` int(5) NOT NULL, 
`name` varchar(30) NOT NULL, 
`size` int(11) NOT NULL, 
`type` varchar(30) NOT NULL, 
`pix` blob NOT NULL, 
PRIMARY KEY (`imagesID`), 
KEY `categoryID` (`categoryID`), 
KEY `images_ibfk_1` (`itemID`), 
CONSTRAINT `images_ibfk_1` FOREIGN KEY (`itemID`) REFERENCES `items` (`itemID`) ON DELETE CASCADE ON UPDATE CASCADE, 
CONSTRAINT `images_ibfk_2` FOREIGN KEY (`categoryID`) REFERENCES `categories` 
(`categoryID`) ON DELETE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1' 

'CREATE TABLE `items` (
`itemID` int(5) NOT NULL AUTO_INCREMENT, 
`categoryID` int(5) NOT NULL, 
`itemName` char(25) NOT NULL, 
`item_Description` varchar(255) DEFAULT NULL, 
`price` char(10) DEFAULT NULL, 
`contactName` varchar(50) DEFAULT NULL, 
`phone` char(15) DEFAULT NULL, 
`email` varchar(50) DEFAULT NULL, 
`submitDate` date NOT NULL, 
`expireDate` date NOT NULL, 
`website` char(25) DEFAULT NULL, 
PRIMARY KEY (`itemID`) USING BTREE, 
KEY `submitDate` (`submitDate`), 
KEY `categoryID` (`categoryID`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1' 

は、私が新しいウィンドウで特定の項目の詳細を表示するために使用するコードです

//Table 3 Electrical Items 
$query3 = "SELECT * FROM {$table} WHERE categoryID='3'"; 
$result = mysql_query($query3); 
//let's get the number of rows in our result so we can use it in a for loop 
$numofrows = mysql_num_rows($result); 
if($numofrows == 0){ 
echo "<p class=spect>Electrical Items:</p><p>No entries yet</p> \n"; 
} 
else{ 
echo"<table id=mytable cellspacing=0 summary=Items from almacen database> 
<caption>Electricals: </caption>"; 
echo "<TR bgcolor=\"lightblue\"><TH>Item Name</TH><TH>Price</TH><TH>Posted On</TH></TR>\n"; 
for($i = 0; $i < $numofrows; $i++) { 
$row = mysql_fetch_array($result); //get a row from our result set 
$id=$row['itemID']; 
if($i % 2) { //this means if there is a remainder 
echo "<TR bgcolor=\"#F5FAFA\">\n"; 
} else { //if there isn't a remainder we will do the else 
echo "<TR bgcolor=\"#FFFFFF\">\n"; 
} 
echo "<TD><a href='item_Details.php?itemID=<?php=$id; ?>' target = '_blank'>{$row['itemName']}</a></TD> 
<TD>&pound;".number_format ($row['price'],2)."</TD><TD>".$row['submitDate']."</TD>\n"; 
echo "</TR>\n"; 
} } 
echo "</table><br/>"; 

item_details.php

$query1 = "SELECT * FROM images, items WHERE (images.itemID='$id' && items.itemID='$id')"; 
$result = mysql_query($query1); 

while ($row = mysql_fetch_array ($result)) 
{ 
header("Content-type: ".$row['type'].""); 
//header("Content-Disposition: attachment; filename=".$row['name'].""); 
echo"<table>"; 
echo"<tr>"; 
echo"<td colspan='2'> 
    <h2 style='font-size: large;'> ".$row['itemName']."</h2></td>\n"; 
echo "</tr>"; 
echo "<tr>"; 
echo"<td><img border='0' align='right' src='{$row['pix']}' alt='item Image' style='margin-left: 5px;'></td>\n"; 
echo"<tr>"; 
echo"<td colspan='2'> 
    <div>  
     <b>Price: </b>&pound;" .number_format ($row['price'],2). "<br /> 
     <b>Posted On: </b>" .$row['submitDate']. "<br />\n 
     </div><br> 
<b>Description: </b><p>" .$row['item_Description']. "<p><br /> 
<div ;='' style=clear: both;> 
    <h4 style='font-size: medium;'>Contact details:</h4> 
<b>Name: </b>" .$row['contactName']. "<br /> 
<b>E-mail: </b>".$row['email']." <br /><br /> 
</div></td>\n"; 
echo"</tr>\n"; 
} 
echo "</table><br/>"; 

私はclassified.php <a href=item_Details.php?itemID=$id>で書く場合は、ブラウザがItem_details.phpページの "item_Details.php?ITEMID = 1" を表示します。

ここで、<a href='item_Details.php? itemID=<?php=$id;?>と書き込むと、ブラウザはItem_details.phpページに何も表示しません。

いずれにしても写真は見えません。

ありがとうございました。 Hernan

+3

*道*あまりにも多くのコードを、少なくとも私の好みのために。特定の問題を特定できますか?生成されたHTMLの関連部分を(PHPソースコードではなく)表示できますか? –

+0

あまりにも多くのコードと詳細。要約は便利です。 –

+0

私はPekka'sとMcWafflestixのコメントを一歩遠くにして言います:* Way *私の好みのためにあまりにも多くのスパゲッティ。あなたのプレゼンテーションからあなたのロジックを分離することを検討したいかもしれません。デバッグ*をもっと簡単にするでしょう。 – Stephen

答えて

0

これは無効です:<?php=$id;?>

<?=$id;?>または<?php echo $id; ?>のいずれかを使用できます。

私は後者をより明示的に好みます。別に


私はあなたがレガシーアプリケーション上で作業しているかどうかわからないんだけど、またはこれは、あなたが書いている新しいコードである場合。新しいコードであれば、実際にはより良いコーディング手法を検討するのに、1日か2日かかります。私は論理の分離から始めるだろう。これを読んで試してみてください:http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=21

UPDATE
は実際に、これを読んで、それは良いでしょう:https://stackoverflow.com/questions/62617/whats-the-best-way-to-separate-php-code-and-html

+0

まだこのメッセージが表示されています!記事のおかげで私はコーディングを改善するのに少なくとも一週間は費やすべきです。私はあなたのアドバイスを取る。ありがとう – Hernan

+0

どのようなメッセージが表示されますか? – Stephen

関連する問題