tags:

views:

75

answers:

1

In the midst of making my code OO, and ran upon this problem. The following class is giving me a weird problem. when I created the function CartTotal(), it echo'd out the proper values, BUT function DisplayListings(); did not display any MySQL data (both use $this->displaylistings). And if I change the order on my page in which I call those two functions, CartTotal(); yields nothing, and DisplayListings(); works as it should. So it seems as if using $this->displaylistings is messing it up. If you have an idea of what I'm doing what, please let me know. Here is the class: (still not done w/ it & need to do some normalization).

class Listing {

    public $displaylistings;
    public $displaycount;
    public $viewall;
    public $ShopperID;
    public $numrows;

    public function __construct() {

     $Person = new User();

     $ShopperID = mysql_query("SELECT * FROM users WHERE Username = '$Person->username'");
     $row_ShopperID = mysql_fetch_object($ShopperID);
     $this->ShopperID = $row_ShopperID->UserID;

     $this->displaylistings=mysql_query("SELECT * FROM nordstromlisting WHERE ShopperID = '$this->ShopperID'
     UNION ALL SELECT * FROM saksfifthavenuelisting WHERE ShopperID = '$this->ShopperID'
     UNION ALL SELECT * FROM guesslisting WHERE ShopperID = '$this->ShopperID'
     UNION ALL SELECT * FROM gnclisting WHERE ShopperID = '$this->ShopperID'
     UNION ALL SELECT * FROM urbanoutfitterslisting WHERE ShopperID = '$tnis->ShopperID'
     UNION ALL SELECT * FROM bananarepubliclisting WHERE ShopperID = '$this->ShopperID'
     UNION ALL SELECT * FROM americaneaglelisting WHERE ShopperID = '$this->ShopperID'
     UNION ALL SELECT * FROM neimanmarcuslisting WHERE ShopperID = '$this->ShopperID'
     UNION ALL SELECT * FROM footlockerlisting WHERE ShopperID = '$this->ShopperID'");
     if (mysql_num_rows($this->displaylistings) == 0) {
      echo "<div id='nolistings'><a href='shop.php'>You have no active listings, <br />click here to get started.</a></div>";
      $this->numrows = mysql_num_rows($this->displaylistings);
     }
     elseif (mysql_num_rows($this->displaylistings) == 1 ) {
      $this->displaycount = 1;
      $this->numrows = mysql_num_rows($this->displaylistings);
     }
     elseif (mysql_num_rows($this->displaylistings) == 2 || mysql_num_rows($this->displaylistings) > 2) {
      $this->displaycount = 2;
      $this->numrows = mysql_num_rows($this->displaylistings);
     }
    }

    public function CartTotal() {
     for ($i=0;$i<$this->numrows;$i++) {
      $row = mysql_fetch_assoc($this->displaylistings);
      echo $row['DiscountedPrice'];
     }
    }

    public function DeleteListing() {
     if ($_POST['deletelisting'] == 'yes') {
      $deleteid = $_POST['deleteid'];
      $deletestore = "$_POST[storename]";
      $idstorehistory = str_replace("listing", "history", $deletestore);
      $movetohistory = mysql_query("INSERT INTO $idstorehistory SELECT * FROM $identifystore WHERE id = $deleteid");
      $userdelete = mysql_query("DELETE FROM $deletestore WHERE id = $deleteid");
     }
    }

    public function DisplayListing() { 

      for($i=0;$i<$this->displaycount;$i++) {
      $row=mysql_fetch_assoc($this->displaylistings);

      // Check to what store this listing belongs to
      $nordstromtest=mysql_query("SELECT * FROM nordstromlisting WHERE ShopperID = '$this->ShopperID'");
      $nordstromstore=mysql_fetch_assoc($nordstromtest);
      if ($row == $nordstromstore) {
       $storename = "Nordstrom";
       $storetbl = "nordstromlisting";
      }

      $saksfifthavenuetest=mysql_query("SELECT * FROM saksfifthavenuelisting WHERE ShopperID = '$this->ShopperID'");
      $saksfifthavenuestore=mysql_fetch_assoc($saksfifthavenuetest);
      if ($row == $saksfifthavenuestore) {
       $storename = "Sak's Fifth Avenue";
       $storetbl = "saksfifthavenuelisting";
      }

      $neimanmarcustest=mysql_query("SELECT * FROM neimanmarcuslisting WHERE ShopperID = '$this->ShopperID'");
      $neimanmarcusstore=mysql_fetch_assoc($neimanmarcustest);
      if ($row == $neimanmarcusstore) {
       $storename = "Neiman Marcus";
       $storetbl = "neimanmarcuslisting";
      }

      $guesstest=mysql_query("SELECT * FROM guesslisting WHERE ShopperID = '$this->ShopperID'");
      $guessstore=mysql_fetch_assoc($guesstest);
      if ($row == $guessstore) {
       $storename = "GUESS";
       $storetbl = "guesslisting";
      }

      $americaneagletest=mysql_query("SELECT * FROM americaneaglelisting WHERE ShopperID = '$this->ShopperID'");
      $americaneaglestore=mysql_fetch_assoc($americaneagletest);
      if ($row == $americaneaglestore) {
       $storename = "American Eagle";
       $storetbl = "americaneaglelisting";
      }

      $gnctest=mysql_query("SELECT * FROM gnclisting WHERE ShopperID = '$this->ShopperID'");
      $gncstore=mysql_fetch_assoc($gnctest);
      if ($row == $gncstore) {
       $storename = "GNC";
       $storetbl = "gnclisting";
      }

      $footlockertest=mysql_query("SELECT * FROM footlockerlisting WHERE ShopperID = '$this->ShopperID'");
      $footlockerstore=mysql_fetch_assoc($footlockertest);
      if ($row == $footlockerstore) {
       $storename = "Foot Locker";
       $storetbl = "footlockerlisting";
      }

      $bananarepublictest=mysql_query("SELECT * FROM bananarepubliclisting WHERE ShopperID = '$this->ShopperID'");
      $bananarepublicstore=mysql_fetch_assoc($bananarepublictest);
      if ($row == $bananarepublicstore) {
       $storename = "Banana Republic";
       $storetbl = "bananarepubliclisting";
      }

      $urbanoutfitterstest=mysql_query("SELECT * FROM urbanoutfitterslisting WHERE ShopperID = '$this->ShopperID'");
      $urbanoutfittersstore=mysql_fetch_assoc($urbanoutfitterstest);
      if ($row == $urbanoutfittersstore) {
       $storename = "Urban Outfitters";
       $storetbl = "urbanoutfitterslisting";
      }

      //Delete old listings (test with minutes...)

      $timenow = date("Y-m-d");
      $time = strtotime($timenow);
      $storehistory = str_ireplace("listing","history","$storetbl");
      $movetohistory = mysql_query("INSERT INTO $storehistory SELECT * FROM $storetbl WHERE $time - datecreated >= 432000") or die ("Query failed: " . mysql_error() . " Actual query: " . $query);
      $deltefromlisting = mysql_query("DELETE FROM $storetbl WHERE $time - datecreated >= 432000") or die ("Query failed: " . mysql_error() . " Actual query: " . $query);

      //Item link modifactions
      if ($row['link'] != null) {
       $shortlink = substr($row['link'],0,30);
       $shortlink .= '...';
      }


      if ($row['itemsize'] != null ) {
       $mensshirt = $row['itemsize'];
      }

      if ($row['waistsize'] != 0) {
       $waistsize = $row['waistsize'];
       $w = 'Waist';
      }

      if ($row['lengthsize'] != 0) {
       $lengthsize = $row['lengthsize'];
       $l = 'Length';
      }

      if ($row['ladystopsize'] != null) {
       $ladystopsize = $row['ladystopsize'];
      }

      if ($row['ladysdresssize'] != 0) {
       $ladysdresssize = $row['ladysdresssize'];
      }

      if ($row['ladysbottomsize'] != 0) {
       $ladysbottomsize = $row['ladysbottomsize'];
      }

      if ($row['shoesize'] != 0) {
       $shoesize = $row['ladysshoesize'];
      }

      echo "<b><div id='storenametab'><span class='storename'>$storename</span></div></b>";
      echo "<div id='listings1'><span id='orderdetails'>Item Number : $row[itemnum] <br />";
      echo "Discount Price: $$row[DiscountedPrice] <br />";
      echo "Item Type : $row[itemtype]<br />";
      echo "Item Size :
      $mensshirt 
      $waistsize $w 
      $lengthsize $l 
      $ladystopsize 
      $ladysdresssize 
      $ladysbottomsize 
      $shoesize
      <br />";
      echo "Item Color: $row[itemcolor] <br />";

      if ($row['link'] != null) {
      echo "Item URL: <a href='$row[link]' target='_blank'>$shortlink</a><br />";
      }   
     //STATUS

      if ($row['VillainID'] == 0)
       echo "Status: Unclaimed <br />";

      else {

       $VillainPaypalEmail = mysql_query("SELECT PaypalEmail FROM villains WHERE VillainID = '$row[VillainID]'");
       $fetchVillain = mysql_fetch_assoc($VillainPaypalEmail);
       $VillainPaypal = $fetchVillain['PaypalEmail'];

       $itemname = "Item Number: $row[itemnum] -- $row[itemtype] -- $mensshirt $waistsize $w $lengthsize $l $ladystopsize $ladysdresssize $ladysbottomsize $shoesize -- $row[itemcolor]";
       $discprice = $row['DiscountedPrice'];
       $state = mysql_query("SELECT state from users WHERE Username = '$username'");
       $fetchstate = mysql_fetch_assoc($state);
       $state = $fetchstate['state'];

       switch ($storetbl) {
           case "nordstromlisting":
               $shipping = 8;
         if ($state == 'AZ' || 'CA' || 'CO' || 'CT' || 'FL' || 'GA' || 'HI' || 'IA' || 'ID' || 'IL' || 'IN' || 'KS' || 'MA' || 'MD' || 'MN' || 'MO' || 'NC' || 'NJ' || 'NV' || 'NY' || 'OH' || 'PA' || 'RI' || 'SD' || 'TX' || 'UT' || 'VA' || 'WA') {
          $tax = $discprice * .09;
         }
         else {
          $tax = $discprice * .02;
         }
               break;
           case "saksfifthavenuelisting":
         switch ($discprice) {
          case ($discprice <= 25):
           $shipping = 5;
           break;
          case ($discprice > 25 && $discprice <= 50):
           $shipping = 8;
           break;
          case ($discprice > 50 && $discprice <= 100):
           $shipping = 10;
           break;
          case ($discprice > 100 && $discprice <= 200):
           $shipping = 13;
           break;
          case ($discprice > 200 && $discprice <= 300):
           $shipping = 15;
           break;
          case ($discprice > 300 && $discprice <= 500):
           $shippig = 17;
           break;
          case ($discprice > 500):
           $shipping = 20;
           break;
         }
         if ($state == 'AL' || 'AZ' || 'CA' || 'CO' || 'CT' || 'FL' || 'GA' || 'IL' || 'IN' || 'LA' || 'MA' || 'MD' || 'MN' || 'MO' || 'NC' || 'NJ' || 'NV' || 'NY' || 'OH' || 'OK' || 'PA' || 'SC' || 'TX' || 'VA' || 'DC') {
          $tax = $discprice * .09;
         }
         else {
          $tax = .02;
         }
               break;
           case "neimanmarcuslisting":
         switch ($discprice) {
          case ($discprice <= 25):
           $shipping = 6;
           break;
          case ($discprice > 25 && $discprice <= 50):
           $shipping = 9;
           break;
          case ($discprice > 50 && $discprice <= 100):
           $shipping = 11.50;
           break;
          case ($discprice > 100 && $discprice <= 200):
           $shipping = 16.50;
           break;
          case ($discprice > 200 && $discprice <= 300):
           $shipping = 18.50;
           break;
          case ($discprice > 300 && $discprice <= 500):
           $shippig = 21.50;
           break;
          case ($discprice > 500 && $discprice <= 700):
           $shipping = 25.50;
           break;
          case ($discprice > 700 && $discprice <= 1000):
           $shipping = 29.00;
           break;
          case ($discprice > 1000):
           $shipping = 32.00;
           break;
         }
         if ($state == 'AZ' || 'CA' || 'CO' || 'FL' || 'GA' || 'HI' || 'IL' || 'MA' || 'MD' || 'MI' || 'MN' || 'MO' || 'NC' || 'NJ' || 'NV' || 'NY' || 'PA' || 'TX' || 'VA' || 'WA' || 'DC') {
          $tax = $discprice * .09;
         }
         else {
          $tax = $discprice * .02;
         } 
            break;
        case "urbanoutfitterslisting":
         switch ($discprice) {
          case ($discprice <= 50):
           $shipping = 6;
           break;
          case ($discprice > 25 && $discprice < 50):
           $shipping = 8;
           break;
          case ($discprice >= 50 && $discprice < 100):
           $shipping = 10;
           break;
          case ($discprice >= 100 && $discprice < 150):
           $shipping = 12;
           break;
          case ($discprice > 150):
           $shipping = 0;
           break;
         }
         if ($state == 'AL' || 'AZ' || 'CA' || 'CO' || 'CT' || 'FL' || 'GA' || 'IL' || 'IN' || 'KS' || 'LA' || 'MA' || 'MD' || 'MI' || 'MN' || 'MO' || 'NB' || 'NM' || 'NC' || 'OH' || 'OR' || 'NV' || 'NY' || 'PA' || 'RI' || 'SC' || 'TN' || 'TX' || 'UT' || 'VA' || 'VT' || 'WA' || 'WI' || 'DC') {
          $tax = $discprice * .09;
         }
         else {
          $tax = $discprice * .02;
         }
         break;
        case "gnclisting":
         $shipping = 6;
         break;
        case "bananarepubliclisting";
         $shipping = 7;
         //call Banana Republic for list of taxable states
         break;
        case "guesslisting":
         $shipping = 7.95;
         if ($state == 'AZ' || 'CA' || 'CO' || 'CT' || 'FL' || 'GA' || 'HI' || 'IL' || 'IN' || 'KS' || 'LA' || 'MA' || 'MD' || 'MI' || 'MN' || 'MO' || 'NJ' || 'NV' || 'NY' || 'NC' || 'OH' || 'PA' || 'RI' || 'SC' || 'TN' || 'TX' || 'VA' || 'WA') {
          $tax = $discprice * .09;
         }
         else {
          $tax = $discprice * .02;
         }
         break;
        case "footlockerlisting";
         $shipping = 6.99;
         if ($state == 'AK' || 'DE'|| 'MT' || 'NH' || 'OR') {
          $tax = $discprice * .02;
         }
         else {
          $tax = $discprice * .09;
         }
         break;
        case "americaneaglelisting":
         switch($discprice) {
          case ($discprice < 100):
          $shipping = 7.00;
          break;
          case ($discprice > 100):
          $shipping = 0;
          break;
         }
          $tax = $discprice * .09;
         break;
       }

       echo "Status: Claimed!"?>
       <form action='https://www.paypal.com/cgi-bin/webscr' target='blank' method='post'> 
       <input type='hidden' name='business' value='<?php echo $VillainPaypal ?>'> 
       <input type='hidden' name='cmd' value='_xclick'> 
       <input type='hidden' name='item_name' value="<?php echo $itemname ?>"> 
       <input type='hidden' name='shipping' value="<?php echo $shipping ?>"> 
       <input type='hidden' name='tax' value="<?php echo $tax ?>"> 
       <input type='hidden' name='amount' value='<?php echo $row['DiscountedPrice'] ?>'> 
       <input type='hidden' name='currency_code' value='USD'> 
       <input type='image' name='submit' border='0' 
       src='https://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif' 
       alt='PayPal - The safer, easier way to pay online'> 
       <img alt='blahblah' border='0' width='1' height='1' 
       src='https://www.paypal.com/en_US/i/scr/pixel.gif' > 
       </form>
       <br />
       <?php ;
     //STATUS
     }   
      ?><br /><form action="MyAccountNEW.php" method="POST">
       <input type="hidden" name="deletelisting" id="deletelisting" value="yes">
       <input type="hidden" name="deleteid" id="deleteid" value="<?php echo $row['id']; ?>">
       <input type="hidden" name="storename" id="storename" value="<?php echo "$storetbl"; ?>">
       <input type="submit" class="deletelistingbutton" value="Delete listing">
         </form>

      <?php

      echo "</span></div>";

      $mensshirt = "";
      $waistsize = "";
      $lengthsize = "";
      $ladystopsize = "";
      $ladysdresssize = "";
      $ladysbottomsize = "";
      $shoesize = "";
     }

    }
}
+3  A: 

You are consuming the same resource from the two different function.

If you read a row with mysql_fetch_something on a query handle (in this case $this->displaylistings) you can't read it a second time.

Try to put this line at the start of DisplayListing and CartTotal

mysql_data_seek($this->displaylistings, 0)

It should reposition the mysql internal cursor to the first row of the result set associated to $this->displaylistings. Let me know if it worked

Eineki