Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

crzcrazycrz

select retornar itens do banco e sub itens em text

Recommended Posts

Ola amigos

tenho um app em php preciso que o select que esta retornando uma row do bd

select name="teste" id="teste" style="width:200px; margin-right:10px">
      <?php
      $smt->execute();
            while ($row = $smt->fetch()){
              echo "<option>" . $row["lanche"] ."</option>";
            }
    
        $connection = null;
        if(isset($_POST["lst_exam"]));  
     ?>
</select>

E gostaria que ao selecionar neste select ele retornasse as outras rows do item selecionado em outros text

 

 

grato

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda Tao agil...

 

Agora troquei a variavei e nao faz nada poderia dar uma olhada onde estou errando

 

index.php

    <html>
    <head>
    <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
    $("select[name='nome']").change(function(){
    var lanche = $("input[name='lanche']");
    var valor = $("input[name='valor']");
     
    $( lanche ).val('Carregando...');
    $( valor ).val('Carregando...');
     
    $.getJSON(
    'function.php',
    { idCliente: $( this ).val() },
    function( json )
    {
    $( lanche ).val( json.lanche );
    $( valor ).val( json.valor );
    }
    );
    });
    });
    </script>
    </head>
    <body>
    <form action="" method="post">
    <label>Nome: <select name="nome">
    <option value="">--</option>
    <?php
    include 'function.php';
    echo montaSelect();
    ?>
    </select></label>
    <label>lanche: <input name="test" type="text" value="" /></label>
    <label>valor: <input type="text" name="test1" value="" /></label>
    </form>
     
     
    <div id="test"></div>
    </body>
    </html>

function.php

    <?php
	$connection = new PDO('mysql:host=localhost;dbname=lanchonete', 'root', '');

  //insertion function
    $smt = $connection->prepare('select * From lanches');
    
/**
    * função que retorna o select
    */
    function montaSelect()
    {
    $sql = "SELECT * FROM `lanches` ";
    $query = mysql_query( $sql );
     
    if( mysql_num_rows( $query ) > 0 )
    {
    while( $dados = mysql_fetch_assoc( $query ) )
    {
    $opt .= '<option value="'.$dados['lanche'].'">'.$dados['valor'].'</option>';
    }
    }
    else
    $opt = '<option value="0">Nenhum cliente cadastrado</option>';
     
    return $opt;
    }
     
    /**
    * função que devolve em formato JSON os dados do cliente
    */
    function retorna( $id )
    {
    $id = (int)$id;
     
    $sql = "SELECT *
    FROM `lanche` WHERE `id` = {$id} ";
    $query = mysql_query( $sql );
     
     
    $arr = Array();
    if( mysql_num_rows( $query ) )
    {
    while( $dados = mysql_fetch_object( $query ) )
    {
    $arr['lanche'] = $dados->lanche;
    $arr['valor'] = $dados->valor;
    }
    }
    else
    $arr[] = 'endereco: não encontrado';
     
    return json_encode( $arr );
    }
     
    /* só se for enviado o parâmetro, que devolve o combo */
    if( isset($_GET['lanche']) )
    {
    echo retorna( $_GET['valor'] );
    }

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

    if( isset($_GET['lanche']) )
    {
    echo retorna( $_GET['valor'] );
    }
tem q ser igual ao:

{ idCliente: $( this ).val() },
vc tá usando 3 coisas diferentes, onde veria ser todas a mesma coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

if( isset($_GET['lanche']) )
    {
    echo retorna( $_GET['lanche'] );
    }
fis assim

{ lanche: $( this ).val() },
continua sem popular o select

 

esse idCliente tinha passado depercebido

 

 

BD nome = lanchonete table nome= lanches colunas = id lanche valor estoque tipo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acessa lá no browser:

 

function.php?lanche=1 e veja se volta um json. Se voltar erros php, corrija-os até aparecer um JSON corretamente. Só daí para frente podemos começar a ver o js.

Compartilhar este post


