PHP - mysql_result

Fórum sobre outras linguagens de programação.

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP - mysql_result

Mensagem por cjp »

Colegas,

Estou enfrentando um problema estranho em um PHP: tenho uma tabela no MySQL com a seguinte estrutura:

Código: Selecionar todos

         cQuery:="CREATE TABLE recado ("+;
	      "NRRECADO int(1),"+;
	      "DATA date,"+;
          "HORA char(8),"+;
          "USUARIO char(1),"+;
          "RECADO mediumtext,"+;
          "RESPOSTA mediumtext,"+;
          "VISTO char(1))"
Já conferi pelo HeidiSQL que está mesmo com os registros nesta ordem.

Quando tento exibir campos da tabela em um PHP usando o mysql_result, desta forma:

Código: Selecionar todos

 while (mysql_fetch_row($rs))
 {
  
  echo '<br>';
  echo "Nr Recado: ".mysql_result($rs,$i,0);
  echo '<br>';
  echo "Data: ".mysql_result($rs,$i,1);
  echo '<br>';
  echo "Hora: ".mysql_result($rs,$i,2);
  echo '<br>';
  echo "Usuário: ".mysql_result($rs,$i,3);
  echo '<br>';
  echo "Recado: ".mysql_result($rs,$i,4);
  echo '<br>';
  if (mysql_result($rs,$i,4)>'2000-01-01')
     {
	 echo "Data de resposta: ".mysql_result($rs,$i,5);
     echo '<br>';
     echo "Hora da resposta: ".mysql_result($rs,$i,6);
     echo '<br>';
     echo "Resposta: ".mysql_result($rs,$i,7);
     echo '<br>';
	 }

 $i++;
 }
Estranhamente, até o campo Hora, tudo certo. Mas a partir do campo Usuário, a exibição fica errada. Ela está suprimindo o campo Usuário e passando ao próximo. Então, no campo Usuário (mysql_result($rs,$i,3)) está aparecendo o campo Recado; no recado, está aparecendo o Data da resposta, e assim por diante.

Ou seja, o campo Usuário, que é o quarto da ordem, não aparece no result.

Já conferi que o campo não está vazio.

Alguém sabe me dizer a razão disso? Estou fazendo algo errado?
Inacio de Carvalho Neto
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

PHP - mysql_result

Mensagem por Toledo »

Amigo, acho que seria mais fácil trocar a função mysql_fetch_row() por mysql_fetch_array(), assim você pode buscar o conteúdo dos campos pelo próprio nome dos campos, independente da ordem física que o campo está dentro da tabela. Veja um exemplo:

Código: Selecionar todos

while ($dados = mysql_fetch_array($rs))
  {
  
    echo '';
    echo "Nr Recado: ".$dados['NRRECADO'];
    echo '';
    echo "Data: ".$dados['DATA'];
    echo '';
    echo "Hora: ".$dados['HORA'];
    echo '';
    echo "Usuário: ".$dados['USUARIO'];

  }
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP - mysql_result

Mensagem por cjp »

Estranhamente, neste caso dois campos não aparecem: data e usuario.

Já testei com maiúsculas e com minúsculas (embora na tabela estejam com maiúsculas), porque o campo nrrecado só funcionou com minúsculas (embora também esteja com maiúscula na tabela, ao menos consultando pelo HeidiSQL), mas não funcionou.
Inacio de Carvalho Neto
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

PHP - mysql_result

Mensagem por ANDRIL »

Poste a query que esta usando para retorno dos dados.

Possivelmente o problema esta em sua tabela que foi criada via codigo. Tente cria-la diretamente pelo MYSQL e faça o teste para ver se ocorre o mesmo problema.

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP - mysql_result

Mensagem por cjp »

Estou fazendo assim:

Código: Selecionar todos

<?php
session_start();
require 'protege.php';
if (!isset($_SESSION['s_login'])) {
 return;
}
?>
<html>
 <head>
  <title>Verificando respostas a recados</title>
 </head>
 <body>
<?php

$banco = "xxx";
$usuario = "xxx";
$senha = "xxx";
$hostname = "mysql.xxx.com.br";

echo '<font size="38">';

$conn = mysql_connect($hostname,$usuario,$senha);
if (!$conn) {echo "Não foi possível conectar ao banco MySQL.
"; exit;}


$sel=mysql_select_db($banco,$conn);
if (!sel)
   {
    echo "Não foi possível abrir o banco de dados";
    echo 'MySQL Error: ' . mysql_error();
    exit;
	}
$sql="SELECT nrrecado,date_format(data,'%d/%m/%Y'),hora,recado,date_format(dtresposta,'%d/%m/%Y'),hrresposta,resposta FROM recado WHERE (usuario='I' AND visto='N') OR visto='S'";
 $rs=mysql_query($sql);
 if (!$rs)
 {exit("Error in SQL");}

 $nrec = mysql_num_rows($rs); //total de recados

 echo "Total de recados: ".$nrec;
      echo '<br>';

while ($dados = mysql_fetch_array($rs))
 {
 
  echo '<br>';
  echo '';
  echo "Nr Recado: ".$dados['nrrecado'];
  echo '<br>';
  echo '';
  echo "Data: ".$dados['Data'];
  echo '<br>';
  echo '';
  echo "Hora: ".$dados['hora'];
  echo '<br>';
  echo '';
  echo "Usuário: ".$dados['Usuario'];
  echo '<br>';
  echo '';
  echo "Recado: ".$dados['recado'];
  echo '<br>';
  if ($dados['dtresposta']>'2000-01-01')
     {
	 echo "Data de resposta: ".$dados['dtresposta'];
     echo '<br>';
     echo "Hora da resposta: ".$dados['hrresposta'];
     echo '<br>';
     echo "Resposta: ".$dados['resposta'];
     echo '<br>';
	 }

 }
	  
 echo "</form>";
 echo "</font>";
?>

 </body>
</html>
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

PHP - mysql_result

Mensagem por JoséQuintas »

Não entendo de PHP, mas por acaso não é esta ordem que está sendo obedecida? Aqui não tem usuário.

Código: Selecionar todos

$sql="SELECT nrrecado,date_format(data,'%d/%m/%Y'),hora,recado,date_format(dtresposta,'%d/%m/%Y'),hrresposta,resposta FROM recado WHERE 
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

PHP - mysql_result

Mensagem por cjp »

Vc tinha razão, Quintas, é claro que faltava o usuario no select, e por isso não funcionava. Agora resolveu.

De quebra, resolvi também o problema com o campo Data. Descobri que o problema era o date_format. Usando a cláusula As, resolveu.

Muito obrigado a todos.
Inacio de Carvalho Neto
Responder