Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

glicose

mysql_fetch_array

Mensagens Recomendadas

glicose

Boas, eu precisava quando faço um mysql_fetch array comparar o campo "nome" com o o próximo campo "nome".

Como posso fazer isso?

Por favor é urgente, quem puder ajudar ficaria muito agradecido

Grato

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Podes ter uma variável fora do ciclo que recebe sempre o último valor após uma comparação, por exemplo:

$anterior = "";

while ($actual = função_para_ler_dados()) {
  // comparações ou lá o que tenhas a fazer, aqui
  ...
  
  // actualizar valor para proxima comparação
  $anterior = $actual
}

E evita tópicos do género dúvida urgente, não vais ter mais ajuda por causa disso. Apenas respondi porque era uma questão daquelas que uma pessoa que pergunta está com tão pouca paciência que já não consegue raciocinar como deve ser (por outras palavras, bastante fácil).

EDIT: reli a minha mensagem e pareci ser um bocado bruto. A intenção não era essa, mas sim pedir para evitar esse tipo de tópicos que dão mau ambiente, por exemplo, querer um trabalho já feito. Aqui estás dependente da boa vontade das pessoas, por isso a palavra "urgente" acaba por nem fazer sentido para mim, que ajudei.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
glicose

Desculpe amigo, realmente vou tomar mais cuidado da próxima vez.

Porém ainda não consegui resolver. Pois eu preciso usar o próximo valor já na hora

A minha questão é essa:

$b=mysql_query($query);
while($l=mysql_fetch_array($b)){

$resul=$l[valor] +  $l[valor] ;"(aqui está minha dúvida,tem que somar com próximo valor)"
echo "$resul";

}

Concorda comigo que se eu fizer conforme o exemplo que você deu, a primeira vez que rodar o while não vai somar nada?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Humm, sim, na primeira vez, ele apenas vai estar apenas a somar o primeiro valor com 0. Bem, isso agora depende se queres somar valores par a par ou 2 números imediatamente seguintes, ou seja:

A sequência 5 3 2 4 deve resultar em

5 + 3

3 + 2

2 + 4

Ou em

5 + 3

2 + 4

?


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Só se na primeira vez em que o ciclo execute apenas servir para a variável tomar o valor:

$b=mysql_query($query);
$ultimo = null;
while($l=mysql_fetch_array($b)){
 if ($ultimo == null) {
   $ultimo = $l[0];  // actualizar primeiro valor
   continue; // sai do ciclo para proxima iteração
 }

 $resultado = $ultimo + l[0];
 $ultimo = $l[0];
}

Não testei, mas acho que é isso. Não é a solução mais elegante, mas deve servir para o propósito. Porque se fizermos outra chamada à função mysql_fecth_array para ir buscar o próximo dentro desse ciclo, estamos a avançar o apontador interno do array de resultados do mysql, e perdemos o valor seguinte, na próxima iteração.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
glicose

O problema é que eu não posso sair do ciclo na primeira vez pois eu faço outras coisas dentro do while e já preciso da soma do atual com o próximo neste momento.

Na verdade, mesmo, o meu caso não seria somar, seria comparar se o 5==3, depois se o 3==2, depois se o 2==4

o problema é que esse mysql_fetch_array tem vários campos pra outras funcionalidades que vem depois, e simplesmente eu não posso dar um continue;

Grato por enquanto, se conseguir pensar em algo, não existe nenhuma funcionalidade parecida com mysql_fetch_array?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Acho que existe uma função que pode ajudar, é a mysql_result():

http://www.php.net/manual/en/function.mysql-result.php

Nessa função podemos escolher o número da linha de registos que queremos, a ver se é desta:

$b=mysql_query($query);
$total = mysql_num_rows($b);

for ($i = 0; $i < $total - 1; $i++) {
 // $l vai conter o resultado de actual == seguinte
 // a função mysql_result aceita o 3º argumento como sendo o indice da coluna
 // (ver query, assumi primeira coluna no exemplo)
 $l = (mysql_result($b, $i, 0) == mysql_result($b, ($i+1), 0));
}

Como o último não vai comparar com nada (acho eu), apenas vamos até ao penúltimo valor (que irá comparar com o último). Novamente, não testei.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
glicose

Valeu softclean, deu certo, não conhecia esse mysql_resul, muito útil, muito obrigado pela informação e prestatividade

Abraços!!! :P

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.