Link para o post
Compartilhar em outros sites

corrigi alguns erros sobrou este que nao sei como corrigir

Warning: mysql_num_rows() expects parameter 1 to be resource, string given in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\projetosite\function.php on line 39

após algumas modificacçoes o codigo esta assim

 <?php
    $connection = new PDO('mysql:host=localhost;dbname=lanchonete', 'root', '');

  //insertion function
    $smt = $connection->prepare('select * From lanches');
    
/**
    * função que retorna o select
    */
    function montaSelect()
    {
    $smt = $connection->prepare('select * From lanches');
    
     
    if( mysql_num_rows( $smt ) > 0 )
    {
    while( $dados = mysql_fetch_assoc( $smt ) )
    {
    $opt .= '<option value="'.$dados['lanche'].'">'.$dados['valor'].'</option>';
    }
    }
    else
    $opt = '<option value="0">Nenhum cliente cadastrado</option>';
     
    return $opt;
    }
     
    /**
    * função que devolve em formato JSON os dados do cliente
    */
    function retorna( $id )
    {
    $id = (int)$id;
 
   $smt = ('select * From lanches');
       

    $arr = Array();
    if( mysql_num_rows( $smt ))
    {
    while( $dados = mysql_fetch_object( $smt ) )
    {
    $arr['lanche'] = $dados->lanche;
    $arr['valor'] = $dados->valor;
    }
    }
    else
    $arr[] = 'endereco: não encontrado';
     
    return json_encode( $arr );
    }
     
    /* só se for enviado o parâmetro, que devolve o combo */
    if( isset($_GET['lanche']) )
    {
    echo retorna( $_GET['lanche'] );
    }
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se vc vai usar PDO, não tem sentido nenhum vc usar mysql_

 

leia a documentação do PDO, para vc trocar todas as mysql_ pelas correspondentes do PDO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao pesquisando cheguei ao seguinte codigo

    <?php
	$connection = new PDO('mysql:host=localhost;dbname=lanchonete', 'root', '');

  //insertion function
    $smt = $connection->prepare('select * From lanches');
    
/**
    * função que retorna o select
    */
    function montaSelect()
    {
    $smt = $connection->prepare('select * From lanches');
    
     
    if( $stmt->rowCount() > 0 )
    {
    while( $dados = $smt->fetch(PDO::FETCH_ASSOC ))
 {
    $opt .= '<option value="'.$dados['lanche'].'">'.$dados['valor'].'</option>';
    }
    }
    else
    $opt = '<option value="0">Nenhum cliente cadastrado</option>';
     
    return $opt;
    }
     
    /**
    * função que devolve em formato JSON os dados do cliente
    */
    function retorna( $id )
    {
    $id = (int)$id;
     
    $smt = ('select * From lanches');
     
     
    $arr = Array();
    if($smt -> rowCount($smt))
    {
    while($row = mysql_fetch_object($result) )
    {
    $arr['lanche'] = $dados->lanche;
    $arr['valor'] = $dados->valor;
    }
    }
    else
    $arr[] = 'endereco: não encontrado';
     
    return json_encode( $arr );
    }
     
    /* só se for enviado o parâmetro, que devolve o combo */
    if( isset($_GET['lanche']) )
    {
    echo retorna( $_GET['lanche'] );
    }

da um erro na linha 39

Fatal error: Call to a member function rowCount() on a non-object in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\projetosite\function.php on line 39

Desculpa a ignorancia rs

e que o php nao e minha praia so preciso dessa passada nele para criar um arquivo xml para ler em vba

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
	$connection = new PDO('mysql:host=localhost;dbname=lanchonete', 'root', '');

  //insertion function
    $smt = $connection->prepare('select * From lanches');
    
