Item mall Problem

This is guide mostly for website tools and code, for example CMS or registration scripts.
There can also be tools.

Moderators: osRose dev team, ospRose dev team, osiRose dev team, Moderators

Item mall Problem

Postby veveto on Thu Dec 29, 2011 9:00 am

look the itemmall its down .. i want to put it in the bottom >.> can some one help
Image
veveto
Smoulie
Smoulie
 
Posts: 41
Joined: Sun Aug 15, 2010 1:31 am

Re: Item mall Problem

Postby hoegarden31 on Fri Dec 30, 2011 2:21 am

You have to change :
option 1) the width of your body
option 2) the width of the table in the item_mall.

Option 1 can be changed in the css file and option 2 in the php script of the item_mall.
if you still have trouble, send me the link to your item mall, and i will tell you exactly what you must change.
I'm the one and only. In heaven and on earth.
Image
hoegarden31
Rackie
Rackie
 
Posts: 150
Joined: Sun Nov 13, 2011 7:13 pm

Re: Item mall Problem

Postby veveto on Fri Dec 30, 2011 9:53 am

thanks but i didnt know how lol
  1. <style type="text/css">
  2. /*
  3. .type_11 {
  4.     background:#99CCFF;
  5. }
  6. .type_1 {
  7.     background:#CCFF99;
  8. }
  9. .type_13 {
  10.     background:#FFFF99;
  11. }
  12. .type_6 {
  13.     background:#ff8c9e;
  14. }
  15. .type_2, .type_3, .type_4, .type_5, .type_7, .type_8, .type_9,  {
  16.     background:##66CC00;
  17. }
  18. */
  19. .error_block {
  20.     color: #FF0000;
  21. }
  22. .info_block {
  23.     color: #FF8000;
  24. }
  25. .ok_block {
  26.     color: #008000;
  27. }
  28. </style>
  29. <script language="JavaScript" type="text/javascript">
  30.     <!--
  31.     function conf_purchase( item, quantity, price) {
  32.       if (window.confirm("Are you sure you want to purchase "+quantity+" "+item+" for "+price+"? This action can not be rolled back!") ) {
  33.         //window.location.href = to;
  34.         return true;
  35.       } else {
  36.         return false;
  37.       }
  38.     }
  39. </script>
  40. <?php
  41.  
  42.  
  43. session_start();
  44.  
  45. ################################################
  46. # Script by Rifke for the osrose compunity
  47. # date: 22 Januari 2009
  48. ################################################
  49.  
  50. ############ MySQL connection remove if you already have one #############
  51. mysql_connect('localhost:3306', 'root', 'wa7shxal3in');
  52. mysql_select_db('roseon');
  53.  
  54. ########### Account information ##################
  55.  
  56. include('class.table.inc.php');
  57.  
  58. $item_mall = new itemmallv2();
  59. // Configuring some data
  60. $item_mall->setlog(true); // enable/disable to create an information stream of who bought what
  61. $item_mall->setaccount_id( ( isset($_SESSION['user_account_id']) ) ? $_SESSION['user_account_id'] : -1 ); // set the users account ID
  62. $item_mall->setalevel(100); // set the users access level
  63.  
  64.  
  65. // A tiny login screen!
  66. if ( ($_SERVER['REQUEST_METHOD'] == 'POST') ) {
  67.     $sql = "SELECT id FROM accounts WHERE username = '%s' AND password = '%s';";
  68.     $sql = sprintf($sql, mysql_real_escape_string($_POST['user_name']), md5($_POST['password']));
  69.     $res = @mysql_query($sql);
  70.     if ( $res === false ) {
  71.         echo '<p class="error_block">Problem with loggin in</p>';
  72.     } elseif ( mysql_num_rows($res) == 0 ) {
  73.         echo '<p class="error_block">Invalid combination username/password</p>';
  74.     } else {
  75.         echo '<p class="ok_block">Valid login</p>';
  76.         $_SESSION['user_account_id'] = mysql_result($res, 0);
  77.     }
  78. }
  79. if ( isset($_SESSION['user_account_id']) ) {
  80.     #echo 'Welcome: ' . $_SESSION['user_account_id'] . '<br />';
  81. } else {   
  82.     echo '
  83.     <form action="" method="post">
  84.         User name: <input type="text" name="user_name" id="user_name">
  85.         Password: <input type="password" name="password" id="password">
  86.         <input type="submit" name="login" id="login" value="login">
  87.     </form>
  88.     ';
  89. }
  90.  
  91.  
  92.  
  93. // variables
  94. $i_cid = ( isset($_GET['i_cid']) && is_numeric($_GET['i_cid']) ) ? $_GET['i_cid'] : 0;
  95. $i_par = ( isset($_GET['i_par']) && is_numeric($_GET['i_par']) ) ? $_GET['i_par'] : -1;
  96. $i_pur = ( isset($_GET['i_pur']) && is_numeric($_GET['i_pur']) ) ? $_GET['i_pur'] : 0;
  97.  
  98. // make a breadcrum
  99. $item_mall->breadcrum($i_par,$i_cid);
  100.  
  101. // add item to cart
  102. if ( isset($_GET['i_pur']) && $i_pur > 0 ) {
  103.     $item_mall->addItemToCar($i_pur);
  104. }
  105.  
  106. if ( isset($_GET['i_cid']) && $i_cid > 0 ) {
  107.  
  108.     $item_mall->getCategory($i_cid);
  109.    
  110. } else {
  111.     $item_mall->getCategory();
  112. }
  113.  
  114.  
  115. class itemmallv2
  116. {
  117.     private $log = false;
  118.     private $alevel = 300;
  119.     private $table_prefs = NULL;
  120.     private $breadcrum = array();
  121.     private $account_id;
  122.     function __construct() {
  123.         $this->table_prefs = array( 'cellspacing' => 0,
  124.                                     'cellpading' => 2,
  125.                                     'width'=> '100%',
  126.                                     'border' => 0,
  127.                                     'style'=> "td,th { font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 1.1em; }"
  128.                                     );
  129.     }
  130.     // Getters
  131.     function getlog() {
  132.         return $this->log;
  133.     }
  134.     function getalevel() {
  135.         return $this->alevel();
  136.     }
  137.     function gettable_prefs() {
  138.         return $this->table_prefs;
  139.     }
  140.     function getaccount_id(){
  141.         return $this->account_id();
  142.     }
  143.     // Setters
  144.     function setlog($a) {
  145.         $this->log = $a;
  146.     }
  147.     function setalevel($a) {
  148.         $this->alevel = $a;
  149.     }
  150.     function settable_prefs($a) {
  151.         $this->table_prefs = $a;
  152.     }
  153.     function setaccount_id($a) {
  154.         if ( is_numeric($a) )
  155.             $this->account_id = $a;
  156.     }
  157.    
  158.     /*
  159.     * @update   04/02/2009
  160.     * @desc get storage money/donation
  161.     * @param    string $type , int $amount
  162.     * @return   boolean
  163.     */
  164.     function decreaseMoney($type,$amount) {
  165.         if ( $this->account_id == -1 ) {
  166.             echo '<p class="error_block">You are not logged in.</p>';
  167.             return false;
  168.         }
  169.         if ( $type == 'D' ) {
  170.             $sql = "SELECT donation FROM accounts WHERE id=%d;";
  171.         } else {
  172.             $sql = "SELECT zulystorage FROM accounts WHERE id=%d;";
  173.         }
  174.         $sql = sprintf($sql,$this->account_id);
  175.         $res = @mysql_query($sql);
  176.         if ( $res === false ) {
  177.             echo '<p class="error_block">There has been a problem with adding your item.</p>';
  178.             $this->dbError('Database error, ' .mysql_error(). ' in ' . nl2br($sql) .' <br />');
  179.         } elseif ( mysql_fetch_assoc($res) == 0 ) {
  180.             echo 'Your account does not exists.';
  181.         } else {
  182.             $a = mysql_result($res,0);
  183.             if ( ($a-$amount) < 0 )
  184.                 echo '<p class="info_block">You have not enough money to purchase this item.</p>';
  185.             else {
  186.                 if ( $type == 'D' ) {
  187.                     $sql = "UPDATE accounts SET donation=donation-%d WHERE id=%d AND online=0;";
  188.                 } else {
  189.                     $sql = "UPDATE accounts SET zulystorage=zulystorage-%d WHERE id=%d AND online=0;";
  190.                 }
  191.                 $sql = sprintf($sql,$amount, $this->account_id);
  192.                 $res = @mysql_query($sql);
  193.                 if ( $res === false ) {
  194.                     echo '<p class="error_block">Please make sure you are logged out the game!</p>';
  195.                     $this->dbError('Database error, ' .mysql_error(). ' in ' . nl2br($sql) .' <br />');
  196.                 } elseif ( mysql_affected_rows() == 1 ) {
  197.                     return true;
  198.                 } else {
  199.                     echo '<p class="error_block">Could not purchase your item, please make sure you are logged out of the game!</p>';
  200.                 }
  201.                 return false;
  202.             }
  203.         }
  204.     }
  205.     /*
  206.     * @update   23/01/2009
  207.     * @desc     make a breadcrum so the users can easly hit the 'back' button'
  208.     * @param    int $i_cid
  209.     * @return   void
  210.     */
  211.     function breadcrum($i_cid) {
  212.         $b = NULL;
  213.         //$b = '<a href="'.$this->getUrl().'&amp;i_par='.$i_par.'">'.$this->getBreadcrumName($i_cid).'</a> &raquo';
  214.         echo $this->getBreadcrums($i_cid);
  215.         $m = count( $this->breadcrum )-1;
  216.         echo '<div><a href="'.$this->getURL(true).'">Main</a> ';
  217.         if ( $m > 0 ) echo ' &raquo; ';
  218.         foreach ( $this->breadcrum as $index => $value )  {
  219.             if ( $m == $index ) {
  220.                 echo ' &raquo; ';
  221.             }
  222.             echo '<a href="'.$this->getURL(true).'&amp;i_cid='.$value[0].'&amp;i_par='.$value[1].'">'.$value[2].'</a>';
  223.            
  224.         }
  225.         echo '</div>';
  226.     }
  227.  
  228.     function getBreadcrums($i) {
  229.        
  230.         $sql = "SELECT ctitle,cparent FROM mall_category WHERE cid=%d;";
  231.         $sql = sprintf($sql,$i);
  232.         $res = @mysql_query($sql);
  233.         if ( $res === false ) {
  234.             $this->dbError('Database error, ' .mysql_error(). ' in ' . nl2br($sql) .' <br />');
  235.         } elseif ( mysql_num_rows($res) == 0 ) {
  236.            
  237.         } else {
  238.             $r = mysql_fetch_assoc($res);
  239.             $this->getBreadcrums($r['cparent']);
  240.             $this->breadcrum[] = array($i,$r['cparent'],$r['ctitle']);
  241.         }
  242.     }
  243.     /*
  244.     * @update   02/02/2009
  245.     * @desc     add an item to a user's cart
  246.     * @param    int $iid
  247.     * @return   void
  248.     */
  249.     function addItemToCar($iid) {
  250.         // Check if this item already is in the cart else re raise it
  251.         $sql = "SELECT mc.quantity FROM mall_cart as mc WHERE mc.uid = %d, mc.iid = %d;";
  252.         $sql = sprintf($sql,$this->account_id,$iid);
  253.         $res = @mysql_query($sql);
  254.        
  255.    
  256.         // get some item information (if possible offcourse)
  257.         $sql = "SELECT
  258.                     fs.quantity,
  259.                     fs.payment,
  260.                     fs.price,
  261.                     fs.ref_able,
  262.                     fs.soc_able,
  263.                     mi.item_name,
  264.                     mi.item_type,
  265.                     mi.item_id
  266.                 FROM
  267.                     mall_forsale AS fs
  268.                     Inner Join mall_items AS mi ON mi.iid = fs.iid
  269.                 WHERE
  270.                     fs.sid = %d;
  271.                 ";
  272.         $sql = sprintf($sql,$iid);
  273.         $res = @mysql_query($sql);
  274.         if ( $res === false ) {
  275.             $this->dbError('Database error, ' .mysql_error(). ' in ' . nl2br($sql) .' <br />');
  276.         } elseif ( mysql_num_rows($res) == 0 ) {
  277.             echo '<p class="error_block">The given item doesn not exist anymore.</p>';
  278.         } else {
  279.             $r = mysql_fetch_assoc($res);
  280.             $slotnum = $this->getFreeSlot();
  281.             if ( $slotnum == 0 || $slotnum > 160 ) {
  282.                 echo '<p class="error_block">You have no free storage slot(s) available.</p>';
  283.             }
  284.             else {
  285.                 if ( $this->decreaseMoney($r['payment'],$r['price']) === true ) {
  286.                     $sql = "INSERT INTO storage (owner,itemnum,itemtype,refine,slotnum,socketed,count) VALUES (%d,%d,%d,%d,%d,%d,%d);";
  287.                    
  288.                     $sql = sprintf($sql,$this->account_id,$r['item_id'],$r['item_type'],$this->gradeToServerGrade($r['ref_able']),$slotnum,$r['soc_able'],$r['quantity']);
  289.                     $res = @mysql_query($sql);
  290.                     if ( $res === false ) {
  291.                         echo '<p class="error_block">Adding your item to your shoping cast has failed.</p>';
  292.                         $this->dbError('Database error, ' .mysql_error(). ' in ' . nl2br($sql) .' <br />');
  293.                         $this->decreaseMoney($r['payment'],-$r['price']); // re-adding the money to the account when failed.
  294.                     } elseif ( mysql_affected_rows() == 1 ) {
  295.                         echo '<p class="ok_block">'.$r['item_name'] . ' has been added to your storage<p>';
  296.                         $sql = "INSERT INTO mall_log (date_purchased,owner,itemname,itemid,itemtype,quantity,price,payment,socket,refine,slot) VALUES
  297.                                 (NOW(),%d,'%s',%d,%d,%d,%d,'%s',%d,%d,%d);";
  298.                         $sql = sprintf($sql,$this->account_id,$r['item_name'],$r['item_id'],$r['item_type'],$r['quantity'],$r['price'],$r['payment'],$r['soc_able'],$r['ref_able'],$slotnum);
  299.                         mysql_query($sql);
  300.                     } else {
  301.                         echo '<p class="error_block">Your item is not added to your storage.</p>';
  302.                         $this->decreaseMoney($r['payment'],-$r['price']); // re-adding the money to the account when failed.
  303.                     }
  304.                 }
  305.             }
  306.         }
  307.     }
  308.    
  309.     /*
  310.     * @update   04/02/2009
  311.     * @desc     Get a free slot
  312.     * @param    void
  313.     * @return   int
  314.     */
  315.     function getFreeSlot() {
  316.         $slotnum = 0;
  317.         $sql = "SELECT slotnum FROM storage WHERE owner=%d;";
  318.         $sql = sprintf($sql,$this->account_id);
  319.         $res = mysql_query($sql);
  320.         if ( !($res === false) ) {
  321.             if ( mysql_num_rows($res) > 0 ) {
  322.                 while ( $r = mysql_fetch_assoc($res) ) {
  323.                     $slots[] = $r['slotnum'];
  324.                 }   
  325.             }
  326.         }
  327.         for ( $x = 159; $x >= 1; $x--) {
  328.             if ( !@in_array($x,$slots) ) {
  329.                 $slotnum = $x;
  330.                 break;
  331.             }
  332.         }
  333.         return $slotnum;
  334.     }
  335.     /*
  336.     * @update   22/01/2009
  337.     * @desc show content of a category
  338.     * @param    int $cid
  339.     * @return   void
  340.     */
  341.     function getItems($cid) {
  342.         $sql = "SELECT
  343.                     fs.sid,
  344.                     fs.price,
  345.                     fs.payment,
  346.                     fs.price,
  347.                     fs.quantity,
  348.                     fs.ref_able,
  349.                     fs.soc_able,
  350.                     i.image,
  351.                     i.item_type,
  352.                     i.item_id,
  353.                     i.item_name,
  354.                     i.item_desc
  355.                 FROM
  356.                     mall_forsale AS fs
  357.                     Inner Join mall_items AS i ON i.iid = fs.iid
  358.                 WHERE
  359.                     fs.cid = %d
  360.                 ;
  361.                 ";
  362.         $sql = sprintf($sql,$cid);
  363.         $res = @mysql_query($sql);
  364.         if ( $res === false ) {
  365.             $this->dbError('Database error, ' .mysql_error(). ' in ' . nl2br($sql) .' <br />');
  366.         } elseif ( mysql_num_rows($res) == 0 ) {
  367.             echo '<p class="error_block">Sorry there are no items available for the selected category.</p>';
  368.         } else {
  369.             // maken van table
  370.             $tbl_cat = new table($this->table_prefs);
  371.             $tbl_cat->table_header( array("Item name", "Quantity", "Socket", "Refine", "Payment", "Price", NULL) );
  372.             while ( $r = mysql_fetch_assoc($res) ) {
  373.                 // Keep the header layout in mind or your table will be screwed up... I could built in a check for that but that would just make it havier :)
  374.                 if ( $r['price'] > 0 ) {
  375.                     $params = "'".htmlentities($r['item_name'])."', '".htmlentities($r['quantity'])."', '".htmlentities(number_format($r['price']).' '.$r['payment'])."'";
  376.                    
  377.                     $values = array($r['item_name']. ' <span style="font-size: 0.8em;">('.$r['item_desc']. '</span>)',
  378.                                     $r['quantity'],
  379.                                     ( $r['soc_able'] == 1 ) ? 'Y' : 'N',
  380.                                     ($r['ref_able'] > 0 ) ? 'Grade '.$r['ref_able'] : 'N',
  381.                                     number_format($r['price']).$r['payment'],
  382.                                      '<a href="'.$this->getURL().'&amp;i_pur='.$r['sid'].'" onClick="return conf_purchase('.$params.');">Purchase</a>'
  383.                                     );
  384.                     $tbl_cat->add_values($values, array('valign' => 'top', 'class' => 'type_'.$r['item_id']) );
  385.                 }
  386.             }
  387.             $tbl_cat->printTable();
  388.         }
  389.     }
  390.    
  391.     /*
  392.     * @update   22/01/2009
  393.     * @desc Getting categories and sub categories.
  394.     * @param    int $cid
  395.     * @return   void
  396.     */
  397.     function getCategory($cid = -1) {
  398.         if ( !is_numeric($cid) ) {
  399.             echo '<p class="error_block">Your (sub)category id is invalid.</p>';
  400.         } else {
  401.             $sql = "SELECT
  402.                         c.cid,
  403.                         c.ctitle,
  404.                         c.cdesc,
  405.                         c.cparent
  406.                     FROM
  407.                         mall_category as c
  408.                     WHERE
  409.                         c.cparent = %d AND
  410.                         c.cminlevel <= %d AND
  411.                         c.chidden = 0;
  412.                     ";
  413.             $sql = sprintf($sql,$cid,$this->alevel);
  414.             $res = @mysql_query($sql); // error subpression
  415.             if ( $res === false ) {
  416.                 $this->dbError('Database error, ' .mysql_error(). ' in ' . nl2br($sql) .' <br />');
  417.             } elseif ( mysql_num_rows($res) == 0 ) {
  418.                 if ( isset($_GET['i_par']) && $_GET['i_par'] < 0 )
  419.                     echo '<p class="error_block">Sorry there are no categories available for the selected category.</p>';
  420.                 else
  421.                     $this->getItems($cid);
  422.             } else {
  423.                 $tbl_cat = new table($this->table_prefs);
  424.                 $tbl_cat->table_header( array("Category name", "Sub Categories", "Options") );
  425.                     while ( $r = mysql_fetch_assoc($res) ) {
  426.                         // Keep the header layout in mind or your table will be screwed up... I could built in a check for that but that would just make it havier :)
  427.                         $values = array( $r['ctitle']. ' <span style="font-size: 0.8em;">('.$r['cdesc']. '</span>)',
  428.                                          $this->deep_out($r['cid']),
  429.                                          '<a href="'.$this->getURL().'&amp;i_cid='.$r['cid'].'&amp;i_par='.$r['cparent'].'">View</a>'
  430.                                         );
  431.                         $tbl_cat->add_values($values, array('valign' => 'top') );
  432.                     }
  433.                 $tbl_cat->printTable();
  434.             }
  435.         }
  436.     }
  437.     /*
  438.     * @update   22/01/2009
  439.     * @desc Deep out a category
  440.     * @param    int $cid
  441.     * @return   string $c
  442.     */
  443.     function deep_out($cid) {
  444.         $c = Null;
  445.         $sql = "SELECT
  446.                     c.cid,
  447.                     c.ctitle,
  448.                     c.cparent
  449.                 FROM
  450.                     mall_category as c
  451.                 WHERE
  452.                     c.cparent = %d AND
  453.                     c.cminlevel <= %d AND
  454.                     c.chidden = 0;
  455.                 ";
  456.         $sql = sprintf($sql,$cid,$this->alevel);
  457.         $res = @mysql_query($sql); // error subpression
  458.         if ( $res === false ) { 
  459.             // ah shame, but no hard feelings acutaly
  460.         } elseif ( mysql_num_rows($res) == 0 ) {
  461.             // already set
  462.             $c = 'None available';
  463.         } else {
  464.             while ( $r = mysql_fetch_assoc($res) ) {
  465.                 $c .= '<a href="'.$this->getURL().'&amp;i_cid='.$r['cid'].'&amp;i_par='.$r['cparent'].'">'.$r['ctitle'].'</a> <br />';
  466.             }
  467.         }
  468.         return $c;
  469.     }
  470.     /*
  471.     * @update   22/01/2009
  472.     * @desc get a url
  473.     * @param    none
  474.     * @return   string $s
  475.     */
  476.     function getURL($bSkip = false) {
  477.         if ( isset($_GET) ) {
  478.         $i = 0;
  479.         $s = NULL;
  480.         $skip = array('i_cid', 'i_fid','i_pur','i_del', 'i_par');
  481.         $skip_a = array('i_pur');
  482.             foreach ( $_GET AS $index => $waarde ) {
  483.                 if ( (in_array($index,$skip) && $bSkip === true ) || in_array($index,$skip_a) ) {
  484.                
  485.                 } else {
  486.                     $s .= ($i==0) ? '?'.$index.'='.$waarde : '&amp;'.$index.'='.$waarde;
  487.                     $i++;
  488.                 }
  489.             }
  490.         return $s;
  491.         }
  492.     }
  493.     /*
  494.     * @update   04/02/2009
  495.     * @desc     Make some kind of log to track when, how many times a user has bought something
  496.     * @param    string itemname, int itemid, int itemtype, int quantity, int price, string payment, int socket, int refine
  497.     * @return   void
  498.     */
  499.     function addTransactionToLog($itemname,$itemid,$itemtype,$quantity,$price,$payment,$socket,$refine,$slot) {
  500.         if ( $this->log === true ) {
  501.             $sql = "INSERT INTO mall_log (date_purchased,owner,itemname,itemid,itemtype,quantity,price,payment,socket,refine,slot) VALUES
  502.                     (NOW(),%d,'%s',%d,%d,%d,%d,'%s',%d,%d,%d);";
  503.             $sql = sprintf($sql,$this->account_id,$itemname,$itemid,$itemtype,$quantity,$price,$payment,$socket,$refine,$slot);
  504.             echo $sql;
  505.             $res = mysql_query($sql);
  506.         }
  507.     }
  508.     /*
  509.     * @update   04/02/2009
  510.     * @desc give a grade (0-9) and the function wil convert it in a useable grade to work with for the server (that it will acutaly be refined)
  511.     * @param    int grade
  512.     * @return   int server_grade
  513.     */
  514.     function gradeToServerGrade($grade) {
  515.         $RefiningGrades = array(0 => 0, 1 => 16, 2 => 32, 3 => 48, 4 => 64, 5 => 80, 6 => 96, 7 => 112, 8 => 128, 9 => 144);
  516.        
  517.         if ( $RefiningGrades[$grade] != null ) {
  518.             $server_grade = $RefiningGrades[$grade];
  519.         }
  520.         else {
  521.             $server_grade = 0;
  522.         }
  523.             return $server_grade;
  524.     }
  525.     function dbError($msg) {
  526.         // GM only
  527.         if ( $this->alevel >= 300 )
  528.             echo '<p clas="error_block">DB ERROR: ' .$msg .'</p>';
  529.     }
  530. }
  531. ?>
veveto
Smoulie
Smoulie
 
Posts: 41
Joined: Sun Aug 15, 2010 1:31 am

Re: Item mall Problem

Postby hoegarden31 on Fri Dec 30, 2011 1:48 pm

You have to change this line :

into a lower value.
But i just changed the width of the website. It's now larger so that i could let the table at 100%.
I'm the one and only. In heaven and on earth.
Image
hoegarden31
Rackie
Rackie
 
Posts: 150
Joined: Sun Nov 13, 2011 7:13 pm


Return to PHP / Web Guides, Scripts and tools.

Who is online

Users browsing this forum: No registered users and 6 guests

cron