Ir para conteúdo

POWERED BY:

Arquivado

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

Giovana Garaguso

[Resolvido] Função pg_fetch_row

Recommended Posts

Olá, não sei se estou certa mas a função pg_fetch_row retorna o número da linha do resultado do select não é?

Bom usando esse raciocinio montei esse código:

 

$acharcnpj= pg_query("Select cd_cnpj from empresa WHERE nm_empresa like '%$nmempresa%'");

$linha= pg_fetch_row($acharcnpj);

 

$cnpj = pg_fetch_result($acharcnpj, $linha, 'cd_cnpj');

 

só que quando exibo a variavel $cnpj ela vem sempre com o valor da linha nº1 (segundo registro)

 

alguém sabe onde estou errando?

 

Obrigada desde já =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

o fetch_row traz o resultado em um array, caso o ID seja a primeira coluna, você captura :

 


$acharcnpj= pg_query("Select cd_cnpj from empresa WHERE nm_empresa like '%$nmempresa%'");


$linha= pg_fetch_row($acharcnpj); 

$cnpj = pg_fetch_result($acharcnpj, $linha, 'cd_cnpj');

echo $linha[0];

Compartilhar este post


Link para o post
Compartilhar em outros sites

NÃAAAAAAO! pg_fetch_row() te retorna uma ARRAY() correspondente à LINHA onde está o ponteiro!!!!

 

seu uso é dado da seguinte maneira:

$sql = pg_query('SELECT * FROM `clientes`');
while (false !== ($row = pg_fetch_row($sql))) { ... }

suponhamos que SELECT * FROM `clientes` retorne a seguinte tabela:

 

[ id ] - [ nome ]

1 - João

2 - José

3 - Jair

4 - Joaquim

CADA WHILE preencherá $row com um array numérico

- (1,'João')

- (2,'José')

...

 

 

sugiro o uso de pg_fetch_assoc() que trabalha de maneira igual, mas retorna uma array associativa

 

- ('id'=>1,'nome'=>'João')

- ('id'=>2,'nome'=>'José')

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, se você utilizar fetch_assoc ao invés de fetch_row, para exibir apenas o código fica baba:

(conexão, query, etc)...
while(false !== ($row = pg_fetch_assoc($sql))) echo $row['codigo'].'<br />';

 

quando você usa fetch_assoc, você acessa o valor do campo passando o nome para a variável que recebeu a linha.

quando você usa fetch_row, você acessa passando o índice numérico do campo

echo $row[0].'<br />';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom gente, no fim acabei nem usando o fetch_row! rs

 

Assim... em uma tela eu tenho um <select> que exibe da tabela Empresa os campos nome e cnpj(que é chave primária).

No value do option eu estava colocando o nome da empresa. E quando dava o submit tinha uma variavel que pegava o nome da empresa selecionada e depois criava o select para achar o cnpj correspondente.

Só q nesse select pelo jeito deveria (sabe Deus pq) estar achando mais de um resultado, já que comparava o nome da empresa.

Então estava com esse problema para setar a linha do resultado correto.

 

A solução no final foi bem simples rs. Mudar o value do option para o cnpj e fazer a comparação do select com o cnpj, assim ele retorna 1 valor só, e nem preciso colocar uma variavel no lugar da linha, só o nº 0 basta.

 

Tomara que tenham entendido... rs

o código ficou assim:

 

Select na página de cadastro:

<tr>
<td>Empresa Contratante: </td>
<td colspan=3>
<?php
$conexao= pg_connect ("host=localhost dbname=sistemarh user=season password=season port=5432");


if (!$conexao) 
{
       echo "Falha na conexão com o banco de dados. Veja detalhes técnicos: ".pg_last_error($conexao);
}
else
{
       echo "<select name='nempresa'>";

       $query = "Select nm_empresa, cd_cnpj from empresa";
       $exe = pg_query ($query);
       $n_linhas = pg_num_rows($exe);

       $espaco = "<b>CNPJ:  </b>";

       for ($i=0; $i<=$n_linhas;$i++) 
       { 
               echo "<option value='".pg_fetch_result($exe,$i,'cd_cnpj')."'>".pg_fetch_result($exe,$i,'nm_empresa')." - ".$espaco.pg_fetch_result($exe,$i,'cd_cnpj');
echo "</option>";
       }

       echo "</select>";
}
?>

</td>

</tr>

 

 

 

Código para achar o nome empresa

$cnpj= $_POST['nempresa'];


$acharnempresa= pg_query("Select nm_empresa from empresa WHERE cd_cnpj = '$cnpj'");

$nempresa = pg_fetch_result($acharnempresa, 0, 'nm_empresa');

 

 

Obrigada mais uma vez pela graaande ajuda! Consegui entender melhor o fetch_row e assoc!

 

 

Mais um problema resolvido =)

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.