2010-11-22 6 views
0

J'essaie d'afficher les images de ma base de données, mais je vois ce message sur mon navigateur "item_Details.php? ItemID = 1" ou rien du tout.Erreur lors de la tentative d'affichage des données (images et texte) de deux tables

J'ai regardé partout pour voir ce que j'ai fait de mal mais je ne trouve rien.

Voici les tableaux:

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

Voici le code que j'utilise pour afficher les détails sur un élément spécifique dans une nouvelle fenêtre:

classified.php

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

Si j'écris dans classified.php <a href=item_Details.php?itemID=$id>, le navigateur affiche "item_Details.php? Itemid = 1" sur la page Item_details.php.

Maintenant si écrire <a href='item_Details.php? itemID=<?php=$id;?> le navigateur n'affiche rien du tout sur la page Item_details.php.

De toute façon je ne peux pas voir les photos.

Nous vous remercions de votre aide. Hernan

+3

* Way * trop de code, au moins à mon goût. Pouvez-vous isoler un problème spécifique? Pouvez-vous montrer quelques parties pertinentes du code HTML généré (par opposition au code source PHP)? –

+0

Beaucoup trop de code et de détails. La synthèse est utile. –

+0

Je vais aller un peu plus loin dans les commentaires de Pekka et de McWafflestix en disant: * Manière * trop de spaghetti à mon goût. Vous pouvez vouloir séparer votre logique de votre présentation. Cela faciliterait le débogage * loin *. – Stephen

Répondre

0

Ceci n'est pas valide: <?php=$id;?>. Vous pouvez utiliser <?=$id;?> ou <?php echo $id; ?>.

Je préfère ce dernier car c'est plus explicite.

En plus
Je ne suis pas sûr si vous travaillez sur une application héritée, ou si ce nouveau code est que vous écrivez. S'il s'agit d'un nouveau code, vous devriez vraiment passer un jour ou deux (ou plus, si vous pouvez vous le permettre) à chercher de meilleures pratiques de codage. Je commencerais par séparer la logique d'une présentation. Essayez de lire ceci: http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=21

MISE À JOUR
En fait, lisez ceci, il vaut mieux: https://stackoverflow.com/questions/62617/whats-the-best-way-to-separate-php-code-and-html

+0

Il montre toujours ce message !!Merci pour l'article que je devrais passer au moins une semaine pour améliorer mon codage, comme vous pouvez remarquer que je suis nouveau en php. Je vais suivre votre conseil. Merci – Hernan

+0

Quel message est-il affiché? – Stephen

Questions connexes