Returning linked data

3

With the help of Milrak Pereira Pessoa and Wéllingthon M. de Souza, I edited my code ... I have a product code and it has 5 types and 5 descriptions. I'm trying to bring to the user the types and descriptions within the blank table. However, the way I'm trying it adds lines below the table that only has 5 lines as in the image below

Photo1=>Registersinthedatabase,Iwantedthenumberstobereturnedinsideatabletodisplaythemtotheuser

index.php

<!--Iniciodoscriptcriadoparafunçãodecompletarpróximoscampos--><scripttype='text/javascript'>$(document).ready(function(){$("input[name='descri']").blur(function(){
                    var $codigo_produto = $("input[name='codigo_produto']");
                    var $id = $("input[name='id']");
                    var $codigo_tipo = $("input[name='codigo_tipo[]']");
                    var $descricao = $("input[name='descricao[]']");                       

                    $.getJSON('function.php',{ 
                            descricao: $( this ).val() 
                    },function( json ){
                            var html = "";
                                for (var i = 0; i < json.length; i++) {
                                  html += '<tr>';
                                    html += '<td><input type="hidden" name="id[]" value="'+json[i].codigo_produto+'"></td>';
                                    html += '<td><input type="text" name="codigo_tipo[]" value="'+json[i].codigo_tipo+'" /></td>';
                                    html += '<td><input type="text" name="descricao[]" value="'+json[i].descricao+'" /></td>';
                                  html += '</tr>';
                                }

                            $("table tbody").append(html);
                    });
            });
    });
</script>  
<!-- Fim do script -->

<form action='salvar.php' method='POST'>   

    <div class='form-group col-lg-4'>
        <label>  <b>Descrição:</b> </label> <!-- Não é enviado para o banco só está sendo utilizado para preencher os campos a partir deste -->
        <input type="text" maxlength="20"  name="descri"><br><br>
    </div>
    <div class='form-group col-lg-4'>
        <label>  <b>Código do Produto:</b> </label>
        <input type="text" maxlength="15"  name="codigo_produto"><br><br>
    </div>

    <table border="2"><!-- Iniciando a Tabela -->

        <thead>
            <tr><!-- Início dos Títulos da Tabela / Cabeçalho -->
                <th>Tipo</th>
                <th>Descrição</th>                                                                                                              
            </tr><!-- Fim dos Títulos da Tabela / Cabeçalho -->
        </thead>

        <tbody>
        <?php for($i = 1; $i <= 5; $i++){ //coloquei este valor para testar ?>        
                <tr>
                    <?php              
                        $sql_tipo = "SELECT * FROM tipoprod ";
                        $resulta = $conn->query($sql_tipo);
                        $row = $resulta->fetch_assoc();
                            echo '<td><input type="hidden" name="id" value="'.$row['id'].'"></td>';
                    ?> 
                    <td><input type="text" name="codigo_tipo[]"</td>
                    <td><input type="text" name="descricao[]" </td> 

                </tr>
           <?php } ?>
        </tbody>

    </table><br>

function.php

  <?php
include_once("conn.php");

function retorna($descricao, $conn){

    $result = "SELECT A.descricao, A.codigo_produto, B.codigo_tipo, B.descricao FROM CADPRO A "
            . " LEFT OUTER JOIN TIPOPROD B ON (A.CODIGO_PRODUTO = B.CODIGO_PRODUTO) WHERE A.descricao= '$descricao' ";

    $resultado = mysqli_query($conn, $result);

    // DECLARA A VARIAVEL
    $valores = array();

    if($resultado){
        while( $row = mysqli_fetch_assoc($resultado)){

            $novo['codigo_produto'] = $row['codigo_produto'];
            $novo['codigo_tipo'] = $row['codigo_tipo'];
            $novo['descricao'] = $row['descricao'];

            array_push($valores, $novo);
        }

    } else {
        return json_encode(array( 'error' => mysqli_error($conn) ));        
    }

    return json_encode($valores);                
}

if(isset($_GET['descricao'])){
    echo retorna($_GET['descricao'], $conn);
}
?>
    
asked by anonymous 20.10.2017 / 21:47

2 answers

1

You should remove the line

print_r($valores);

from the file function.php and then treat the return.

var html = ""; 
$.getJSON('functionx.php',{ 
    descricao: $( this ).val() 
},function( json ){
    for (var i = 0; i < json.length; i++) {
        html += '<tr>';
            html += '<td><input type="hidden" name="id[]" value="'+json[i].codigo_produto+'"></td>';
            html += '<td><input type="text" name="codigo_tipo[]" value="'+json[i].codigo_tipo+'" /></td>';
            html += '<td><input type="text" name="descricao[]" value="'+json[i].descricao+'" /></td>';
        html += '</tr>';
    }
    $("table tbody").html(html);
});
  

You can check out jsbin

    
21.10.2017 / 06:08
1

Only returns one error per account while its While:

 while( $row = mysqli_fetch_assoc($resultado)){         
     $valores['codigo_produto'] = $row['codigo_produto'];
     $valores['id'] = $row['id'];
     $valores['codigo_tipo'] = $row['codigo_tipo'];
     $valores['descricao'] = $row['descricao'];
    }      

Every time he gives a "back", it overwrites the previous information.

Switch to:

while( $row = mysqli_fetch_assoc($resultado))

        $novo['codigo_produto'] = $row['codigo_produto'];
        $novo['id'] = $row['id'];
        $novo['codigo_tipo'] = $row['codigo_tipo'];
        $novo['descricao'] = $row['descricao'];

        array_push($valores, $novo);
    }

    print_r($valores);

And run for the hug!

    
21.10.2017 / 00:11