When submitting form, GET data is lost

0

I'm trying to send data from a form to the database. I have data coming from POST and also from GET, but clicking on the submit button the value of the variable that receives GET data is zeroed.

THIS IS THE FORM.

<form action="pedidos.php" method="post">

<table border="1">

        <tr>
        <td> NOME DO CLIENTE  </td>
        <td> <?php echo strtoupper($nome_cliente); ?> </td>
        </tr>

        <tr>
        <td> PRODUTO: </td>
        <td> <select name="produto">
        <?php 
            if(isset($selecionar_produto) && mysql_num_rows($selecionar_produto)){
                while($produto = mysql_fetch_array($selecionar_produto)){ ?>
                <option value="<?php echo $produto["id_produto"]; ?>"> <?php echo $produto["nome_produto"]; ?> </option>
        <?php
                }
            }
        ?>  

        <tr>
        <td> QUANTIDADE: </td>
        <td> <input type="number" name="qtde"> </td>
        </tr>

        <tr>
        <td> RUA: </td>
        <td> <?php echo strtoupper($rua); ?> </td>
        </tr>

        <tr>
        <td> NÚMERO </td>
        <td> <?php echo strtoupper($num); ?> </td>
        </tr>

        <tr>
        <td> BAIRRO </td>
        <td> <?php echo strtoupper($bairro); ?> </td>
        </tr>

        <tr>
        <td> CIDADE: </td>
        <td> <?php echo strtoupper($cidade); ?> </td>
        </tr>

        <tr>
        <td> STATUS </td>
        <td> 
            <select name="status">
                <?php
                    if(isset($selecionar_status) && mysql_num_rows($selecionar_status)){
                        while($status = mysql_fetch_array($selecionar_status)){ ?>
                        <option value="<?php echo $status["id_status"];?>"> <?php echo $status["status"]; ?> </option>
                <?php
                        }
                    }
                ?>
        </td>
        </tr>

        <tr>
        <td colspan="2"> <input type="submit" name="botao" value="Cadastrar"> 
        <a href="painel.php"> <input type="button" name="botao" value="Voltar"> </a>

        </td>
        </tr>               

            </select>       
        </td>
        </tr>



    </table>
</form>

THIS IS PHP TO REGISTER THE ORDER

   if (isset($_POST["botao"]) && $_POST["botao"] == "Cadastrar"){   

        $gravar_pedidos = mysql_query("INSERT INTO pedidos(id_cliente,id_produto,id_status) values ('$id_cliente','$produto','$status')");


        if(!$gravar_pedidos){
            echo "Erro ".mysql_error();
        }else{
            echo "<meta http-equiv='refresh' content='0;URL=painel.php'/>

            <script type=\"text/javascript\">
            alert(\"Operação Realizada com sucesso!!\");
            </script> ";                
        }   

}
    
asked by anonymous 18.10.2017 / 04:53

2 answers

0

Corrections to be made:

1 - Set the html of the line PRODUTO , that is, close the select , the td and the tr

    <tr>
    <td> PRODUTO: </td>
    <td> <select name="produto">
    <?php 
        if(isset($selecionar_produto) && mysql_num_rows($selecionar_produto)){
            while($produto = mysql_fetch_array($selecionar_produto)){ ?>
            <option value="<?php echo $produto["id_produto"]; ?>"> <?php echo $produto["nome_produto"]; ?> </option>
    <?php
            }
        }
    ?>
</select></td></tr>

2 - Missing retrieving submitted form values:

    if (isset($_POST["botao"]) && $_POST["botao"] == "Cadastrar"){  

        $id_cliente = $_POST['id_cliente'];
        $produto = $_POST['produto'];
        $status = $_POST['status']; 

        $gravar_pedidos = mysql_query("INSERT INTO pedidos(id_cliente,id_produto,id_status) values ('$id_cliente','$produto','$status')");
         ......................
  

Note: The form is missing a field with values of the client_id and the name="client_id"

You can replace POST with GET. Wherever POST is replaced by GET, that is

<form action="pedidos.php" method="GET">

if (isset($_GET["botao"]) && $_GET["botao"] == "Cadastrar"){ 
    $id_cliente = $_GET['id_cliente'];
    $produto = $_GET['produto'];
    $status = $_GET['status']; 
  

The best advice is to use POST

About your question

"How do I use $ _REQUEST? because I'm using the post and get"

The $_REQUEST is the generic type of $_GET , $_POST , whether your data is coming via $_GET or $_POST , retrieve both.

if (isset($_REQUEST["botao"]) && $_REQUEST["botao"] == "Cadastrar"){ 
   $id_cliente = $_REQUEST['id_cliente'];
   $produto = $_REQUEST['produto'];
   $status = $_REQUEST['status']; 

In this case your form can be both

<form action="pedidos.php" method="post">

how

<form action="pedidos.php" method="GET">

Its use is not recommended, learn more at Using $ _REQUEST instead of $ _GET, $ _POST and $ _COOKIE

    
18.10.2017 / 21:29
0

sol25lua First check that the values of the name attribute of your form are the same as the value of the super global POST.

Another suggestion would be to assign the POST values before the block if (and without the function isset() and inside the if block you could continue checking if your id is "set" and from there perform the insert in the database.

    
18.10.2017 / 05:20