Ir para conteúdo

POWERED BY:

Arquivado

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

Brayan Rastelli

[Resolvido] Pegar valor da consulta (PDO)

Recommended Posts

Opa.. mais uma vez eu aqui perguntando :P

 

seguinte.. tenho os seguintes arquivos

 

fornecedor.class.php

function getAll($tag = null,$ftag = null)
        {
            try{
                $sql = $this->conex->query("SELECT CODIGO, NOME FROM fornec ORDER BY NOME");
                while($fetch = $sql->fetch())
                {
                    echo $tag,$fetch['NOME'],$ftag;
                }
            }
            catch( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
        }

entrada.php

<?php
     $forn = new fornecedor();
?>
<form action="#" method="post">
    <select name="destino">
        <?php
             $forn->getAll("<option>","</option>");
             $forn->close();
        ?>
    </select>
    <input type="submit" name="entrada" value="Ok" />
</form>

ai tudo bem.. imprimi os campos no select.. mas queria saber como vo passar o valor do código desse fornecedor pro select ?

 

nao tive nenhuma ideia hahah ;S

 

valeuu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na minha concepção está 'esquisito' esse método.

Eu faria:

 

getAll()/* retorna a consulta com todos os registros, e apenas isso, pois assim você pode reutilizar esse método */

makeCombo() /* ou algo do tipo, chama o método getAll(), e já devolve o HTML necessário para a tag <select> */

 

Não afirmo que 'está correto', mas acredito ser uma boa forma de se fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara nao consegui fazer chamando o getAll.. só copiando o metodo :S

 

fiz assim:

 

function getAll($limit = null,$tag = null,$ftag = null)
        {
            try{
                $sql = $this->conex->query("SELECT CODPROD, PRODUTO FROM produtos ORDER BY PRODUTO LIMIT $limit ");
                while($fetch = $sql->fetch())
                {
                    echo '
                          <tr>
                            '.$tag,$fetch['PRODUTO'],$ftag.
                         '</tr>';
                }
            }
            catch( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
        }
        function select()
        {
            try{
                $sql = $this->conex->query("SELECT CODPROD, PRODUTO FROM produtos ORDER BY PRODUTO");
                echo "<select name='produto'>";
                while($fetch = $sql->fetch())
                {
                    echo "<option value=".$fetch['CODPROD'].">".$fetch['PRODUTO']."</option>";
                }
            }
            catch( PDOException $ex ){ echo "Erro: ".$ex->getMessage(); }
        }

como eu faria pra usar o getAll no select() ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Releia:

getAll()/* retorna a consulta com todos os registros, e apenas isso, pois assim você pode reutilizar esse método */

makeCombo() /* ou algo do tipo, chama o método getAll(), e já devolve o HTML necessário para a tag <select> */

 

Nesse caso, não é 'elegante' que as tuas funções 'dêem echo'.

 

Imagina se você precisar de uma função para retornar o número de registros do banco, ai você dá echo de um num_rows.. pronto.. só vai poder usar se quiser 'imprimir'. Se você precisar desse número para uma comparação não será possível. Entendeu? por isso que deveria ser um return

 

Algo como:

protected function getAll()
$sql = "SELECT.. ";
return $this->conex->query( $sql );
}
e pronto. Nada mais.

Ai você usa em outros métodos:

public function combobox()
{
  $query = $this->getAll();
  $option='';//declarando e limpando a variável
  while( $dados = $query->fetch )
  {
     $option .= '<option value="'.$dados['CODPROD'].'">'.$dados['PRODUTO'].'</option>';
  }
  echo $option;//aqui eu não vejo 'mal' em você dar echo
}
pegou 'mais ou menos'?

é assim que vejo. Talvez alguém mais experiente em OO me corrija.

Compartilhar este post


Link para o post
Compartilhar em outros sites

humm entendi http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif

 

devagar to entendendo os esquemas de OOP :D

 

ficou assim

 

protected function getAll($limit = null)
        {
           if($limit != NULL)
                $sql = "SELECT CODPROD, PRODUTO FROM produtos ORDER BY PRODUTO LIMIT $limit ";
           else
                $sql = "SELECT CODPROD, PRODUTO FROM produtos ORDER BY PRODUTO";
           return $this->conex->query( $sql );
        }
        
        function select()
        {
            $query = $this->getAll();
            $option='';
            while( $dados = $query->fetch() )
            {
                $option .= '<option value="'.$dados['CODPROD'].'">'.$dados['PRODUTO'].'</option>';
            }
            echo "<select name='produto'>";
            echo $option;
            echo "</select>";
        }

valeu mais uma vez http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que é por ai.

Mas tente evitar códigos repetidos, e chamadas desnecessárias à funções.

 

Tem 3 echos, onde poderia haver um só.

Isso além de existir uma diferença entre aspas simples e duplas.

 

'Não gostei' do nome da tua função que retorna o <select>, pois pode se confundir com alguma que faça um SELECT na base de dados. Por isso eu tomei a liberdade de renomeá-la para 'combobox'.

 

Tente trabalhar mais com a visibilidade dos métodos, se você não declarar nada, o php assume como public. Mas é bom para você ir se acostumando a usar de forma correta.

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.