user2946964
user2946964

Reputation: 45

Displaying random product in a related product table of 5

I am creating a row of "product related table of x5" and using MYSQLcode RAND to generate RANDOM products and a exception clause using id!='$id' - where id is existing product that is being viewed currently.

However the problem is that all the product images generated were all of the same similar product image. Can anyone shed some light on this?

Pic for better reference:

include "MyOnlineStore/storescripts/connect_to_mysql.php";
$sql2          = mysql_query("SELECT * FROM bag WHERE id!='$id'ORDER BY RAND()LIMIT 5");
$productCount2 = mysql_num_rows($sql2); // count the output amount
if ($productCount2 > 0) {
    ?>
    <table border="1">
        <tr>    
    <?php
    while ($row2 = mysql_fetch_array($sql2)) {
        $idrelated    = $row2["id"];
        $imagerelated = $row2["image"];
        $titlerelated = $row2["title"];
    }
} else {
    echo "That item does not exist.";
    exit();
}
mysql_close();

HTML

<table border="1">
    <tr>
        <td>
            <a href="http://example.net/product.php?id=<?php echo $idrelated; ?>">
                <img src="admin/product/uploaded_files/<?php echo $imagerelated; ?>" width="100" height="100" alt="<?php echo $titlerelated; ?>" /> 
            </a>
        </td>
        <td>
            <a href="http://example.net/product.php?id=<?php echo $idrelated; ?>">
                <img src="admin/product/uploaded_files/<?php echo $imagerelated; ?>" width="100" height="100" alt="<?php echo $titlerelated; ?>" /> 
            </a>
        </td>
        <td>
            <a href="http://example.net/product.php?id=<?php echo $idrelated; ?>">
                <img src="admin/product/uploaded_files/<?php echo $imagerelated; ?>" width="100" height="100" alt="<?php echo $titlerelated; ?>" /> 
            </a>
        </td>
        <td>
            <a href="http://example.net/product.php?id=<?php echo $idrelated; ?>">
                <img src="admin/product/uploaded_files/<?php echo $imagerelated; ?>" width="100" height="100" alt="<?php echo $titlerelated; ?>" /> 
            </a>
        </td>
        <td>
            <a href="http://example.net/product.php?id=<?php echo $idrelated; ?>">
                <img src="admin/product/uploaded_files/<?php echo $imagerelated; ?>" width="100" height="100" alt="<?php echo $titlerelated; ?>" /> 
            </a>
        </td>
    </tr>
</table>

Upvotes: 1

Views: 1071

Answers (2)

Muhammad Raheel
Muhammad Raheel

Reputation: 19882

Your code should be something like this

include "MyOnlineStore/storescripts/connect_to_mysql.php";
$sql2          = mysql_query("SELECT * FROM bag WHERE id!='$id'ORDER BY RAND()LIMIT 5");
$productCount2 = mysql_num_rows($sql2); // count the output amount
if ($productCount2 > 0) {
    ?>
    <table border="1">
        <tr>    
    <?php
    while ($row2 = mysql_fetch_array($sql2)) {
        $idrelated    = $row2["id"];
        $imagerelated = $row2["image"];
        $titlerelated = $row2["title"];
        ?>
            <td>
                <a href="http://example.net/product.php?id=<?php echo $idrelated; ?>">
                    <img src="admin/product/uploaded_files/<?php echo $imagerelated; ?>" width="100" height="100" alt="<?php echo $titlerelated; ?>" /> 
                </a>
            </td>
        <?php
    }
?>
         </tr>
    </table>

Upvotes: 1

ppawel
ppawel

Reputation: 1056

As far as I can see from your code, the following variables:

$idrelated, $imagerelated, $titlerelated

remains unchanged after leaving the loop. So in each line you refer to the same variable and value.

If you want to keep use some array to keep all five values:

<?php 
$index = 0;
while (...) { 
   $relatedA[$index] = ...;
   $relatedB[$index] = ...;
   $relatedC[$index] = ...;
   $index++;
}
?>
...

<?php echo $relatedA[0]; ?>
<?php echo $relatedA[1]; ?>
...
<?php echo $relatedA[4]; ?>

The last you can put in the loop again to avoid redundant code.

UPDATE

Try to resist the temptation of putting echoes into the first loop where you fetch values - as it could result in hard to maintenance spaghetti-style code (unfortunately quite commonly seen in many php sources).

Upvotes: 1

Related Questions