具有多个$ _POST值的foreach-PHP

时间:2018-11-18 21:04:35

标签: javascript php forms foreach

我需要在此foreach循环中提交所有这些$ _POST值,但是我找不到一种使该工作正常进行的方法,我正在发送一个foreach循环,因为所有字段的名称都像这样=名称=字段名称[1]。

foreach($_POST['pergunta'] as $pergunta, $_POST['tipo'] as $tipoPergunta, $_POST['valor'] as $valor, $_POST['correta'] as $correta)

由于我需要提交所有这些值,因此使此foreach循环起作用的正确方法是什么?

这是表单代码:

<form action="paginas/professor/cadastraAtividade.php" method="post" id="FormAtividades">
  <table class="table table-responsive" id="questoes">
    <tbody>
      <tr>
        <td>
          <select id="opt1" name="tipo[1]" onchange="checkQuest(this)" class="browser-default">
            <option selected="selected" disabled="disabled">Selecione um tipo</option>
            <option value="Aberta">Aberta</option>
            <option value="Multipla">Múltipla Escolha</option>
            <option value="CertoErrado">Certo ou Errado</option>
            <option value="Justifica">A primeira justifica a Segunda</option>
          </select>
          <div id="perg1"><label id="lblP[1]" for="pergunta[1]">Insira a Pergunta</label><input name="pergunta[1]" id="pergA[1]" class="materialize-textarea" style="height: 57px;"></div>
          <div id="pergCont1"></div> <label for="valor[1]" class="active">Insira o valor desta Atividade</label> <input type="text" id="valor1" name="valor[1]"></td>
        <td><button type="button" name="addPerg" id="addPerg" onclick="addQuestao()">Adicionar Pergunta</button></td>
      </tr>
      <tr id="coluna2">
        <td>
          <select id="opt2" name="tipo[2]" onchange="checkQuest(opt2)" class="browser-default">
            <option selected="selected" disabled="disabled">Selecione um tipo</option>
            <option value="Aberta">Aberta</option>
            <option value="Multipla">Múltipla Escolha</option>
            <option value="CertoErrado">Certo ou Errado</option>
            <option value="Justifica">A primeira justifica a Segunda</option>
          </select>
          <div id="perg2"></div>
          <div id="pergCont2"></div> <label>Insira o valor desta Atividade</label> <input type="text" id="valor2" name="valor[2]"></td>
        <td><button type="button" name="remPerg" class="btn_remove" id="2">X</button></td>
      </tr>
      <tr id="coluna3">
        <td>
          <select id="opt3" name="tipo[3]" onchange="checkQuest(opt3)" class="browser-default">
            <option selected="selected" disabled="disabled">Selecione um tipo</option>
            <option value="Aberta">Aberta</option>
            <option value="Multipla">Múltipla Escolha</option>
            <option value="CertoErrado">Certo ou Errado</option>
            <option value="Justifica">A primeira justifica a Segunda</option>
          </select>
          <div id="perg3"><label for="pergunta">Insira a Pergunta</label><input name="pergunta[3]" id="perg[3]" class="materialize-textarea"></div>
          <div id="pergCont3"><label id="lblAlt1M" for="alt1[3]">Alternativa A</label><input type="text" id="alt1M" name="alt1[3]"> <label id="lblAlt2M" for="alt2[3]">Alternativa B</label><input type="text" id="alt2M" name="alt2[3]"> <label id="lblAlt3M" for="alt3[3]">Alternativa C</label>
            <input
              type="text" id="alt3M" name="alt3[3]"> <label id="lblAlt4M" for="alt4[3]">Alternativa D</label><input type="text" id="alt4M" name="alt4[3]"> <label id="lblAlt5M" for="alt5[3]">Alternativa E</label><input type="text" id="alt5M" name="alt5[3]"> <label id="CM" for="correta[3]">Alternativa Correta</label>
              <select
                class="browser-default" id="corrM" name="correta[3]">
                <option value="A">A</option>
                <option value="B">B</option>
                <option value="C">C</option>
                <option value="D">D</option>
                <option value="E">E</option>
                </select>
          </div> <label>Insira o valor desta Atividade</label> <input type="text" id="valor3" name="valor[3]"></td>
        <td><button type="button" name="remPerg" class="btn_remove" id="3">X</button></td>
      </tr>
      <tr id="coluna4">
        <td>
          <select id="opt4" name="tipo[4]" onchange="checkQuest(opt4)" class="browser-default">
            <option selected="selected" disabled="disabled">Selecione um tipo</option>
            <option value="Aberta">Aberta</option>
            <option value="Multipla">Múltipla Escolha</option>
            <option value="CertoErrado">Certo ou Errado</option>
            <option value="Justifica">A primeira justifica a Segunda</option>
          </select>
          <div id="perg4"><label id="lblPCE" for="pergunta[4]">Insira a Pergunta</label><input name="pergunta[4]" id="perg[4]" class="materialize-textarea"></div>
          <div id="pergCont4"><label id="lblCCE" for="correta[4]">Alternativa Correta</label>
            <select class="browser-default" name="correta[4]" id="corr[4]">
              <option value="Certo">Certo</option>
              <option value="Errado">Errado</option>
            </select>
          </div> <label>Insira o valor desta Atividade</label> <input type="text" id="valor4" name="valor[4]"></td>
        <td><button type="button" name="remPerg" class="btn_remove" id="4">X</button></td>
      </tr>
      <tr id="coluna5">
        <td>
          <select id="opt5" name="tipo[5]" onchange="checkQuest(opt5)" class="browser-default">
            <option selected="selected" disabled="disabled">Selecione um tipo</option>
            <option value="Aberta">Aberta</option>
            <option value="Multipla">Múltipla Escolha</option>
            <option value="CertoErrado">Certo ou Errado</option>
            <option value="Justifica">A primeira justifica a Segunda</option>
          </select>
          <div id="perg5"><label id="lblPerg1" for="perg1[5]">Insira a Primeira Pergunta</label><input type="text" id="perg1J" name="perg1[5]"> <label id="lblPerg2" for="perg2[5]">Insira a Segunda Pergunta</label><input type="text" id="perg2J" name="perg2[5]"></div>
          <div id="pergCont5"><label id="lblCorrJ" for="correta[5]">Alternativa Correta</label>
            <select class="browser-default" id="corrJ" name="correta[5]">
              <option value="A">As duas afirmações são verdadeiras, e a segunda justifica a primeira.</option>
              <option value="B">As duas afirmações são verdadeiras, e a segunda não justifica a primeira.</option>
              <option value="C">A primeira afirmação é verdadeira, e a segunda é falsa.</option>
              <option value="D">A primeira afirmação é falsa, e a segunda é verdadeira.</option>
              <option value="E">As duas afirmações são falsas.</option>
            </select>
          </div> <label>Insira o valor desta Atividade</label> <input type="text" id="valor5" name="valor[5]"></td>
        <td><button type="button" name="remPerg" class="btn_remove" id="5">X</button></td>
      </tr>
    </tbody>
  </table>
  <i class="btn waves-effect waves-light gradient-45deg-light-blue-indigo waves-input-wrapper" style=""><input class="waves-button-input" type="submit" value="Enviar"></i>
</form>

1 个答案:

答案 0 :(得分:2)

您不能只是将一堆数组捕捉到foreach。您必须执行以下操作:

for ($i = 0; $i < count($_POST['pergunta']); ++$i)
{
    $pergunta     = $_POST['pergunta'][$i];
    $tipoPergunta = $_POST['tipo'][$i];
    $valor        = $_POST['valor'][$i];
    $correta      = $_POST['correta'][$i];
    // do stuff
}

或者如果您绝对要使用foreach

foreach ($_POST['pergunta'] as $i => $pergunta)
{
    $tipoPergunta = $_POST['tipo'][$i];
    $valor        = $_POST['valor'][$i];
    $correta      = $_POST['correta'][$i];
    // do stuff
}

此外,对您来说,客户告诉您正确的答案是不是很傻?此信息应保密。