View Single Post
  #3  
Old 04-01-2014, 03:17 PM
IntoRain's Avatar
IntoRain IntoRain is offline
Moderator
 
Join Date: Jul 2013
Location: Portugal
Posts: 461
Gender: Female
Credits: 19,641
IntoRain is on a distinguished road
Default

It's possible, "Giving money" is just an update to the database. It requires some understanding of php. I can guide you through all steps, please tell me if you didn't understand, I don't explain stuff well.

1) Create a new page, by creating two .php files (it's how you create a yoursite.com/pagename instead of a yoursite.com/pages/view/pagesname):
  • One jobs.php (in the main folder together with myadopts.php) and a jobsview.php inside the view folder.
  • Copy the contents of a file in the same folder to see how pages are done, changing the class name (to JobsController and JobsView, it will throw an error when visiting the page if you did the controller and view wrong) and deleting all other functions, except __construct and index.
  • You can delete the contents of index except for

PHP Code:
$mysidia Registry::get("mysidia");
        
$document $this->document;        
        
$document->setTitle("document title here"); 
In the jobsview.php.

2) If you go to yourwebsite.com/jobs the page should exist now. This is how the two files work as a page:
  • Usually the visuals of the page go inside the jobsview.php file and the verifications inside the jobs.php. But you can do everything in one file if you want, and ignore the other and it will still work. It's just a way used to separate what is viewed by the user and what isn't.
  • For example, the contents and text would go in jobsview.php and the database modifications in the jobs.php.
  • __construct is a function you can ignore, it basically "creates" your page using the definitions of the parent page/class (controller or view). Index() works as the main page (yourwebsite.com/jobs). If you create a function (on both files jobsview.php and jobs.php and the document set up like the code above!) called example(), it would create a page yourwebsite.com/jobs/example.

3) To add text to the page you do this:
$document->add(new Comment("content that can have html as well."));
If you want to respect the View-Controller, this would be done in the view. If you check the page yourwebsite.com/jobs, the text should be there

4) Now, we need something for the user to click to request money. Like a button saying "Work!".
However, in order to submit something, to send information somewhere, a "trigger" needs to exist. So we attach the button to a Form. Forms can have multiple elements to request information from the user (textfields, radio buttons...) and then a nice button in order to send the form with the information. In this case, a form with a single with a button is enough, since you just want a little button to send money. Users click and money is sent.

To add a form with a button to the page you do this:
PHP Code:
$form = new Form("form name""""post");//create a form
$form->add(new Button("button text""submit""submit"));//this adds a button to the form
$document->add($form);//add the form to the document so it shows on the page 
After adding this button to the page, clicking will submit but nothing will happen. We need the actual database modification.

5) This part needs some understanding of if conditions in programming and scope. To check if the button submitted, you add this to the page:

PHP Code:
if($mysidia->input->post("submit"))//if button submits
{
//whatever is inside these curly brackets will happen if the condition above is true
//try to add some text here, then click the button to see the text appear

6) Now, what do you want to do when to do when the button submits? Give money!

PHP Code:
if($mysidia->input->post("submit"))//if button submits
{
    
$mysidia->user->changecash(moneyToAdd);//change moneyToAdd to the amount of money you want the user to get when he clicks the button

If you want the money to be random instead:

PHP Code:
if($mysidia->input->post("submit"))//if button submits
{
    
$money rand(minimumValue,maximumValue);//the random value to add to the money of the user will be between the values you put in minimumValue and maximumValue
    
$mysidia->user->changecash($money);

7) If you want it to have a time limit, you need to modify the database in order to save the user's last time requesting money. In this case I will use once per day.

Open the database with phpMyAdmin or whatever infertace used to facilitate the control of the database. You will see multiple tables. In the (prefixYouChose)_users, add a new column called lastWorkTime for example, with a type varchar, size 20, can be null and the predefined value for when it's null is NULL (if it asks you for that). Usually you go in structure and then there must be a place to add a column to the table.

Everyone should have that column set to null now. Open the file class_member.php and add the new variable you created to the top next to other ones. Below __construct() create a function to check the user's last time working and another to update this time.

PHP Code:
public lastWorkTime;
//(__construct here)

//function to check if he can work today
public function canWork(){

    
$dateTime = new DateTime;
    
$todayDate $dateTime->format('Y-m-d');//gettime

if($this->lastWorkTime != $todayDate)
{
     
//if the date user last worked is different from today's date, then it means he hasn't worked today yet!
     
return true;//say he can work by returning true
}
else
{
    
//if the condition above doesn't apply, we will say he can't work, by returning false
    
return false;
}

//function to update last time working on the database
public function updateWorkingDate()
{
       
$mysidia Registry::get("mysidia");
    
$dateTime = new DateTime;
    
$todayDate $dateTime->format('Y-m-d');//gettime
       
if($this->lastWorkTime != $todayDate)
       {
            
$this->lastWorkTime $todayDate;
            
$mysidia->db->update("users",array("lastWorkTime" => $this->lastWorkTime),"uid = {$this->uid}");
        }

And then on the page we were working on previously, jobsview.php.

PHP Code:
//form,button,text...here
if($mysidia->input->post("submit"))//if button submits
{
    if(
$mysidia->user->canWork())
    {
        
$money rand(minimumValue,maximumValue);
         
$mysidia->user->changecash($money);
         
$mysidia->user->updateWorkingDate();
     }

__________________


asp.net stole my soul.
Reply With Quote