/**
    * função que retorna o select
    */
    function montaSelect()
    {
    $smt = $connection->prepare('select * From lanches');
    
     
    if( $smt->rowCount() > 0 )
    {
    while( $dados = $smt->fetch(PDO::FETCH_ASSOC ))
 {
    $opt .= '<option value="'.$dados['lanche'].'">'.$dados['valor'].'</option>';
    }
    }
    else
    $opt = '<option value="0">Nenhum cliente cadastrado</option>';
     
    return $opt;
    }
     
    /**
    * função que devolve em formato JSON os dados do cliente
    */
    function retorna( $id )
    {

    $id = (int)$id;
     
        
    $arr = Array();
    if($smt->rowCount())
    {
    while($dados = $smt->fetch(PDO::FETCH_OBJ ))
    {
    $arr['lanche'] = $dados->lanche;
    $arr['valor'] = $dados->valor;
    }
    }
    else
    $arr[] = 'endereco: não encontrado';
     
    return json_encode( $arr );
    }
     
    /* só se for enviado o parâmetro, que devolve o combo */
    if( isset($_GET['lanche']) )
    {
    echo retorna( $_GET['lanche'] );
    }

acho que iso eh o mais proximoda solucao?

 

 

quando entro em http://localhost/projects/projetosite/function.php?lanche=1

 

da esses erros

 

Notice: Undefined variable: smt in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\projetosite\function.php on line 38

 

Fatal error: Call to a member function rowCount() on a non-object in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\projetosite\function.php on line 38

 

da uma luz ai por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro: na função montaSelect vc ta usando $connection, mais isso dentro da função não existe!

use um global pra pegar a variavel!

 

function montaSelect() {
    global $connection;
    $smt = $connection->prepare("SELECT * FROM lanches");
e dentro da função "retorna" a mesma coisa
function retorna($id) {
    global $connection;
    $id = (int)$id;
    $arr = Array();
    $smt = $connection->prepare("SELECT * FROM lanches");

enfim, Tem muitos exemplos básicos na net para aprender a usar as paradas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao quando digito http://localhost/projects/projetosite/function.php?lanche=1

 

a pagina fica em branco

 

apareceu batante erro quando fiz Ctrl + Shift + J

vou tentar arruma-los


<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">

 

esse src= jquery-1.4.2.min.js tenho q apontar para onde preciso criar um arquivo .js?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse cara vc faz download no site

http://jquery.com/download/

Compartilhar este post


Link para o post
Compartilhar em outros sites

ReferenceError: $ is not defined index1.php:5

A codificação de caracteres do documento HTML não foi declarada. O documento será exibido com texto corrompido em algumas configurações de navegadores se o documento contiver caracteres fora da faixa US-ASCII. A codificação de caracteres da página deve ser declarada no documento ou protocolo de transferência. index1.php

    <script type="text/javascript" src="C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\scripts\jquery-1.11.2.min.js"></script>
    <script type="text/javascript">

linha 5

$(document).ready(function(){

essa linguagem ta me deixando de cabelo em pe :upset:

 

juro que na primeiro oportunidade vo pega ela pra valer


tem que baixar o 4 links?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, apenas um.

 

você não pode informar um caminho apartir do C:.

Precisa ser um caminho relativo ao webservice. Isso é html básico.

 

Agora voltando ao php, q você também está com problemas, deve aparecer um JSON, se ficar em branco, é pq ainda tem erro no teu php.

 

 

Vc não vai conseguir fazer isso, sem parar e estudar um mínimo de PHP, JavaScript e HTML.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma coisa entao

 

tenho este select que recebe dados do banco

<select name="teste" id="teste" style="width:200px; margin-right:10px">

       <?php
	  $smt->execute();
            while ($row = $smt->fetch()){
              echo "<option>" . $row["lanche"] ."</option>";
            }
	
			
          $connection = null;
        if(isset($_POST["lst_exam"]));  
	

  ?>
</select>

ai tenho 2 text do lado e quero que elaas recebam lanche e o valor

 

nao existe uma maneira simples de se fazer isso ou e expressamente necessario passar por json js etc??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, vc precisa passar pelo JSON e pelo AJAX.

Sem isso não tem como fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.