Dynamic Form

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Jerim79

    Dynamic Form

    I need to create a form that takes a number that the user enters, and
    duplicates a question the number of times the user entered. For
    instance, if the customer enters 5 on the first page, when they press
    next the form generates "How old are you?" 5 times on the page. The
    customer will answer all 5 questions then press next. Finally, all the
    local variables get dynamically created and written to a database.

    I have already taken care of dynamically creating the question five
    times. Using a simple WHILE clause, this generates the correct number
    of questions. What I am having an issue with at this point, is how to
    dynamically create the local variables.For instance, for the question
    "How old are you?" I would need a unique variable for each instance;
    using something like $Age(n). So that for five times, it would
    automatically created variables $Age1 through $Age5. I have carried
    over the number to the submit page by creating the variable $Number
    and passing it along as hidden button on the form. $Age'$Number'
    seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
    doesn't work for referencing the global variable. I would need some
    way of looping through and dynamically creating the variables.

    I am willing to rethink my approach to the whole problem, so the door
    is wide open to suggestions.

  • Tyno Gendo

    #2
    Re: Dynamic Form

    Jerim79 wrote:
    and passing it along as hidden button on the form. $Age'$Number'
    seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
    doesn't work for referencing the global variable. I would need some
    way of looping through and dynamically creating the variables.
    >
    I am willing to rethink my approach to the whole problem, so the door
    is wide open to suggestions.
    Firstly, I'd get rid of the single quotes at they come out as
    Age'1', but you probably want Age1

    For an unknown number of ages you could do:

    $ages=array();
    foreach( $POST as $key=>$value ) {
    if (substr($key,0, 3)=="Age") {
    $ages[$key]=$_POST[$key];
    }
    }

    If there were 5 ages you would end up with

    $ages["Age1"] = <age_entered1 >;
    $ages["Age2"] = <age_entered2 >;
    $ages["Age3"] = <age_entered3 >;
    $ages["Age4"] = <age_entered4 >;
    $ages["Age5"] = <age_entered4 >;

    If you don't want an array, you can do:

    foreach( $POST as $key=>$value ) {
    if (substr($key,0, 3)=="Age") {
    ${$key}=$_POST[$key];
    }
    }

    The ${$key} would make your variables $Age1, $Age2 etc.


    Hope that helps, untested, let me know.


    Comment

    • Jerim79

      #3
      Re: Dynamic Form

      On Apr 4, 7:47 am, Tyno Gendo <you@localhostw rote:
      Jerim79 wrote:
      and passing it along as hidden button on the form. $Age'$Number'
      seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
      doesn't work for referencing the global variable. I would need some
      way of looping through and dynamically creating the variables.
      >
      I am willing to rethink my approach to the whole problem, so the door
      is wide open to suggestions.
      >
      Firstly, I'd get rid of the single quotes at they come out as
      Age'1', but you probably want Age1
      >
      For an unknown number of ages you could do:
      >
      $ages=array();
      foreach( $POST as $key=>$value ) {
      if (substr($key,0, 3)=="Age") {
      $ages[$key]=$_POST[$key];
      }
      }
      >
      If there were 5 ages you would end up with
      >
      $ages["Age1"] = <age_entered1 >;
      $ages["Age2"] = <age_entered2 >;
      $ages["Age3"] = <age_entered3 >;
      $ages["Age4"] = <age_entered4 >;
      $ages["Age5"] = <age_entered4 >;
      >
      If you don't want an array, you can do:
      >
      foreach( $POST as $key=>$value ) {
      if (substr($key,0, 3)=="Age") {
      ${$key}=$_POST[$key];
      }
      }
      >
      The ${$key} would make your variables $Age1, $Age2 etc.
      >
      Hope that helps, untested, let me know.
      Thank you so much. It is nice to finally see someone answer my
      question right off the bat. Usually when I post these types of
      question, I get about 5 "Why are you doing it that way?" type posts,
      along with 3 completely off topic responses and at least one "Let me
      see your UML." If I am lucky, after about 15 posts, I might get one
      half answer such as "Why don't you use an array?" Honestly, thank you
      for answering the question. I wish there was a point system so I could
      give you some points. I will try either of the suggestions and let you
      know.

      Comment

      • larry@portcommodore.com

        #4
        Re: Dynamic Form

        On Apr 4, 5:27 am, "Jerim79" <m...@hotmail.c omwrote:
        I need to create a form that takes a number that the user enters, and
        duplicates a question the number of times the user entered. For
        instance, if the customer enters 5 on the first page, when they press
        next the form generates "How old are you?" 5 times on the page. The
        customer will answer all 5 questions then press next. Finally, all the
        local variables get dynamically created and written to a database.
        >
        I have already taken care of dynamically creating the question five
        times. Using a simple WHILE clause, this generates the correct number
        of questions. What I am having an issue with at this point, is how to
        dynamically create the local variables.For instance, for the question
        "How old are you?" I would need a unique variable for each instance;
        using something like $Age(n). So that for five times, it would
        automatically created variables $Age1 through $Age5. I have carried
        over the number to the submit page by creating the variable $Number
        and passing it along as hidden button on the form. $Age'$Number'
        seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
        doesn't work for referencing the global variable. I would need some
        way of looping through and dynamically creating the variables.
        >
        I am willing to rethink my approach to the whole problem, so the door
        is wide open to suggestions.

        What I do is make a form with a large number of blanks (order form,
        children stats), and then in validation determine which ones are
        filled in.

        Now if you want to edit it, you bring the data back in a session array
        (to determine change) and an array for the POST form. When validation
        is good you compare the POSTed data to the session data and do what
        changes are necessary.

        This process bypasses the (enter number here) thing as well as the
        confusion in trying to add more child elements at a later time.

        Comment

        • Jerry Stuckle

          #5
          Re: Dynamic Form

          Jerim79 wrote:
          I need to create a form that takes a number that the user enters, and
          duplicates a question the number of times the user entered. For
          instance, if the customer enters 5 on the first page, when they press
          next the form generates "How old are you?" 5 times on the page. The
          customer will answer all 5 questions then press next. Finally, all the
          local variables get dynamically created and written to a database.
          >
          I have already taken care of dynamically creating the question five
          times. Using a simple WHILE clause, this generates the correct number
          of questions. What I am having an issue with at this point, is how to
          dynamically create the local variables.For instance, for the question
          "How old are you?" I would need a unique variable for each instance;
          using something like $Age(n). So that for five times, it would
          automatically created variables $Age1 through $Age5. I have carried
          over the number to the submit page by creating the variable $Number
          and passing it along as hidden button on the form. $Age'$Number'
          seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
          doesn't work for referencing the global variable. I would need some
          way of looping through and dynamically creating the variables.
          >
          I am willing to rethink my approach to the whole problem, so the door
          is wide open to suggestions.
          >
          A much easier way would be to just use an array:

          <input name="age[]" ...>

          Then your answers will be in the array $_POST['age'] or $_GET['age'],
          depending on how you submit the form.

          --
          =============== ===
          Remove the "x" from my email address
          Jerry Stuckle
          JDS Computer Training Corp.
          jstucklex@attgl obal.net
          =============== ===

          Comment

          • Tyno Gendo

            #6
            Re: Dynamic Form

            Jerry Stuckle wrote:
            A much easier way would be to just use an array:
            >
            <input name="age[]" ...>
            >
            Then your answers will be in the array $_POST['age'] or $_GET['age'],
            depending on how you submit the form.
            >
            That's a very good point.. I've used this once before also, top tip.

            Comment

            • Tyno Gendo

              #7
              Re: Dynamic Form (Posting form arrays/grouped inputs to PHP)

              Tyno Gendo wrote:
              Jerry Stuckle wrote:
              >A much easier way would be to just use an array:
              >>
              > <input name="age[]" ...>
              >>
              >Then your answers will be in the array $_POST['age'] or $_GET['age'],
              >depending on how you submit the form.
              >>
              >
              That's a very good point.. I've used this once before also, top tip.
              I was just checking because I thought there was a reason I avoided the
              age[] type method once, like perhaps it only sent form values that had
              been filled in and were not blank, but this is not the case and it does
              send all values, so as I went to the extent of testing it, here's the
              code in case anyone needs it ;-)

              <?php
              if ($_SERVER["REQUEST_METHOD "] == "POST") {
              $age = $_POST["age"];
              if ( is_array($age) ) {
              echo "There are " . count($age) . " elements in this
              array.";
              for ($counter=0;$co unter<count($ag e);$counter++) {
              echo "<p>Age $counter is $age[$counter]</p>";
              }
              } else {
              echo "age is not an Array";
              }
              }
              ?>
              <form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
              Age1<input type="text" name="age[]" value="10" /><br />
              Age2<input type="text" name="age[]" value="20" /><br />
              Age3<input type="text" name="age[]" value="30" /><br />
              Age4<input type="text" name="age[]" value="40" /><br />
              Age5<input type="text" name="age[]" value="50" /><br />
              <input type="submit" />
              </form>

              Comment

              • Jerim79

                #8
                Re: Dynamic Form

                On Apr 4, 8:51 am, l...@portcommod ore.com wrote:
                On Apr 4, 5:27 am, "Jerim79" <m...@hotmail.c omwrote:
                >
                >
                >
                I need to create a form that takes a number that the user enters, and
                duplicates a question the number of times the user entered. For
                instance, if the customer enters 5 on the first page, when they press
                next the form generates "How old are you?" 5 times on the page. The
                customer will answer all 5 questions then press next. Finally, all the
                local variables get dynamically created and written to a database.
                >
                I have already taken care of dynamically creating the question five
                times. Using a simple WHILE clause, this generates the correct number
                of questions. What I am having an issue with at this point, is how to
                dynamically create the local variables.For instance, for the question
                "How old are you?" I would need a unique variable for each instance;
                using something like $Age(n). So that for five times, it would
                automatically created variables $Age1 through $Age5. I have carried
                over the number to the submit page by creating the variable $Number
                and passing it along as hidden button on the form. $Age'$Number'
                seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
                doesn't work for referencing the global variable. I would need some
                way of looping through and dynamically creating the variables.
                >
                I am willing to rethink my approach to the whole problem, so the door
                is wide open to suggestions.
                >
                What I do is make a form with a large number of blanks (order form,
                children stats), and then in validation determine which ones are
                filled in.
                >
                Now if you want to edit it, you bring the data back in a session array
                (to determine change) and an array for the POST form. When validation
                is good you compare the POSTed data to the session data and do what
                changes are necessary.
                >
                This process bypasses the (enter number here) thing as well as the
                confusion in trying to add more child elements at a later time.
                That is a very good idea as well. I am just thinking from a user
                standpoint. Some users may want only 1 or 2. Some may want 10 or more.
                I am just concerned about a user getting confused by having this long
                form to fill out. I hate to say it, but users get confused very
                easily. As long as I can, I would like to stick with the dynamic
                system. That way, if a user only wants 3, then they won't be confused
                by 7 extra "mini-forms." What I am attempting to do, is ask 6
                questions for each number they type in. So if they type in 5 for the
                number, it will ask them 6*5 questions which is 30.

                For example, let's say my first page asks "How many concerts have you
                been to in the last year?" A user types in 5, and then presses
                Continue. The next screen that comes up, asks the user the same 6
                questions for each concert they say they have attended, all on one
                form. I would hate for the customer to only need to fill out one set
                of questions, but get confused by all the rest of the sets on their
                and eventually get give up.

                Comment

                • Jerim79

                  #9
                  Re: Dynamic Form (Posting form arrays/grouped inputs to PHP)

                  On Apr 4, 10:06 am, Tyno Gendo <you@localhostw rote:
                  Tyno Gendo wrote:
                  Jerry Stuckle wrote:
                  A much easier way would be to just use an array:
                  >
                  <input name="age[]" ...>
                  >
                  Then your answers will be in the array $_POST['age'] or $_GET['age'],
                  depending on how you submit the form.
                  >
                  That's a very good point.. I've used this once before also, top tip.
                  >
                  I was just checking because I thought there was a reason I avoided the
                  age[] type method once, like perhaps it only sent form values that had
                  been filled in and were not blank, but this is not the case and it does
                  send all values, so as I went to the extent of testing it, here's the
                  code in case anyone needs it ;-)
                  >
                  <?php
                  if ($_SERVER["REQUEST_METHOD "] == "POST") {
                  $age = $_POST["age"];
                  if ( is_array($age) ) {
                  echo "There are " . count($age) . " elements in this
                  array.";
                  for ($counter=0;$co unter<count($ag e);$counter++) {
                  echo "<p>Age $counter is $age[$counter]</p>";
                  }
                  } else {
                  echo "age is not an Array";
                  }
                  }
                  ?>
                  <form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
                  Age1<input type="text" name="age[]" value="10" /><br />
                  Age2<input type="text" name="age[]" value="20" /><br />
                  Age3<input type="text" name="age[]" value="30" /><br />
                  Age4<input type="text" name="age[]" value="40" /><br />
                  Age5<input type="text" name="age[]" value="50" /><br />
                  <input type="submit" />
                  </form>
                  You have all given me some very wonderful and useful ideas. Thank you
                  all very much. (I just noticed the "Rate this post" ability.)

                  Comment

                  • Jerim79

                    #10
                    Re: Dynamic Form

                    On Apr 4, 7:27 am, "Jerim79" <m...@hotmail.c omwrote:
                    I need to create a form that takes a number that the user enters, and
                    duplicates a question the number of times the user entered. For
                    instance, if the customer enters 5 on the first page, when they press
                    next the form generates "How old are you?" 5 times on the page. The
                    customer will answer all 5 questions then press next. Finally, all the
                    local variables get dynamically created and written to a database.
                    >
                    I have already taken care of dynamically creating the question five
                    times. Using a simple WHILE clause, this generates the correct number
                    of questions. What I am having an issue with at this point, is how to
                    dynamically create the local variables.For instance, for the question
                    "How old are you?" I would need a unique variable for each instance;
                    using something like $Age(n). So that for five times, it would
                    automatically created variables $Age1 through $Age5. I have carried
                    over the number to the submit page by creating the variable
                    $Number
                    and passing it along as hidden button on the form. $Age'$Number'
                    seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
                    doesn't work for referencing the global variable. I would need some
                    way of looping through and dynamically creating the variables.
                    >
                    I am willing to rethink my approach to the whole problem, so the door
                    is wide open to suggestions.
                    I have been playing around with the various suggestions here. I
                    haven't gotten anything to work yet. I have read the PHP manual pages.
                    Maybe I need to give a little bit better detail about what I am trying
                    to do. The first page of my form is a simple screen that just asks for
                    a number. Such as this:

                    INDEX.HTML
                    <html>
                    <body>
                    <form action="survey. php" method="POST">
                    How many people are in your family? <input type="text"
                    name="Number" value="" />
                    <input type="Submit" name="Submit" value="Submit" />
                    </form>
                    </body>
                    </html>

                    After clicking on Submit, a second screen pops up. This is the PHP
                    script, with a while loop that displays the same question for the
                    amount of times the user entered on the last page:

                    SURVEY.PHP
                    <?php
                    if ($_SERVER["REQUEST_METHOD "] == "POST") {
                    $Number=$_POST['Number'];
                    $Number2=$Numbe r;

                    ?>
                    <form action="submit. php" method="POST">
                    while ($Number!=0){
                    echo "How old is person number $Number? " ?
                    >
                    <input type="text" name="Age[]"value="" />
                    <?php
                    echo Age[$Number];
                    $Number--;
                    }
                    ?>
                    <input type="hidden" name="Number" value="<? echo
                    $Number; ?>">
                    <input type="Submit" name="Submit" value="Submit">
                    </form <?php

                    }

                    else{
                    echo "You don't have permission to access this page directly.";
                    }

                    Okay, so now we have asked the user for the ages of all of the family
                    members the user told us they had. Now we must write this to the
                    database, or at least get it over to the form to write it to the
                    database. So:

                    SUBMIT.PHP
                    <?php

                    if ($_SERVER["REQUEST_METHOD "] == "POST") {
                    $Number=$_POST['Number'];
                    $Number2=$_POST['Number'];

                    $Age[]=$_POST['Age'];

                    while ($Number>-1){
                    $query="INSERT INTO table()
                    VALUES('$Age[$Number]')";
                    $result = mysql_query($qu ery) or die('Query failed: ' .
                    mysql_error());
                    $Number--;

                    }
                    mysql_close($co nnection);
                    }

                    else{
                    echo "You don't have permission to access this page directly.";
                    }

                    Forgetting any other issues, such as why I break out of PHP to do HTML
                    stuff, the fact that when I read the numbers into the table they will
                    be in reverse order or that this may not reflect the way you would do
                    it, what else do I need to do to make this code work correctly? I
                    understand some may have an issue with why I use three forms, when I
                    could use just one. That issue aside for the moment, I am trying to
                    learn the easiest way to do this. It is broken out so I can better
                    understand the process. Once it is working correctly and I understand
                    how it works, then I will be happy to consolidate as much as I can. My
                    main problem right now is between the SURVEY.PHP script and the
                    SUBMIT.PHP script. I can't seem to get any of the Ages[] over to the
                    SUBMIT.PHP. I have even tried echoing the values manually such as echo
                    $Age[0], with no luck.

                    I haven't tried the second way that was posted here, mostly because I
                    am know what to put in the SUBMIT.PHP form as far as <input /fields.
                    One other way I have tried is that in the SURVEY.PHP form I used
                    <input type="text" name="Age[<? echo $Number; ?>]" ?>" value"" />
                    inside of the while loop. I could probably also do name="<? echo
                    $Age[$Number]; ?>" and let PHP handle the array. Don't even know if
                    that will work.

                    Comment

                    • Jerry Stuckle

                      #11
                      Re: Dynamic Form (Posting form arrays/grouped inputs to PHP)

                      Tyno Gendo wrote:
                      Tyno Gendo wrote:
                      >Jerry Stuckle wrote:
                      >>A much easier way would be to just use an array:
                      >>>
                      >> <input name="age[]" ...>
                      >>>
                      >>Then your answers will be in the array $_POST['age'] or $_GET['age'],
                      >>depending on how you submit the form.
                      >>>
                      >>
                      >That's a very good point.. I've used this once before also, top tip.
                      >
                      I was just checking because I thought there was a reason I avoided the
                      age[] type method once, like perhaps it only sent form values that had
                      been filled in and were not blank, but this is not the case and it does
                      send all values, so as I went to the extent of testing it, here's the
                      code in case anyone needs it ;-)
                      >
                      <snip>

                      That's true for checkboxes.

                      --
                      =============== ===
                      Remove the "x" from my email address
                      Jerry Stuckle
                      JDS Computer Training Corp.
                      jstucklex@attgl obal.net
                      =============== ===

                      Comment

                      • Jerry Stuckle

                        #12
                        Re: Dynamic Form

                        Jerim79 wrote:
                        On Apr 4, 7:27 am, "Jerim79" <m...@hotmail.c omwrote:
                        >I need to create a form that takes a number that the user enters, and
                        >duplicates a question the number of times the user entered. For
                        >instance, if the customer enters 5 on the first page, when they press
                        >next the form generates "How old are you?" 5 times on the page. The
                        >customer will answer all 5 questions then press next. Finally, all the
                        local variables get dynamically created and written to a database.
                        >I have already taken care of dynamically creating the question five
                        >times. Using a simple WHILE clause, this generates the correct number
                        >of questions. What I am having an issue with at this point, is how to
                        >dynamically create the local variables.For instance, for the question
                        >"How old are you?" I would need a unique variable for each instance;
                        >using something like $Age(n). So that for five times, it would
                        >automaticall y created variables $Age1 through $Age5. I have carried
                        over the number to the submit page by creating the variable
                        $Number
                        >and passing it along as hidden button on the form. $Age'$Number'
                        >seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
                        >doesn't work for referencing the global variable. I would need some
                        >way of looping through and dynamically creating the variables.
                        >>
                        >I am willing to rethink my approach to the whole problem, so the door
                        >is wide open to suggestions.
                        >
                        I have been playing around with the various suggestions here. I
                        haven't gotten anything to work yet. I have read the PHP manual pages.
                        Maybe I need to give a little bit better detail about what I am trying
                        to do. The first page of my form is a simple screen that just asks for
                        a number. Such as this:
                        >
                        INDEX.HTML
                        <html>
                        <body>
                        <form action="survey. php" method="POST">
                        How many people are in your family? <input type="text"
                        name="Number" value="" />
                        <input type="Submit" name="Submit" value="Submit" />
                        </form>
                        </body>
                        </html>
                        >
                        After clicking on Submit, a second screen pops up. This is the PHP
                        script, with a while loop that displays the same question for the
                        amount of times the user entered on the last page:
                        >
                        SURVEY.PHP
                        <?php
                        if ($_SERVER["REQUEST_METHOD "] == "POST") {
                        $Number=$_POST['Number'];
                        $Number2=$Numbe r;
                        >
                        ?>
                        <form action="submit. php" method="POST">
                        while ($Number!=0){
                        echo "How old is person number $Number? " ?
                        <input type="text" name="Age[]"value="" />
                        <?php
                        echo Age[$Number];
                        $Number--;
                        }
                        ?>
                        <input type="hidden" name="Number" value="<? echo
                        $Number; ?>">
                        <input type="Submit" name="Submit" value="Submit">
                        </form <?php
                        >
                        }
                        >
                        else{
                        echo "You don't have permission to access this page directly.";
                        }
                        >
                        Okay, so now we have asked the user for the ages of all of the family
                        members the user told us they had. Now we must write this to the
                        database, or at least get it over to the form to write it to the
                        database. So:
                        >
                        SUBMIT.PHP
                        <?php
                        >
                        if ($_SERVER["REQUEST_METHOD "] == "POST") {
                        $Number=$_POST['Number'];
                        $Number2=$_POST['Number'];
                        >
                        $Age[]=$_POST['Age'];
                        >
                        while ($Number>-1){
                        $query="INSERT INTO table()
                        VALUES('$Age[$Number]')";
                        $result = mysql_query($qu ery) or die('Query failed: ' .
                        mysql_error());
                        $Number--;
                        >
                        }
                        mysql_close($co nnection);
                        }
                        >
                        else{
                        echo "You don't have permission to access this page directly.";
                        }
                        >
                        Forgetting any other issues, such as why I break out of PHP to do HTML
                        stuff, the fact that when I read the numbers into the table they will
                        be in reverse order or that this may not reflect the way you would do
                        it, what else do I need to do to make this code work correctly? I
                        understand some may have an issue with why I use three forms, when I
                        could use just one. That issue aside for the moment, I am trying to
                        learn the easiest way to do this. It is broken out so I can better
                        understand the process. Once it is working correctly and I understand
                        how it works, then I will be happy to consolidate as much as I can. My
                        main problem right now is between the SURVEY.PHP script and the
                        SUBMIT.PHP script. I can't seem to get any of the Ages[] over to the
                        SUBMIT.PHP. I have even tried echoing the values manually such as echo
                        $Age[0], with no luck.
                        >
                        I haven't tried the second way that was posted here, mostly because I
                        am know what to put in the SUBMIT.PHP form as far as <input /fields.
                        One other way I have tried is that in the SURVEY.PHP form I used
                        <input type="text" name="Age[<? echo $Number; ?>]" ?>" value"" />
                        inside of the while loop. I could probably also do name="<? echo
                        $Age[$Number]; ?>" and let PHP handle the array. Don't even know if
                        that will work.
                        >
                        foreach ($Age as $a) {
                        $query="INSERT INTO table() VALUES('$a')";
                        $result = mysql_query($qu ery) or die('Query failed: ' .
                        mysql_error());
                        }

                        --
                        =============== ===
                        Remove the "x" from my email address
                        Jerry Stuckle
                        JDS Computer Training Corp.
                        jstucklex@attgl obal.net
                        =============== ===

                        Comment

                        • Jerim79

                          #13
                          Re: Dynamic Form

                          On Apr 4, 4:09 pm, Jerry Stuckle <jstuck...@attg lobal.netwrote:
                          Jerim79 wrote:
                          On Apr 4, 7:27 am, "Jerim79" <m...@hotmail.c omwrote:
                          I need to create a form that takes a number that the user enters, and
                          duplicates a question the number of times the user entered. For
                          instance, if the customer enters 5 on the first page, when they press
                          next the form generates "How old are you?" 5 times on the page. The
                          customer will answer all 5 questions then press next. Finally, all the
                          local variables get dynamically created and written to a database.
                          I have already taken care of dynamically creating the question five
                          times. Using a simple WHILE clause, this generates the correct number
                          of questions. What I am having an issue with at this point, is how to
                          dynamically create the local variables.For instance, for the question
                          "How old are you?" I would need a unique variable for each instance;
                          using something like $Age(n). So that for five times, it would
                          automatically created variables $Age1 through $Age5. I have carried
                          over the number to the submit page by creating the variable
                          $Number
                          and passing it along as hidden button on the form. $Age'$Number'
                          seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
                          doesn't work for referencing the global variable. I would need some
                          way of looping through and dynamically creating the variables.
                          >
                          I am willing to rethink my approach to the whole problem, so the door
                          is wide open to suggestions.
                          >
                          I have been playing around with the various suggestions here. I
                          haven't gotten anything to work yet. I have read the PHP manual pages.
                          Maybe I need to give a little bit better detail about what I am trying
                          to do. The first page of my form is a simple screen that just asks for
                          a number. Such as this:
                          >
                          INDEX.HTML
                          <html>
                          <body>
                          <form action="survey. php" method="POST">
                          How many people are in your family? <input type="text"
                          name="Number" value="" />
                          <input type="Submit" name="Submit" value="Submit" />
                          </form>
                          </body>
                          </html>
                          >
                          After clicking on Submit, a second screen pops up. This is the PHP
                          script, with a while loop that displays the same question for the
                          amount of times the user entered on the last page:
                          >
                          SURVEY.PHP
                          <?php
                          if ($_SERVER["REQUEST_METHOD "] == "POST") {
                          $Number=$_POST['Number'];
                          $Number2=$Numbe r;
                          >
                          ?>
                          <form action="submit. php" method="POST">
                          while ($Number!=0){
                          echo "How old is person number $Number? " ?
                          <input type="text" name="Age[]"value="" />
                          <?php
                          echo Age[$Number];
                          $Number--;
                          }
                          ?>
                          <input type="hidden" name="Number" value="<? echo
                          $Number; ?>">
                          <input type="Submit" name="Submit" value="Submit">
                          </form <?php
                          >
                          }
                          >
                          else{
                          echo "You don't have permission to access this page directly.";
                          }
                          >
                          Okay, so now we have asked the user for the ages of all of the family
                          members the user told us they had. Now we must write this to the
                          database, or at least get it over to the form to write it to the
                          database. So:
                          >
                          SUBMIT.PHP
                          <?php
                          >
                          if ($_SERVER["REQUEST_METHOD "] == "POST") {
                          $Number=$_POST['Number'];
                          $Number2=$_POST['Number'];
                          >
                          $Age[]=$_POST['Age'];
                          >
                          while ($Number>-1){
                          $query="INSERT INTO table()
                          VALUES('$Age[$Number]')";
                          $result = mysql_query($qu ery) or die('Query failed: ' .
                          mysql_error());
                          $Number--;
                          >
                          }
                          mysql_close($co nnection);
                          }
                          >
                          else{
                          echo "You don't have permission to access this page directly.";
                          }
                          >
                          Forgetting any other issues, such as why I break out of PHP to do HTML
                          stuff, the fact that when I read the numbers into the table they will
                          be in reverse order or that this may not reflect the way you would do
                          it, what else do I need to do to make this code work correctly? I
                          understand some may have an issue with why I use three forms, when I
                          could use just one. That issue aside for the moment, I am trying to
                          learn the easiest way to do this. It is broken out so I can better
                          understand the process. Once it is working correctly and I understand
                          how it works, then I will be happy to consolidate as much as I can. My
                          main problem right now is between the SURVEY.PHP script and the
                          SUBMIT.PHP script. I can't seem to get any of the Ages[] over to the
                          SUBMIT.PHP. I have even tried echoing the values manually such as echo
                          $Age[0], with no luck.
                          >
                          I haven't tried the second way that was posted here, mostly because I
                          am know what to put in the SUBMIT.PHP form as far as <input /fields.
                          One other way I have tried is that in the SURVEY.PHP form I used
                          <input type="text" name="Age[<? echo $Number; ?>]" ?>" value"" />
                          inside of the while loop. I could probably also do name="<? echo
                          $Age[$Number]; ?>" and let PHP handle the array. Don't even know if
                          that will work.
                          >
                          foreach ($Age as $a) {
                          $query="INSERT INTO table() VALUES('$a')";
                          $result = mysql_query($qu ery) or die('Query failed: ' .
                          mysql_error());
                          }
                          >
                          --
                          =============== ===
                          Remove the "x" from my email address
                          Jerry Stuckle
                          JDS Computer Training Corp.
                          jstuck...@attgl obal.net
                          =============== ===
                          Thanks, that worked perfectly. Just one other question. What if I want
                          two inputs? Such as:

                          <input type="text" name="Age[] "value="" />
                          <input type="text" name="Height[]" value="" /
                          >
                          I would need to read both arrays into the same table as they relate to
                          each other. Such as Age[1]Height[1], then Age[2]Height[2], and so on.
                          I tried using foreach($Age as $a, $Height as $h) or foreach($Age as $a
                          AND $Height as $h). Or do I even need to specify the second array in
                          foreach()? Could I just insert it as such:

                          foreach ($Age as $a) {
                          $query="INSERT INTO table() VALUES('$a','$H eight')";
                          $result = mysql_query($qu ery) or die('Query failed: ' .
                          mysql_error());
                          }

                          I looked at the PHP website and it didn't mention this as a
                          possibility.

                          Comment

                          • Jerim79

                            #14
                            Re: Dynamic Form

                            On Apr 4, 4:09 pm, Jerry Stuckle <jstuck...@attg lobal.netwrote:
                            Jerim79 wrote:
                            On Apr 4, 7:27 am, "Jerim79" <m...@hotmail.c omwrote:
                            I need to create a form that takes a number that the user enters, and
                            duplicates a question the number of times the user entered. For
                            instance, if the customer enters 5 on the first page, when they press
                            next the form generates "How old are you?" 5 times on the page. The
                            customer will answer all 5 questions then press next. Finally, all the
                            local variables get dynamically created and written to a database.
                            I have already taken care of dynamically creating the question five
                            times. Using a simple WHILE clause, this generates the correct number
                            of questions. What I am having an issue with at this point, is how to
                            dynamically create the local variables.For instance, for the question
                            "How old are you?" I would need a unique variable for each instance;
                            using something like $Age(n). So that for five times, it would
                            automatically created variables $Age1 through $Age5. I have carried
                            over the number to the submit page by creating the variable
                            $Number
                            and passing it along as hidden button on the form. $Age'$Number'
                            seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
                            doesn't work for referencing the global variable. I would need some
                            way of looping through and dynamically creating the variables.
                            >
                            I am willing to rethink my approach to the whole problem, so the door
                            is wide open to suggestions.
                            >
                            I have been playing around with the various suggestions here. I
                            haven't gotten anything to work yet. I have read the PHP manual pages.
                            Maybe I need to give a little bit better detail about what I am trying
                            to do. The first page of my form is a simple screen that just asks for
                            a number. Such as this:
                            >
                            INDEX.HTML
                            <html>
                            <body>
                            <form action="survey. php" method="POST">
                            How many people are in your family? <input type="text"
                            name="Number" value="" />
                            <input type="Submit" name="Submit" value="Submit" />
                            </form>
                            </body>
                            </html>
                            >
                            After clicking on Submit, a second screen pops up. This is the PHP
                            script, with a while loop that displays the same question for the
                            amount of times the user entered on the last page:
                            >
                            SURVEY.PHP
                            <?php
                            if ($_SERVER["REQUEST_METHOD "] == "POST") {
                            $Number=$_POST['Number'];
                            $Number2=$Numbe r;
                            >
                            ?>
                            <form action="submit. php" method="POST">
                            while ($Number!=0){
                            echo "How old is person number $Number? " ?
                            <input type="text" name="Age[]"value="" />
                            <?php
                            echo Age[$Number];
                            $Number--;
                            }
                            ?>
                            <input type="hidden" name="Number" value="<? echo
                            $Number; ?>">
                            <input type="Submit" name="Submit" value="Submit">
                            </form <?php
                            >
                            }
                            >
                            else{
                            echo "You don't have permission to access this page directly.";
                            }
                            >
                            Okay, so now we have asked the user for the ages of all of the family
                            members the user told us they had. Now we must write this to the
                            database, or at least get it over to the form to write it to the
                            database. So:
                            >
                            SUBMIT.PHP
                            <?php
                            >
                            if ($_SERVER["REQUEST_METHOD "] == "POST") {
                            $Number=$_POST['Number'];
                            $Number2=$_POST['Number'];
                            >
                            $Age[]=$_POST['Age'];
                            >
                            while ($Number>-1){
                            $query="INSERT INTO table()
                            VALUES('$Age[$Number]')";
                            $result = mysql_query($qu ery) or die('Query failed: ' .
                            mysql_error());
                            $Number--;
                            >
                            }
                            mysql_close($co nnection);
                            }
                            >
                            else{
                            echo "You don't have permission to access this page directly.";
                            }
                            >
                            Forgetting any other issues, such as why I break out of PHP to do HTML
                            stuff, the fact that when I read the numbers into the table they will
                            be in reverse order or that this may not reflect the way you would do
                            it, what else do I need to do to make this code work correctly? I
                            understand some may have an issue with why I use three forms, when I
                            could use just one. That issue aside for the moment, I am trying to
                            learn the easiest way to do this. It is broken out so I can better
                            understand the process. Once it is working correctly and I understand
                            how it works, then I will be happy to consolidate as much as I can. My
                            main problem right now is between the SURVEY.PHP script and the
                            SUBMIT.PHP script. I can't seem to get any of the Ages[] over to the
                            SUBMIT.PHP. I have even tried echoing the values manually such as echo
                            $Age[0], with no luck.
                            >
                            I haven't tried the second way that was posted here, mostly because I
                            am know what to put in the SUBMIT.PHP form as far as <input /fields.
                            One other way I have tried is that in the SURVEY.PHP form I used
                            <input type="text" name="Age[<? echo $Number; ?>]" ?>" value"" />
                            inside of the while loop. I could probably also do name="<? echo
                            $Age[$Number]; ?>" and let PHP handle the array. Don't even know if
                            that will work.
                            >
                            foreach ($Age as $a) {
                            $query="INSERT INTO table() VALUES('$a')";
                            $result = mysql_query($qu ery) or die('Query failed: ' .
                            mysql_error());
                            }
                            >
                            --
                            =============== ===
                            Remove the "x" from my email address
                            Jerry Stuckle
                            JDS Computer Training Corp.
                            jstuck...@attgl obal.net
                            =============== ===
                            Thanks, that worked perfectly. Just one other question. What if I want
                            two inputs? Such as:

                            <input type="text" name="Age[] "value="" />
                            <input type="text" name="Height[]" value="" /
                            >
                            I would need to read both arrays into the same table as they relate to
                            each other. Such as Age[1]Height[1], then Age[2]Height[2], and so on.
                            I tried using foreach($Age as $a, $Height as $h) or foreach($Age as $a
                            AND $Height as $h). Or do I even need to specify the second array in
                            foreach()? Could I just insert it as such:

                            foreach ($Age as $a) {
                            $query="INSERT INTO table() VALUES('$a','$H eight')";
                            $result = mysql_query($qu ery) or die('Query failed: ' .
                            mysql_error());
                            }

                            I looked at the PHP website and it didn't mention this as a
                            possibility.

                            Comment

                            • Jerim79

                              #15
                              Re: Dynamic Form

                              On Apr 4, 4:09 pm, Jerry Stuckle <jstuck...@attg lobal.netwrote:
                              Jerim79 wrote:
                              On Apr 4, 7:27 am, "Jerim79" <m...@hotmail.c omwrote:
                              I need to create a form that takes a number that the user enters, and
                              duplicates a question the number of times the user entered. For
                              instance, if the customer enters 5 on the first page, when they press
                              next the form generates "How old are you?" 5 times on the page. The
                              customer will answer all 5 questions then press next. Finally, all the
                              local variables get dynamically created and written to a database.
                              I have already taken care of dynamically creating the question five
                              times. Using a simple WHILE clause, this generates the correct number
                              of questions. What I am having an issue with at this point, is how to
                              dynamically create the local variables.For instance, for the question
                              "How old are you?" I would need a unique variable for each instance;
                              using something like $Age(n). So that for five times, it would
                              automatically created variables $Age1 through $Age5. I have carried
                              over the number to the submit page by creating the variable
                              $Number
                              and passing it along as hidden button on the form. $Age'$Number'
                              seemed to work for creating the variable, but $_post["Age'$Numbe r'"]
                              doesn't work for referencing the global variable. I would need some
                              way of looping through and dynamically creating the variables.
                              >
                              I am willing to rethink my approach to the whole problem, so the door
                              is wide open to suggestions.
                              >
                              I have been playing around with the various suggestions here. I
                              haven't gotten anything to work yet. I have read the PHP manual pages.
                              Maybe I need to give a little bit better detail about what I am trying
                              to do. The first page of my form is a simple screen that just asks for
                              a number. Such as this:
                              >
                              INDEX.HTML
                              <html>
                              <body>
                              <form action="survey. php" method="POST">
                              How many people are in your family? <input type="text"
                              name="Number" value="" />
                              <input type="Submit" name="Submit" value="Submit" />
                              </form>
                              </body>
                              </html>
                              >
                              After clicking on Submit, a second screen pops up. This is the PHP
                              script, with a while loop that displays the same question for the
                              amount of times the user entered on the last page:
                              >
                              SURVEY.PHP
                              <?php
                              if ($_SERVER["REQUEST_METHOD "] == "POST") {
                              $Number=$_POST['Number'];
                              $Number2=$Numbe r;
                              >
                              ?>
                              <form action="submit. php" method="POST">
                              while ($Number!=0){
                              echo "How old is person number $Number? " ?
                              <input type="text" name="Age[]"value="" />
                              <?php
                              echo Age[$Number];
                              $Number--;
                              }
                              ?>
                              <input type="hidden" name="Number" value="<? echo
                              $Number; ?>">
                              <input type="Submit" name="Submit" value="Submit">
                              </form <?php
                              >
                              }
                              >
                              else{
                              echo "You don't have permission to access this page directly.";
                              }
                              >
                              Okay, so now we have asked the user for the ages of all of the family
                              members the user told us they had. Now we must write this to the
                              database, or at least get it over to the form to write it to the
                              database. So:
                              >
                              SUBMIT.PHP
                              <?php
                              >
                              if ($_SERVER["REQUEST_METHOD "] == "POST") {
                              $Number=$_POST['Number'];
                              $Number2=$_POST['Number'];
                              >
                              $Age[]=$_POST['Age'];
                              >
                              while ($Number>-1){
                              $query="INSERT INTO table()
                              VALUES('$Age[$Number]')";
                              $result = mysql_query($qu ery) or die('Query failed: ' .
                              mysql_error());
                              $Number--;
                              >
                              }
                              mysql_close($co nnection);
                              }
                              >
                              else{
                              echo "You don't have permission to access this page directly.";
                              }
                              >
                              Forgetting any other issues, such as why I break out of PHP to do HTML
                              stuff, the fact that when I read the numbers into the table they will
                              be in reverse order or that this may not reflect the way you would do
                              it, what else do I need to do to make this code work correctly? I
                              understand some may have an issue with why I use three forms, when I
                              could use just one. That issue aside for the moment, I am trying to
                              learn the easiest way to do this. It is broken out so I can better
                              understand the process. Once it is working correctly and I understand
                              how it works, then I will be happy to consolidate as much as I can. My
                              main problem right now is between the SURVEY.PHP script and the
                              SUBMIT.PHP script. I can't seem to get any of the Ages[] over to the
                              SUBMIT.PHP. I have even tried echoing the values manually such as echo
                              $Age[0], with no luck.
                              >
                              I haven't tried the second way that was posted here, mostly because I
                              am know what to put in the SUBMIT.PHP form as far as <input /fields.
                              One other way I have tried is that in the SURVEY.PHP form I used
                              <input type="text" name="Age[<? echo $Number; ?>]" ?>" value"" />
                              inside of the while loop. I could probably also do name="<? echo
                              $Age[$Number]; ?>" and let PHP handle the array. Don't even know if
                              that will work.
                              >
                              foreach ($Age as $a) {
                              $query="INSERT INTO table() VALUES('$a')";
                              $result = mysql_query($qu ery) or die('Query failed: ' .
                              mysql_error());
                              }
                              >
                              --
                              =============== ===
                              Remove the "x" from my email address
                              Jerry Stuckle
                              JDS Computer Training Corp.
                              jstuck...@attgl obal.net
                              =============== ===
                              Thanks, that worked perfectly. Just one other question. What if I want
                              two inputs? Such as:

                              <input type="text" name="Age[] "value="" />
                              <input type="text" name="Height[]" value="" /
                              >
                              I would need to read both arrays into the same table as they relate to
                              each other. Such as Age[1]Height[1], then Age[2]Height[2], and so on.
                              I tried using foreach($Age as $a, $Height as $h) or foreach($Age as $a
                              AND $Height as $h). Or do I even need to specify the second array in
                              foreach()? Could I just insert it as such:

                              foreach ($Age as $a) {
                              $query="INSERT INTO table() VALUES('$a','$H eight')";
                              $result = mysql_query($qu ery) or die('Query failed: ' .
                              mysql_error());
                              }

                              I looked at the PHP website and it didn't mention this as a
                              possibility.

                              Comment

                              Working...