Jump to content

PHP page construction


cdoyle

Recommended Posts

Hi,

This something I've had trouble with when making pages, and was hoping someone can give some advice

 

I am working on a new page for my game, where users can post and sell items.

One problem I'm running into is the page loads and you can select a market you would like to enter,  when you click on a category I want the page to reload and show the items from that category. 

 

But what is happening is the page reloads with the listings, but the market categories still appear under the table of items.

 

You can see what I mean here.

 

http://www.caraudiocentral.net/CAC_Mafia_Test_Site/marketnew.php

 

What do I need to do to make it not show the categories under the listings.

 

Here is my code

 

include("lib.php");
    define("PAGENAME", "CAC Public Market");
    $player = check_user($secret_key, $db);
    $getcategories =$db->execute("SELECT `Weapon_Type`, `ID` FROM weapon_type");
    include("templates/private_header.php");
    
    if ($_GET['act'] == "cat" )
    {
        
        $viewmarket = $db->execute("SELECT c.market_ID as mID, c.Item_Sold_ID, c.Seller_ID, c.Price, c.days_left, p.username, p.id as pid, b.id as wid, b.name as wname, b.type as wtype FROM market_new c 
INNER JOIN players p ON c.Seller_ID = p.id
INNER JOIN blueprint_items b ON c.Item_Sold_ID = b.id 
Where b.type=?", array($_GET['catid']));
        if ($viewmarket->recordcount() == 0)
        { 
            echo "Sorry, No items for sale in this Market ";
        }
        else 
        {
            echo "<table width=\"100%\" border=\"1\">";
            echo "<tr align=\"center\">";
            echo "<td><h3>Item</h3></td>";
            echo "<td><h3>Seller</h3></td>";
            echo "<td><h3>Cost</h3></td>";
            echo "<td><h3>Days Left</h3></td>";
            echo "<td><h3>Purchase</h3></td>";
            while ($marketview = $viewmarket->fetchrow())
            {
                echo "<tr>";
                echo "<td>" . $marketview['wname'] . "</td>";
                echo "<td>" . $marketview['username'] . "</td>";
                echo "<td>" . $marketview['Price'] . "</td>";
                echo "<td></td>";
                echo "<td><a href=\"marketnew.php?act=buy&buyid=" . $marketview['mID'] . "\">Buy</a><br /></td>";
                echo "</tr>";
            }
            echo "</table>";    
            
        }
    }

    if ($_GET['act'] == "buy")
    {   
        
        if ($player->id == $marketview['Seller_ID']) 
        {
        
            echo "You can't buy your own items dummy<p>";
            echo "<a href=\"home.php\">Home</a>\n";
        }
        
    }   
    else
    {
        echo "Please Select a Market to search";
        echo "<table width=\"100%\" border=\"1\">";
        echo "<tr>";
        while ($categories = $getcategories->fetchrow())
        {
            echo "<td>";
            echo "<a href=\"marketnew.php?act=cat&catid=" . $categories['ID'] . "\">" .  $categories['Weapon_Type'] . "</a><br />";
            echo "</td>";
            echo "</tr>";
        }
    
        echo "</table>";
    
        
    }
    include("templates/private_footer.php"); 
?>

 

Another question I have too,  what is the correct way to validate that the $_Get's are not something it shouldn't be?  I've been searching and see so many ways of doing different checks but not really sure which one is correct, or which ones are really needed

Link to comment
Share on other sites

You need an elseif:

 

<?php
    if ($_GET['act'] == "cat" )
    {
...
    }
    if ($_GET['act'] == "buy")
    {   
...
    }   
    else
    {
...
    }
?>

should be

<?php
    if ($_GET['act'] == "cat" )
    {
...
    }
    elseif ($_GET['act'] == "buy")
    {   
...
    }   
    else
    {
...
    }
?>

 

Link to comment
Share on other sites

In the 'cat' part there is a <tr> that you are not closing, it's the first one.

In else while you are echoing one <tr> and inside you echo I don't know how many </tr>'s (depends on what the $getcategories->fetchrow() returns you)

 

Check does and maybe you'll have your problem fixed

Link to comment
Share on other sites

You need an elseif:

 

<?php
    if ($_GET['act'] == "cat" )
    {
...
    }
    if ($_GET['act'] == "buy")
    {   
...
    }   
    else
    {
...
    }
?>

should be

<?php
    if ($_GET['act'] == "cat" )
    {
...
    }
    elseif ($_GET['act'] == "buy")
    {   
...
    }   
    else
    {
...
    }
?>

 

 

thank you, that worked!

 

With my $_Gets  how should I validate those to make sure they are numbers and nothing else?

I keep finding so many different methods, but I just want to know what others use?

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.