Difficulty creating sessions to save form data

Asked

Viewed 999 times

3

I have a form that has 6 fields and a button that allows the user to repeat these 6 fields to add more data.

I want to save the data in a session, and write to the BD only when the user has completed the fill.

I am not knowing how to create the sessions right, the searches I did did did not help much. Follow the code:

novaRequisicao.php

    $sql="SELECT COD_GRUPO, DES_GRUPO_PRODUTO FROM supervisor.GRUPO_PRODUTO";
$query= mssql_query($sql) or die ('Erro ao realizar consulta ao banco de dados');

?>

<script>
//Carrega a página com os produtos de acordo com o grupo escolhido
        $(document).ready(function(){
            $('#grupoProdutos').change(function(){
                $('#produtos').load('listaProdutos.php?grupoProdutos='+$('#grupoProdutos').val());
            });
        });

//função para adicionar mais produtos
$document.ready(function(){
    $("#add").click(function(){
        $("#clona").clone().appendTo("#aqui");
    });
});
</script>

<div class="grid_24 cinza subtitulo">Nova Requisição</div>
<!-- formulário para requisição de produtos  -->
<form action="novaRequisicao.php" method="POST">    
<div id="clona">
<div class="grid_7">
    Selecione um grupo de produtos<br>
    <select name="grupoProdutos[]" id="grupoProdutos" required="required">
        <option value=""> Selecione</option>
    <?php
        while($row=mssql_fetch_array($query)){
            $codGrupo=$row['COD_GRUPO'];
            $grupo=$row['DES_GRUPO_PRODUTO'];
            echo " <option value='".$codGrupo."'>".$grupo." </option> ";
        }
    ?>
    </select>
</div>
<div id="produtos" ></div>
<div id="aqui"></div>

lists.php products

    <?php
require('includes/conect.php');

$grupoProdutos = $_GET['grupoProdutos'];
$sql=mssql_query("SELECT * FROM supervisor.PRODUTO WHERE COD_GRUPO='$grupoProdutos' ORDER BY DES_PRODUTO");
?>
<div class="grid_10">
<?php
echo "Selecione um produto<br> <select name='produto[]' required='required'>";
echo " <option value=''>Selecione</option> ";
while ($row=mssql_fetch_array($sql)) {
        $id=$row['COD_PRODUTO'];
        $nome=$row['DES_PRODUTO'];
    echo " <option value='$id'>".$nome."</option> ";
}
echo "</select>";

?>
<br><br>
Preencha se o produto não está na listagem<br> 
<input type="text" name="naoListado[]" class='largeInput' placeholder='Nome do produto não listado'>
</div>
<div class="grid_4">
Quantidade<br>
<input type="number" name="quantidade[]" required="required" class="shortInput" min="1">
<br><br>
Tipo<br>
<input type="text" name='tipo[]' placeholder='Kg, ml, etc.'>
</div>
<div class="grid_6">
Observações<br>
    <textarea  name="observacoes[]" cols="30" rows="5"></textarea>
</div>
<div class="grid_2">
<button id="add">+</button>
</div>
<div class="grid_2">
<input type="submit" value="Finalizar requisição" class="emerland text-white but">

</div>
  • It is better to edit the question and include what you have already done.

  • 1

    @Papacharlie, I edited it

  • but in the new fileI want to.php the data is coming right? the problem is only to write this data in the session? If you can send the code of the new fileRequisicao.php

  • The code of the new fileRequisicao.php is this first. The data is coming right yes, I just need to record in the session and after the completed form, save in the database.

  • @Amandalima and where is the code of your session?

  • @Gerep, this is the problem, I never used sessions and I don’t even know how to start.

  • 2

    @Amandalima, in this case I recommend this link: http://blog.vilourenco.com.br/php-trabalhoando-sessions/

Show 2 more comments

2 answers

1

In his novaRequisicao.php, add the session_start():

 $sql="SELECT COD_GRUPO, DES_GRUPO_PRODUTO FROM supervisor.GRUPO_PRODUTO";
$query= mssql_query($sql) or die ('Erro ao realizar consulta ao banco de dados');

if ( empty(session_id()) ) { session_start(); }
?>

From there, you can use the global variable of $_SESSION, being such a associative array. So I could use something like $_SESSION['produtos'] and add things to it.

1


To create instances of a session, one must first initialize a session, never after, or return error.

Initialize a session:

session_start();

The function should always be at the beginning of the code, never afterwards, because it is a header, and the headers should always be sent before any other information.

To create variables for that same session, and sign values to them, use the variable $_SESSION['indice_da_sessao'], see:

$_SESSION['meu_nome'] = "Edilson";
// Ou ainda
$meu_nome = "Edilson";
$meu_codigo = 123;
$_SESSION['meu_nome'] = $meu_nome;
$_SESSION['meu_codigo'] = $meu_codigo;

After using these values, you can simply discard the current session using the session_destroy() as is done in login or unset($_SESSION['indice_da_sessao']) to undo a specific.

To use the function header() while a session instance has not yet been destroyed, exit() to avoid errors, multiple headers defined.


To store settings, non-sensitive information, or information that does not pose a risk to the system, is usually used cookies


Other references:

Sessions - PHP.net

Cookies - PHP.net

Error: Heards already sent - Soen

Browser other questions tagged

You are not signed in. Login or sign up in order to post.