views:

48

answers:

2

From a user form: I am trying to insert the following data: 1) First Name 2) Last Name 3) Major 4) Graduation Year

I am able to connect to the database, and select the database I need--but I am unable to insert the data from the form. I am able to create records, but the data is not being saved to the database. Basically, right now I'm creating blank forms.

The variable $uInput holds the user data. I tried passing $uInput into the function doAction(), but I believe that is where the problem is. I'm trying to figure out how to pass the user data into the function doAction().

 <?php  

    //Call function mainline
    mainline();

    // Declare the function mainline
    function mainline() {

        $uInput = getUserInput();

        $connectDb = openConnect(); // Open Database Connection
        selectDb($connectDb); // Select Database
        doAction($uInput);
        //closeConnect();
        //display();

    }

    //Declare function getUserInput ------------------------------------------------------------------------------------
    function getUserInput() {

        echo "In the function getUserInput()" . "<br/>";

        // Variables of User Input
        $idnum = $_POST["idnum"];              // id (NOTE: auto increments in database)
        $fname = $_POST["fname"];             // first name
        $lname = $_POST["lname"];            // last name
        $major = $_POST["major"];           // major
        $year = $_POST["year"];          // year
        $action = $_POST["action"];       // action (select, insert, update, delete)

        $userInput = array($idnum, $fname, $lname, $major, $year, $action);
            //echo "info from getUserInput: " . $action;    
        return $userInput;
    }


    function doAction($pUserInput) {
        // if user selects INSERT from dropdown menu, then call function insert 
       //and pass $uInput
        if ($pUserInput[5] == "ins") {
            insert($uInput);    
        }

    }

    // Create a database connection --------------------------------------------------------
    function openConnect() {
        $connection = mysql_connect("localhost", "root_user", "password");
            echo "Opened Connection!" . "<br/>";

        if(!$connection) {
            die("Database connection failed: " . mysql_error());
        }

        return $connection;
    }

    // Select a database to ---------------------------------------------------------------- 
    function selectDb($pConnectDb) {
        $dbSelect = mysql_select_db("School", $pConnectDb);
        if(!$dbSelect) {
            die("Database selection failed: " . mysql_error());
        } else {
        echo "You are in the School database! <br/>";   
        }

    }


    // function insert ---------------------------------------------------------------------
    function insert($pUInput) {

        $sql="INSERT INTO tblStudents (first_name, last_name, major, year)
              VALUES
             ('$pUInput[1]','$pUInput[2]','$pUInput[3]', '$pUInput[4]')";

            if (!mysql_query($sql))
              {
              die('Error: ' . mysql_error());
              }
            echo "1 record added";
    }

    ?> 
+1  A: 

Your doAction() function is buggy. You are taking the parameter into the function as $pUserInput but sending to the insert() function as $uInput.

You should do it like this:

function doAction($pUserInput)
{
     // if user selects INSERT from dropdown menu, then call function insert 
     //and pass $uInput
     if ($pUserInput[5] == "ins")
     {
            insert($pUserInput); // <-- FIXED: Not using correct parameter.
     }
}
shamittomar
@shamittomar Ah! just noticed that! thanks, I knew it had something to do how the variable was being passed. 1 record added: not blank!
jc70
@shamittomar :/ hmm, but the year in the database is 0000-00-00. looks like i'm dealing with a different issue. the user chooses a year from a dropdown menu (ie. 2010, 2011, 2012, etc...etc...)
jc70
@crewof1, please post a separate question for that.
shamittomar
@shamittomar no prob, just trying to see if i can figure it out first :)
jc70
A: 

Change insert($uInput); function to insert($pUserInput);

KMK