Dynamic Form

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

    #16
    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

      #17
      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

        #18
        Re: Dynamic Form

        Another thought, could I create a third array from the fist two arrays
        and then read that 2 dimensional array into the table? Or should I
        read the array into specific columns on the table? Such as $Age goes
        into table.age and $Height goes into table.height.


        Comment

        • Jerim79

          #19
          Re: Dynamic Form

          Another thought, could I create a third array from the fist two arrays
          and then read that 2 dimensional array into the table? Or should I
          read the array into specific columns on the table? Such as $Age goes
          into table.age and $Height goes into table.height.


          Comment

          • Jerry Stuckle

            #20
            Re: Dynamic Form

            Jerim79 wrote:
            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
            >>>dynamicall y 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="Numbe r" 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('$Ag e[$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...@attg lobal.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.
            >
            Ah, I missed that. Well, then, do:

            for ($i=0; i < $Number; $i++) {
            $query="INSERT INTO table() VALUES('$age[$i]','$Height[$i]')";
            $result = mysql_query($qu ery) or die('Query failed: ' .
            mysql_error());
            }

            And BTW - you do know items in a SQL table are unordered. Just because
            you insert them in a specific order does not mean they will come out in
            the same order.

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

            Comment

            • Jerim79

              #21
              Re: Dynamic Form

              On Apr 4, 6:22 pm, Jerry Stuckle <jstuck...@attg lobal.netwrote:
              Jerim79 wrote:
              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
              >>automatical ly 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.
              >
              Ah, I missed that. Well, then, do:
              >
              for ($i=0; i < $Number; $i++) {
              $query="INSERT INTO table() VALUES('$age[$i]','$Height[$i]')";
              $result = mysql_query($qu ery) or die('Query failed: ' .
              mysql_error());
              }
              >
              And BTW - you do know items in a SQL table are unordered. Just because
              you insert them in a specific order does not mean they will come out in
              the same order.
              >
              --
              =============== ===
              Remove the "x" from my email address
              Jerry Stuckle
              JDS Computer Training Corp.
              jstuck...@attgl obal.net
              =============== ===
              Thank your for you help so far. I know I keep asking for help, but
              honestly I have never done something like this before. I am just
              having one issue now. I am correctly passing the $Number value to the
              last page. I have used echo commands at the top and bottom of the last
              page to verify that it is the number the user typed in on the first
              page. However this doesn't write anything to the database:

              for ($i=0; i<$Number; $i++) {
              $query="INSERT INTO table()
              VALUES('$age[$i]','$Height[$i]')";
              $result = mysql_query($qu ery) or die('Query failed: ' .
              mysql_error());
              }

              I even tried just outputting the values to the screen with this, but
              it doesn't show anything:

              for ($n=0; n<$Number; $n++){
              echo $Age[$n];
              echo $Height[$n];
              }

              I know that $Number is correct, as I used the echo commands above. My
              only other thought is that for some reason, I can't access the array
              with $Age[$n]. When I try to print the array location directly to the
              screen using $Age[0], $Age[1], etc, it just prints "Array" on the
              screen. So the foreach() worked, it just wouldn't print two values on
              the same row, but $Age[] doesn't seem to be accessing correctly.


              Comment

              • Jerim79

                #22
                Re: Dynamic Form

                On Apr 5, 8:29 am, "Jerim79" <m...@hotmail.c omwrote:
                On Apr 4, 6:22 pm, Jerry Stuckle <jstuck...@attg lobal.netwrote:
                >
                >
                >
                Jerim79 wrote:
                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
                >>>dynamicall y 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="Numbe r" 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('$Ag e[$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...@attg lobal.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.
                >
                Ah, I missed that. Well, then, do:
                >
                for ($i=0; i < $Number; $i++) {
                $query="INSERT INTO table() VALUES('$age[$i]','$Height[$i]')";
                $result = mysql_query($qu ery) or die('Query failed: ' .
                mysql_error());
                }
                >
                And BTW - you do know items in a SQL table are unordered. Just because
                you insert them in a specific order does not mean they will come out in
                the same order.
                >
                --
                =============== ===
                Remove the "x" from my email address
                Jerry Stuckle
                JDS Computer Training Corp.
                jstuck...@attgl obal.net
                =============== ===
                >
                Thank your for you help so far. I know I keep asking for help, but
                honestly I have never done something like this before. I am just
                having one issue now. I am correctly passing the $Number value to the
                last page. I have used echo commands at the top and bottom of the last
                page to verify that it is the number the user typed in on the first
                page. However this doesn't write anything to the database:
                >
                for ($i=0; i<$Number; $i++) {
                $query="INSERT INTO table()
                VALUES('$age[$i]','$Height[$i]')";
                $result = mysql_query($qu ery) or die('Query failed: ' .
                mysql_error());
                }
                >
                I even tried just outputting the values to the screen with this, but
                it doesn't show anything:
                >
                for ($n=0; n<$Number; $n++){
                echo $Age[$n];
                echo $Height[$n];
                }
                >
                I know that $Number is correct, as I used the echo commands above. My
                only other thought is that for some reason, I can't access the array
                with $Age[$n]. When I try to print the array location directly to the
                screen using $Age[0], $Age[1], etc, it just prints "Array" on the
                screen. So the foreach() worked, it just wouldn't print two values on
                the same row, but $Age[] doesn't seem to be accessing correctly.
                I am wondering if I should declare $Age as an array such as
                $Age=array(); before I do $Age[]=$_POST['Age'];. I am just wondering
                if PHP is creating the array properly and really identifying it as an
                array.

                Comment

                • Jerim79

                  #23
                  Re: Dynamic Form

                  A new situation that has arised is that now the for loop, even though
                  it doesn't insert anything other than 0 to the database, it seems to
                  be stuck in an infinite loop. Here is the code:

                  <?php

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

                  include ("../functions/db_conn.php");

                  for ($i=0; i <= $Number; $i++) {
                  $query="INSERT INTO Age(Age,Height)
                  VALUES('$Age[$i]','$Height[$i]')";
                  echo $Age[i], $Height[i];
                  $result = mysql_query($qu ery) or die('Query failed: ' .
                  mysql_error());
                  }

                  There are two echo $Number commands, one is not pictured here as it is
                  at the bottom of the page. Both of these confirm that $Number equals
                  2. I might try a while loop, to just see if that fixes anything. I
                  don't know why this infinite loop just appeared.

                  Comment

                  • Tyno Gendo

                    #24
                    Re: Dynamic Form

                    Jerim79 wrote:
                    A new situation that has arised is that now the for loop, even though
                    it doesn't insert anything other than 0 to the database, it seems to
                    be stuck in an infinite loop. Here is the code:
                    >
                    <?php
                    >
                    if ($_SERVER["REQUEST_METHOD "] == "POST") {
                    $Number=$_POST['Number'];
                    echo $Number;
                    $Age[]=$_POST['Age'];
                    $Height[]=$_POST['Height'];
                    >
                    include ("../functions/db_conn.php");
                    >
                    for ($i=0; i <= $Number; $i++) {
                    $query="INSERT INTO Age(Age,Height)
                    VALUES('$Age[$i]','$Height[$i]')";
                    echo $Age[i], $Height[i];
                    $result = mysql_query($qu ery) or die('Query failed: ' .
                    mysql_error());
                    }
                    >
                    There are two echo $Number commands, one is not pictured here as it is
                    at the bottom of the page. Both of these confirm that $Number equals
                    2. I might try a while loop, to just see if that fixes anything. I
                    don't know why this infinite loop just appeared.
                    >
                    Is the code cut and paste? its missing the $ off the i<= $Number

                    Comment

                    • Jerry Stuckle

                      #25
                      Re: Dynamic Form

                      Jerim79 wrote:
                      A new situation that has arised is that now the for loop, even though
                      it doesn't insert anything other than 0 to the database, it seems to
                      be stuck in an infinite loop. Here is the code:
                      >
                      <?php
                      >
                      if ($_SERVER["REQUEST_METHOD "] == "POST") {
                      $Number=$_POST['Number'];
                      echo $Number;
                      $Age[]=$_POST['Age'];
                      $Age = $_POST['Age'];
                      $Height[]=$_POST['Height'];
                      $Height = $_POST['Height'];
                      >
                      include ("../functions/db_conn.php");
                      >
                      for ($i=0; i <= $Number; $i++) {
                      for ($i=0; $i <= $Number; $i++) {
                      $query="INSERT INTO Age(Age,Height)
                      VALUES('$Age[$i]','$Height[$i]')";
                      echo $Age[i], $Height[i];
                      $result = mysql_query($qu ery) or die('Query failed: ' .
                      mysql_error());
                      }
                      >
                      There are two echo $Number commands, one is not pictured here as it is
                      at the bottom of the page. Both of these confirm that $Number equals
                      2. I might try a while loop, to just see if that fixes anything. I
                      don't know why this infinite loop just appeared.
                      >
                      I made some corrections above.

                      $_POST['Age'] is already an array. When you put it into $Age[], you're
                      putting the entire array into the first element of another array - $Age.
                      You want to just put it into $Age. The same with $Height.

                      And the problem with your loop is you were missing a '$' in front of the
                      second 'i'.

                      In a development environment you should always have all errors on and
                      displayed (error_reportin g = E_ALL and display_errors = On in your
                      php.ini file). You would have gotten a notice about 'i'. And if you
                      hadn't already created $Age and $Height as arrays, you would have gotten
                      messages there, also.


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

                      Comment

                      • Jerim79

                        #26
                        Re: Dynamic Form

                        On Apr 5, 10:36 am, Tyno Gendo <you@localhostw rote:
                        Jerim79 wrote:
                        A new situation that has arised is that now the for loop, even though
                        it doesn't insert anything other than 0 to the database, it seems to
                        be stuck in an infinite loop. Here is the code:
                        >
                        <?php
                        >
                        if ($_SERVER["REQUEST_METHOD "] == "POST") {
                        $Number=$_POST['Number'];
                        echo $Number;
                        $Age[]=$_POST['Age'];
                        $Height[]=$_POST['Height'];
                        >
                        include ("../functions/db_conn.php");
                        >
                        for ($i=0; i <= $Number; $i++) {
                        $query="INSERT INTO Age(Age,Height)
                        VALUES('$Age[$i]','$Height[$i]')";
                        echo $Age[i], $Height[i];
                        $result = mysql_query($qu ery) or die('Query failed: ' .
                        mysql_error());
                        }
                        >
                        There are two echo $Number commands, one is not pictured here as it is
                        at the bottom of the page. Both of these confirm that $Number equals
                        2. I might try a while loop, to just see if that fixes anything. I
                        don't know why this infinite loop just appeared.
                        >
                        Is the code cut and paste? its missing the $ off the i<= $Number
                        You guys are completely awesome. That was the problem. I have one
                        quick parting questions. I should probably just start a new thread,
                        but since you all seem to know your stuff, I thought I would ask here
                        first.

                        I have been playing around with the form, using radio buttons instead
                        of text boxes. The problem I am having, is that within the while loop
                        that displays the question for the number of times a user specifies,
                        all occurrences of that question use the same name for the radio
                        button. Here is the while loop:

                        while ($Number!=0){
                        <input type="radio" name="Age[]" value="20-30">20-30
                        <input type="radio name="Age[]" value="30-40">30-40
                        <input type="radio name"Age[]" value="40-50">40-50
                        $Number--;
                        }

                        Let's say someone entered 3 for $Number. When the loop executes it
                        would produce:

                        <input type="radio" name="Age[]" value="20-30">20-30
                        <input type="radio name="Age[]" value="30-40">30-40
                        <input type="radio name"Age[]" value="40-50">40-50

                        <input type="radio" name="Age[]" value="20-30">20-30
                        <input type="radio name="Age[]" value="30-40">30-40
                        <input type="radio name"Age[]" value="40-50">40-50

                        <input type="radio" name="Age[]" value="20-30">20-30
                        <input type="radio name="Age[]" value="30-40">30-40
                        <input type="radio name"Age[]" value="40-50">40-50

                        The problem is that with radio buttons, you can only choose one
                        option. With this code, it only allows the user to choose one option
                        from among the 9 listed, instead of one from each set. Since it really
                        needs to be radio buttons, I am trying to find a way to dynamically
                        name each set. Would something like this work:

                        <input type="radio name"Age<?php echo $Number ?>[]"
                        value="40-50">40-50

                        But that would seem to negate the whole need for arrays, which you all
                        were so patient in teaching me. This may be more of an HTML question
                        as how to define sets of radio buttons.


                        Comment

                        • Jerim79

                          #27
                          Re: Dynamic Form

                          Just some FYI. I redid the form using echo"" commands, instead of
                          breaking out into HTML. That might make it easier. Maybe I can do
                          something like:

                          echo "<input type=\"radio\" name=\"Age$Numb er[]\" value=
                          \"40-50\">40-50";

                          Comment

                          Working...