0

I have a form which I check using php if there are records on the database. If records exist in the database then the input box will be auto-filled. I have done that, no worries. The issue is if I want to modify the text in the input box, then I cant get the new value of the input box. How can I do that?

<?php
$title="Welcome";

require("connect.php");


session_start();

if(isset($_SESSION['CurrentUser'])) {
    $AppID=$_SESSION['CurrentUser'];
}
else{
    header("Location: ApplicantLogin.php");
}

$Flag = mysql_query("SELECT EXISTS(SELECT 1 FROM Submission WHERE AppID='$AppID') AS FLAG");
$SubmissionDetailSQL=mysql_query("SELECT * FROM Submission WHERE AppID = '$AppID'");

function saveData() {
    if (isset($_POST['QualificationPlace']) && isset($_POST['QualificationType']) && isset($_POST['QualificationInstitution']) && isset($_POST['QualificationMonth']) 
        && isset($_POST['QualificationYear']) && isset($_POST['QualificationSubject']) && isset($_POST['QualificationGrade'])){

        $QualificationPlace = $_POST['QualificationPlace'];
        $QualificationType = $_POST['QualificationType'];
        $QualificationInstitution = $_POST['QualificationInstitution'];
        $QualificationMonth = $_POST['QualificationMonth'];
        $QualificationYear = $_POST['QualificationYear'];
        $QualificationSubject = $_POST['QualificationSubject'];
        $QualificationGrade = $_POST['QualificationGrade'];

        mysql_query("UPDATE Submission SET QualificationPlace='$QualificationPlace', QualificationType='$QualificationType',
            QualificationInstitution='$QualificationInstitution', QualificationMonth='$QualificationMonth', QualificationYear='$QualificationYear',
            QualificationSubject='$QualificationSubject', QualificationGrade='$QualificationGrade' WHERE AppID=$AppID");
    }
}

if (isset($_POST['savebtn'])) {
    saveData();
    header("Location: applicantCase.php");
}
if (isset($_POST['nextbtn'])) {
    saveData();
    header("Location: ApplicantApplyEmployment.php");
}

if (mysql_fetch_array($Flag) == True) {
    while ($SubmissionDetails=mysql_fetch_array($SubmissionDetailSQL)){
        $_SESSION['QualificationPlace']=$SubmissionDetails['QualificationPlace'];
        $_SESSION['QualificationType']=$SubmissionDetails['QualificationType'];
        $_SESSION['QualificationInstitution']=$SubmissionDetails['QualificationInstitution'];
        $_SESSION['QualificationMonth']=$SubmissionDetails['QualificationMonth'];
        $_SESSION['QualificationYear']=$SubmissionDetails['QualificationYear'];
        $_SESSION['QualificationSubject']=$SubmissionDetails['QualificationSubject'];
        $_SESSION['QualificationGrade']=$SubmissionDetails['QualificationGrade'];
    }
}


include( "html/applicantsheader.html" );
include( "html/ApplicantApplyQualifications.html" );
include( "html/footer.html" );
?>

The HTML Code:

<div class="col-sm-4 col-sm-offset-5 col-md-4 col-md-offset-5 main">
<h1 class="page-header">Qualifications</h1>
<form action="ApplicantApplyQualifications.php" method="POST">
    <!-- Select Basic -->
        <fieldset class="form-group">
            <label for="Name">Where was the qualification taken?</label>
            <?php echo "<input type='text' name='QualificationPlace' class='form-control' placeholder=''value=".$_SESSION['QualificationPlace'].">" ;?>
        </fieldset>
        <fieldset class="form-group">
            <label for="Name">Qualification Type</label>
            <?php echo "<input type='text' name='QualificationType' class='form-control' placeholder=''value=".$_SESSION['QualificationType'].">" ;?>
        </fieldset>
        <fieldset class="form-group">
            <label for="Name">Awarding Institution</label>
            <?php echo "<input type='text' name='QualificationInstitution' class='form-control' placeholder=''value=".$_SESSION['QualificationInstitution'].">" ;?>
        </fieldset>
        <fieldset class="form-group">
            <label for="Surname">Month / Year</label>
            <div class="input-group">
                <?php echo "<input type='text' name='QualificationMonth' class='form-control' placeholder=''value=".$_SESSION['QualificationMonth'].">" ;?>
                <span class="input-group-addon">-</span>
                <?php echo "<input type='text' name='QualificationYear' class='form-control' placeholder=''value=".$_SESSION['QualificationYear'].">" ;?>
            </div>
        </fieldset>
        <fieldset class="form-group">
            <label for="Surname">Subject</label>
            <?php echo "<input type='text' name='QualificationSubject' class='form-control' placeholder=''value=".$_SESSION['QualificationSubject'].">" ;?>
        </fieldset>
        <fieldset class="form-group">
            <label for="Surname">Grade</label>
            <?php echo "<input type='text' name='QualificationGrade' class='form-control' placeholder=''value=".$_SESSION['QualificationGrade'].">" ;?>
        </fieldset>

     <br>
      <button type="submit" value="signup" name="savebtn" class="btn btn-primary">Save & Exit</button>
      <button type="submit" value="signup" name="nextbtn" class="btn btn-primary">Next</button>
    </form>
        </div> <!-- /container -->

The problem must be the value=".$_SESSION['QualificationPlace'].". But how can I do it differently ?

Bobys
  • 677
  • 1
  • 14
  • 37
  • Are you asking how to get the value live - like with Ajax? I'm a little unclear. How and when do you want to modify the value? – dgo Jan 02 '17 at 23:39
  • The Concept is to create a form which will be divided in parts. each part will have a save button at the end which the user can store the form details he inputed so far and can fill the rest later on. When the user returns to the form I would like to fetch those inputs back from the database. I am able to fetch them. But if I want to modified the the echo line in the html code do not let me. Is like a constant value which I cant modify it. – Bobys Jan 02 '17 at 23:46
  • Your code is open to sql injection. [You should escape your input](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). – CUGreen Jan 02 '17 at 23:46
  • That's a concept and not an actual product. So security is not a must at the moment. Thanks for your comment, though. – Bobys Jan 02 '17 at 23:49
  • So let me get this : After you load the form back the input field auto load with the previous text but you can't modify it anymore ? – Pain67 Jan 02 '17 at 23:50
  • If I use a normal html input box code (no php echo) I can store the new details. But I cant auto fill the input box because is no more dynamic (no PHP). If I use echo to auto fill the input box, auto fill works but I can no longer update the details in the database. Its like whatever I type it will keep use the variable is already stored in the database. – Bobys Jan 02 '17 at 23:56
  • Is the value updated in the database? – Luca Jung Jan 02 '17 at 23:59
  • No. Stays the same – Bobys Jan 03 '17 at 00:03
  • Does it work if every field has a value? And are you sure the function saveData() is called correctly? – Luca Jung Jan 03 '17 at 00:07

2 Answers2

0

I think the problem may be where you set your session.

Create another function to set the session so you can do that each time the data is updated.

<?php
$title="Welcome";

require("connect.php");


session_start();

if(isset($_SESSION['CurrentUser'])) {
    $AppID=$_SESSION['CurrentUser'];
}
else{
    header("Location: ApplicantLogin.php");
}

$Flag = mysql_query("SELECT EXISTS(SELECT 1 FROM Submission WHERE AppID='$AppID') AS FLAG");
$SubmissionDetailSQL=mysql_query("SELECT * FROM Submission WHERE AppID = '$AppID'");

function saveData() {
    if (isset($_POST['QualificationPlace']) && isset($_POST['QualificationType']) && isset($_POST['QualificationInstitution']) && isset($_POST['QualificationMonth']) 
        && isset($_POST['QualificationYear']) && isset($_POST['QualificationSubject']) && isset($_POST['QualificationGrade'])){

        $QualificationPlace = $_POST['QualificationPlace'];
        $QualificationType = $_POST['QualificationType'];
        $QualificationInstitution = $_POST['QualificationInstitution'];
        $QualificationMonth = $_POST['QualificationMonth'];
        $QualificationYear = $_POST['QualificationYear'];
        $QualificationSubject = $_POST['QualificationSubject'];
        $QualificationGrade = $_POST['QualificationGrade'];

        mysql_query("UPDATE Submission SET QualificationPlace='$QualificationPlace', QualificationType='$QualificationType',
            QualificationInstitution='$QualificationInstitution', QualificationMonth='$QualificationMonth', QualificationYear='$QualificationYear',
            QualificationSubject='$QualificationSubject', QualificationGrade='$QualificationGrade' WHERE AppID=$AppID");

        // use new values to set the session details
        setSessionDetails($_POST);

    }
}
// new function to set the session
function setSessionDetails($SubmissionDetails) {
    $_SESSION['QualificationPlace']=$SubmissionDetails['QualificationPlace'];
    $_SESSION['QualificationType']=$SubmissionDetails['QualificationType'];
    $_SESSION['QualificationInstitution']=$SubmissionDetails['QualificationInstitution'];
    $_SESSION['QualificationMonth']=$SubmissionDetails['QualificationMonth'];
    $_SESSION['QualificationYear']=$SubmissionDetails['QualificationYear'];
    $_SESSION['QualificationSubject']=$SubmissionDetails['QualificationSubject'];
    $_SESSION['QualificationGrade']=$SubmissionDetails['QualificationGrade'];
}

if (isset($_POST['savebtn'])) {
    saveData();
    header("Location: applicantCase.php");
}
if (isset($_POST['nextbtn'])) {
    saveData();
    header("Location: ApplicantApplyEmployment.php");
}

if (mysql_fetch_array($Flag) == True) {
    while ($SubmissionDetails=mysql_fetch_array($SubmissionDetailSQL)){
        // set the session from db
        setSessionDetails($SubmissionDetails);
    }
}


include( "html/applicantsheader.html" );
include( "html/ApplicantApplyQualifications.html" );
include( "html/footer.html" );
?>
CUGreen
  • 3,066
  • 2
  • 13
  • 22
0

The problem was that I have to call the function saveData() with the $AppID argument. Im so sorry for all that mess. Im working on it 11 hours straight and my brain shutted down I guess. Thanks everyone for your help though. I was trying to solve that for hours but I've seen that error after I post it, so again Im sorry.

Bobys
  • 677
  • 1
  • 14
  • 37