1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Listagens de acordo com uma selecção

Discussão em 'Web Development' iniciada por satman1, 21 de Outubro de 2008. (Respostas: 1; Visualizações: 413)

  1. satman1

    satman1 Power Member

    Olá,

    Preciso de ajuda para fazer o seguinte:

    Tenho esta função que permite seleccionar um pagamento para listar. Pretendo que quando seleccione esse pagamento seja gerada a listagem cuja query está no segundo bloco de código.
    Código:
    
    function filtraPagamentos($option)
    {
    $db=& JFactory::getDBO();
    $rowsPagamento=array();
    $query = "SELECT id_pagamento as value, descricao_pagam as text FROM #__pagamentos";
    $db->setQuery($query );
    $rowsPagamento =$db->loadObjectList();
    $rowsPagamento['descricao_pagam']= JHTML::_('select.genericlist',$rowsPagamento,'id_pagamento','class="inputbox" size="1"', 'value', 'text',$row->id_pagamento);
    
    Código:
    
    $db=& JFactory::getDBO();
    $db->setQuery("SELECT nome_user,descricao_pagam,montante_pagam,valor_pago,data_pagam_efectuado from #__pagamentos_socios ps, #__associados a,#__users u,#__pagamentos p 
    WHERE ps.idAssociado=a.id AND a.id_user=u.id AND ps.id_pagamento=p.id_pagamento AND p.id_pagamento='$rowsPagamento');
    $rows = $db->loadObjectList();
    if($rows == null){
    echo "Nao existem pagamentos de socios para mostrar!";
    }
    if ($db->getErrorNum())
    {
    echo $db->stderr();
    return false;
    }
    
    HTML_pagamentos::verPagamentoSocio($rows, $option, $rowsPagamento);
    }
    
    Como consigo fazer com que quando se faça a selecção faça a listagem? Eu envio o "$rowsPagamento" mas esta query não devolve nada, presumo que seja por não enviar o pagamento que seleccionei.Como posso ultrapassar este problema?
     
  2. alfinete

    alfinete Power Member

    como não sei muito de php ,

    olhei apenas para o sql , e a meu ver estas a fazer alguma coisa mal,
    como n conheço aou não percebi bem que dados queres chamar

    decidi criar um exemplo em sql para ver se te ajuda a resolver o teu prob

    criei duas tabelas para dar um sexemplo de um select

    uma tan_user


    id_user int
    nome varchar(50)


    outra tab_pagamento

    id_utilizador int
    descricao_pagam varchar(50)
    montante_pagam varchar(50)
    valor_pago varchar(50)
    data_pagam_efectuado varchar(50)

    e fiz um select com a descrição de tdos os pagamento feitos por um utilizador

    Código:
    
    select util.nome as nome ,
             descricao_pagam as descricao,
             montante_pagam as montante,
            valor_pago     as [valorpago],
            data_pagam_efectuado as [data pagamento]
    
    from tab_pagamento pag
    
     JOIN tab_user util ON util.id_user = pag.id_utilizador
    
    where id_user = 1
    
    

    esta a seleccionar todos os pagamento regerentes ao id de um utilizador

    nota:

    atenção tens join, left join e right join não me lembro das diferenças mas é so uma questão de googlar

    quando queres mostrar dados entre duas tabelas tens sempre de usar uma qualquer das hipoteses do join

    nota:



    no join em primeiro a tabela onde vais tirar a associação e um alias para a destingir

    "tab_user util"

    , depois:

    poes o id da tabela tab_user - "util.id_user " =

    ao id da tabela onde estas a tirar o dados referente a anterior - pag.id_utilizador

    se tivers dados de varias tabelas tens de fazer um join para cada tabela

    _____________

    parecido ao teu caso.. referente ao meu exemplo

    puxas os ids e nomes de utilizador tdos para uma listagem ,

    do tipo select id_util ,
    nome
    from tab_util

    depois referente ao id do mesmo seleccionado puxas os dados que queres referentes a esse id....

    espero que tenha ajudado
     

Partilhar esta Página