Ir para conteúdo
Fórum Script Brasil
  • 0

Obter Valor Da Linha Seguinte


turha

Pergunta

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

Editado por turha
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 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.

Editado por turha
Link para o comentário
Compartilhar em outros 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
}

Editado por CSML sistemas
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...