Jump to content
Fórum Script Brasil
  • 0

Obter Valor Da Linha Seguinte


turha
 Share

Question

Olá a todos,

Gostaria de saber se existe uma função no php para obter um valor de uma linha seguinte, estando a ler a anterior.

O código é este:

$forum_query = phpfox_sql_query("group_forum"," `user`,`title`,`time`,`reply_id`,`id`,`group_id`,`type` "," ORDER BY `time` DESC LIMIT 0,7");

$group_forum = phpfox_sql_fetch( $forum_query );

$verificar = $group_forum['id'];

$contar = 1;

$result = mysql_result($group_forum,$contar,reply_id);

Ou seja em $verificar eu estou a a colocar o id da actual linha do array, mas em $result eu quero colocar o reply_id da linha seguinte àquela onde estou. A função que ali está depois do $result não está a funcionar. Mais à frente vou colocar o while para ler o array completo, mas antes necessito saber como ler a linha seguinte estando na anterior.

Obrigado

Edited by turha
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Aqui fica o código:

$forum_query = phpfox_sql_query("group_forum"," `user`,`title`,`time`,`reply_id`,`id`,`group_id`,`type` "," ORDER BY `time` DESC LIMIT 0,7");

$group_forum = phpfox_sql_fetch( $forum_query );

$verificar = $group_forum['id'];

$contar = 1;

$result = mysql_result($group_forum,$contar,reply_id);

while ($group_forum = phpfox_sql_fetch( $forum_query ))

{

if ($verificar != $result)

{

$verificar = mysql_result($group_forum,$contar,id);

$contar = $contar +1;

$result = mysql_result($group_forum,$contar,reply_id);

Eu estou a trabalhar em cima de uma plataforma já existente. Será que existirá um variavel personalizada equivalente ao mysql_result ?

Existe uma outra forma de fazer estes calculos sem o usar o mysql_result ou equivalente?

Obrigado

Ok...

Encontrei a função que substitui o mysql_result

Aqui está:

function phpfox_sql_total($id="",$db,$query)

{

if (@$GLOBALS['phpfox_config]['error_reporting'])

{

error_reporting(0);

}

$que = "SELECT Count(*) AS Count FROM $db $query";

$r = phpfox_mysql_query($que);

return mysql_result($r, 0, 0);

}

Como usar esta função no código anterior. Parece-me que a ordem dos elementos é diferente.

O que eu pretendo é que ele execute um conjunto de funções apenas se o $verificar que contem o ID da actual linha for diferente de $result que deverá conter o valor do REPLY_ID da linha seguinte.

Obrigado.

Edited by turha
Link to comment
Share on other sites

  • 0

Estou com enorme dificuldade para compreender seu código, em passos como:

$forum_query = mysql_query("group_forum"," `user`,`title`,`time`,`reply_id`,`id`,`group_id`,`type` "," ORDER BY `time` DESC LIMIT 0,7");
Estou acostumado a ver scripts SQL como argumento da função "mysql_query". Outro problema que estou tendo ao tentar desvendar seu código é o uso de "mysql_fetch_array" em conjunto com "mysql_result", o que, no mínimo, não é recomendado. Bom, você quer comparar o campo "id" de uma linha com o "id" da próxima linha, certo? Vejamos. Analise o código abaixo, acho que dá para imaginar alguma solução para seu caso.
$resultado = mysql_query($sua_consulta_sql);

$num_linhas = mysql_num_rows($resultado);

$id_atual = 0;
$id_seguinte = 0;

if ($num_linhas > 0)
{
    $registro_atual = mysql_fetch_array($resultado);

    if ($num_linhas > 1)
    {
        while ($registro_seguinte = mysql_fetch_array($resultado))
        {
            if ($registro_atual["id"] != $registro_seguinte["id"])
            {
                // executa alguma operação
            }
            else
            {
                // executa alguma outra operação
            }
            $registro_atual = $registro_seguinte;
        }
    }

    // executa alguma operação para único/último registro
}

Edited by CSML sistemas
Link to comment
Share on other sites

  • 0

Olá...

Se eu bem percebi o seu código nós avançamos para o registo seguinte para fazer a comparação, não é? O que eu quero é ficar no mesmo lugar, eu não quero avançar, ou seja, estando na linha 0 eu quero ir à linha 1 ler o id de lá sem sair da linha 0. Ao fazer duas vezes o fetch eu avanço na linha e eu não quero avançar para já.

Não sei se soube explicar bem.

Obrigado

Link to comment
Share on other sites

  • 0

Se for realmente necessário utilizar mysql_result, tente algo como:

$resultado = mysql_query($sua_consulta_sql);

$num_linhas = mysql_num_rows($resultado);

for ($i = 0; $i < $num_linhas; $i++)
{
    $id_atual = mysql_result($resultado, $i, "id");

    if ($i < $num_linhas - 1)
    {
        $id_seguinte = mysql_result($resultado, ($i + 1), "id");

        if ($id_atual != $id_seguinte)
        {
            // executa alguma operação com os valores (obter com mysql_result na linha $i)
        }
        else
        {
            // executa alguma outra operação se forem iguais
        }
    }
    else
    {
        // executa alguma operação para único/último registro (obter com mysql_result na linha $i)
    }
}

Lembre-se que, ao usar mysql_result para obter dados de resultados de consultas realizadas com mysql_query, não se deve usar outro método para tal combinado. Ou seja, usou mysql_result, continue com mysql_result. Outra recomendação: caso seja possível usar um método que retorne uma linha inteira, como mysql_fetch_array, não use mysql_result, por questão de performance. Outra recomendação: se seu banco de dados MySQL estiver na versão 5.0 ou superior, adquira desde já o hábito de usar a biblioteca mysqli. Só mais uma recomendação: se usar mysqli, experimente o estilo de programação orientada a objetos. :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...