Página 1 de 1

PHP - mysql_result

Enviado: 28 Fev 2015 22:38
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?

PHP - mysql_result

Enviado: 01 Mar 2015 07:30
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,

PHP - mysql_result

Enviado: 05 Mar 2015 01:13
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.

PHP - mysql_result

Enviado: 05 Mar 2015 09:56
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+

PHP - mysql_result

Enviado: 07 Mar 2015 01:31
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>

PHP - mysql_result

Enviado: 07 Mar 2015 10:58
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 

PHP - mysql_result

Enviado: 07 Mar 2015 14:47
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.