Jump to content


Photo

Dúvida De Results Dentro Do While


  • Faça o login para participar
3 replies to this topic

#1 Alex Mello

Alex Mello

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 06/10/2008, 17:03

Dois results dentro de um único While é possivel....??

Tipo não sei se estou pensando de forma errada, mas o problema é o seguinte estou desenvolvendo um chat simples em Php, porém travei na parte das mensagens reservadas.

Eu acredito que só possa ser um while dentro de uma tabela, e dentro desse while ele vai apresentar em sincronia tanto as mensagens gerais quanto as mensagens reservadas.

Fiz isso desta forma

SELECT * FROM mensagens ( Select 1 Apresenta tudo )
rs = mysql_query($sql); // aqui faço o result dele

o outro

SELECT * FROM mensagens WHERE a condicão de reservado = 1 setada no banco( Select 2 Apresenta tudo )
rs = mysql_query($sql); // aqui faço o result dele

até aí blz

o problema que no while ($row = mysql_fetch_array($rs)){

se eu colocar a variavel rs ele só chama o último select e se eu der um nome para cada eu não encontrei se consigo chamar os dois results neste while

}

Desde já agradeço aí quem puder tirar essa dúvida ou dar alguma outra solução.

Achei algo assim na documentação do Php só que não estou conseguindo usar, alguém poderia me dizer se é isso mesmo e dar um exemplo

<?php

$q1 = 'some query on a set of tables';
$q2 = 'similar query on a another set of tables';

if ( (($r1=mysql_query($q1)) && ($r2=mysql_query($q2)) ) {

while (($row=mysql_fetch_assoc($r1))||($row=mysql_fetch_assoc($r2))) {

/* do something with $row coming from $r1 and $r2 */

}
}

?>

grato

#2 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 06/10/2008, 17:06

Cara, eu achei muito confuso :)
Mas acho que você poderia fazer tudo em uma única query... daí vai ter um única resource. Utilize UNION pra isso:
SELECT * FROM tabela WHERE familia='tesser' UNION SELECT * FROM tabela WHERE familia = 'pedroso'
Serve? :)(y)

Edição feita por: boirock, 06/10/2008, 17:06.


#3 Alex Mello

Alex Mello

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 06/10/2008, 17:44

Então Boirock valeu pela dica aí cara, mas ja tentei com o UNION, não sei se não soube usar porque tb nunca usei UNION, mas não deu certo.

vou tentar explicar mais simples.

tem uma tabela só para isto, quando alguém clica no campo reservado eu seto o valor 1 para essa conversa caso contrário vai 0 até aí tranquilo.

só que eu acho que preciso de duas querys, uma normal que puxa todo mundo com 0 e 1 e independente de quem está na Session.

e outra só para os reservados = 1 AND nick = '$nick_session' , para só esses caras poderem ver as conversas particulares... eu acho que ficu claro assim.

só que tem que rolar em um laço, eu não sei se com SELECT UNION rola, quando eu fiz ele puxava todo mundo sempre, ou seja, puxava os reservados nas conversas abertas.

Ps. Eu não sei se pode postar o código aí é que as vezes vejo o pessoal do fórum reclamando com quem fica jogando os códigos para a galera resolver em vez de tentar solucionar o problema estudando.

Mas minha dúvida é essa e obrigado aí cara
Abraços

#4 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 06/10/2008, 17:57

Nesse caso, nem de UNION você precisa... é só trabalhar seu WHERE (y) e faz com um único SELECT

WHERE reservado = 0 OR (reservado = 1 AND destinatario=$usuario_da_session)

Vai funcionar

Edição feita por: boirock, 06/10/2008, 17:57.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq