Jump to content


Photo

If Dentro Do For


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

#1 DNL

DNL

    Daniel

  • Usuários
  • 40 posts
  • Sexo:Não informado
  • Localidade:Taubté - SP

Posted 24/07/2006, 10:57

Olá pessoal, estou com o seguinte problema, tenho um for e dentro delte um select q pega os dados de uma tabela conforme a data estipulada anteriormente num form, daí blz, daí tenho um if que conforme o resultado do select dá um vlor diferente para uma variável, só que o problema é que se tem 3 registros para certa data ele só exibe o primeiro e deixa os outros de fora... vou colocar o código do for para ficar mais fácil:

//A variavel consultas ja esta cetada no código...
for($f = 0; $f<$consultas; $f++){
	$i = $duracao*$f;
	
	//Pesquisa no bd pelo campo data, na tabela o campo data esta com o tipo date e a variável data tb esta no mesmo formato...  
	$w = mysql_query("SELECT * FROM consultas WHERE data = '$data'");
	$z = mysql_fetch_array($w);

	//coloca na variavel horario o valor do campo horario vindo da pesquisa
	$horario = $z['horario'];

	//if que define um valor para a variavel resultado
	if ($f == $horario) { $resultado = 'Nome: '.$z['paciente'].''; } else { $resultado = '<a href="" onclick="xajax_NovaEntrada(\''.$f.'\');return false;">Adicionar Nova Entrada</a>'; }

	//Variável que guarda o resultado que vai ser exibido
	$Bsc .= '
	<tr>
	<td style="text-align: center;font-weight:bold;">'.date("H:i", mktime(8, 0+$i, 0, date("m"), date("d"), date("y"))).' - '.$f.'</td>
	<td><div id="'.$f.'">'.$resultado.'</div></td>
	</tr>
	';
}

esse é um pedaço de uma função do xajax, o xajax está funcionando corretamente na página pois tem outras funções na mesma página que estão funcionando certinho...

Valew
"Seja você mesmo, mas não seja sempre o mesmo"

#2 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 24/07/2006, 14:03

Será que com while não seria mais fácil de fazer o que vc deseja???

Té mais ;)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#3 DNL

DNL

    Daniel

  • Usuários
  • 40 posts
  • Sexo:Não informado
  • Localidade:Taubté - SP

Posted 24/07/2006, 14:38

Será que com while não seria mais fácil de fazer o que vc deseja???

Té mais ;)


Dá alguma diferença entre usar while ou for? como ficaria?






Valew,
Até+
"Seja você mesmo, mas não seja sempre o mesmo"

#4 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 24/07/2006, 14:44

Veja ai se isso faz o que vc deseja...

//Pesquisa no bd pelo campo data, na tabela o campo data esta com o tipo date e a variável data tb esta no mesmo formato...
$w = mysql_query("SELECT * FROM consultas WHERE data = '$data'");
$f = 0;
WHILE($z = mysql_fetch_array($w)){
//coloca na variavel horario o valor do campo horario vindo da pesquisa
$horario = $z['horario'];
$i = $duracao*$f;
//if que define um valor para a variavel resultado
if ($f == $horario) { $resultado = 'Nome: '.$z['paciente'].''; } else { $resultado = '<a href="" onclick="xajax_NovaEntrada(\''.$f.'\');return false;">Adicionar Nova Entrada</a>'; }

//Variável que guarda o resultado que vai ser exibido
$Bsc .= '
<tr>
<td style="text-align: center;font-weight:bold;">'.date("H:i", mktime(8, 0+$i, 0, date("m"), date("d"), date("y"))).' - '.$f.'</td>
<td><div id="'.$f.'">'.$resultado.'</div></td>
</tr>
';
$f++;
}


Qualquer problema poste ai ;)



Té mais (y)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#5 DNL

DNL

    Daniel

  • Usuários
  • 40 posts
  • Sexo:Não informado
  • Localidade:Taubté - SP

Posted 24/07/2006, 14:55

tb não deu certo, antes de vc postar eu tinha tentado com o while... tentei tb com o do while e nada...

esse esquema que estou fzd é tipo uma agenda de marcação de consultas, daí tipo fica uma lista de horários, e na parte de cima fica um form onde escolhe dia/mes/ano e dependendo da escolha ele mostra no resultada abaixo, daí o que está acontecendo, naquele esquema que eu fiz se no dia 21/07/06 tem 3 consultas marcadas ele está mostrando só a 1ª, digamos a consulta das 9h, daí as outras duas ele não mostra...

qnd coloquei o q vc postou o que deu errado é que por exemplo digamos q nesse dia tem 3 consultas, daí ele mostrou só os 3 primeiros horários (8h, 8:20, 8:40) e não mostro mais nada, e msm assim além de mostrar não mostra as informações do horário...

veja como fiz aqui no meu usando while e do while

do while:

$f = 0;

do {
$i = $duracao*$f;

$w = mysql_query("SELECT * FROM consultas WHERE data = '$data' ORDER BY horario");
$z = mysql_fetch_array($w);

$horario = $z['horario'];

if ($f == $horario) { $resultado = 'Nome: '.$z['paciente'].''; } else { $resultado = '<a href="" onclick="xajax_NovaEntrada(\''.$f.'\');return false;">Adicionar Nova Entrada</a>'; }

$Bsc .= '
<tr>
<td style="text-align: center;font-weight:bold;">'.date("H:i", mktime(8, 0+$i, 0, date("m"), date("d"), date("y"))).' - '.$f.'</td>
<td><div id="'.$f.'">'.$resultado.'</div></td>
</tr>
';
$f++;

} while($f<$consultas);


while:

$f = 0;
while($f<$consultas){
$i = $duracao*$f;

$w = mysql_query("SELECT * FROM consultas WHERE data = '$data' ORDER BY horario");
$z = mysql_fetch_array($w);

$horario = $z['horario'];

if ($f == $horario) { $resultado = 'Nome: '.$z['paciente'].''; } else { $resultado = '<a href="" onclick="xajax_NovaEntrada(\''.$f.'\');return false;">Adicionar Nova Entrada</a>'; }

$Bsc .= '
<tr>
<td style="text-align: center;font-weight:bold;">'.date("H:i", mktime(8, 0+$i, 0, date("m"), date("d"), date("y"))).' - '.$f.'</td>
<td><div id="'.$f.'">'.$resultado.'</div></td>
</tr>
';
$f++;
}


"Seja você mesmo, mas não seja sempre o mesmo"

#6 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 24/07/2006, 18:14

Você quer listar as consultas dessa QUERY ?
$w = mysql_query("SELECT * FROM consultas WHERE data = '$data' ORDER BY horario");

?

Se sim, você está usando o WHILE no lugar errado!

$f = 0;
while($f<$consultas){
$i = $duracao*$f;

$w = mysql_query("SELECT * FROM consultas WHERE data = '$data' ORDER BY horario");
while ($z = mysql_fetch_array($w)) {

$horario = $z['horario'];

if ($f == $horario) { $resultado = 'Nome: '.$z['paciente'].''; } else { $resultado = '<a href="" onclick="xajax_NovaEntrada(\''.$f.'\');return false;">Adicionar Nova Entrada</a>'; }

$Bsc .= '
<tr>
<td style="text-align: center;font-weight:bold;">'.date("H:i", mktime(8, 0+$i, 0, date("m"), date("d"), date("y"))).' - '.$f.'</td>
<td><div id="'.$f.'">'.$resultado.'</div></td>
</tr>
';
$f++;
 }
}

essa váriavel $consultas vem da onde ?

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#7 DNL

DNL

    Daniel

  • Usuários
  • 40 posts
  • Sexo:Não informado
  • Localidade:Taubté - SP

Posted 24/07/2006, 18:23

e aí td bem? então é daquela query msm mas esse esquema que vc passou não deu certo tb...

essa consultas faz parte de uma função do xajax... vou colocar a função inteira aqui:

function MostrarAgenda($f)

{
$Agenda = new xajaxResponse();

//pega o id da medica q tá na url
$id_med = $_GET['id'];
global $id_med;

//seleciona a médica pelo id acima
$y = mysql_query("SELECT * FROM medicas WHERE id = '$id_med'");

$x = mysql_fetch_array($y);

//pega no resultado da busca o tempo de consulta da médica (15,20,25 ou 30 minutos)
$duracao = $x['tempoconsulta'];

//Dependendo do tempo da duracao tem um tanto de consultas p/ dia
if ($duracao == 15) { $consultas = "53"; }
elseif ($duracao == 20) { $consultas = "40"; }
elseif ($duracao == 25) { $consultas = "32"; }
elseif ($duracao == 30) { $consultas = "27"; }

//Aqui fica mas variáves que vieram do form
$dia = $f['AgDia'];
$mes = $f['AgMes'];
$ano = $f['AgAno'];
$data = "$ano-$mes-$dia";

//Começo da tabela
$Bsc .= "
<table width=\"700\" border=\"0\" cellpading=\"0\" cellspacing=\"1\" id=\"TabAgenda\">
<tr><th width=\"100\">Horário</th><th width=\"600\">Opções</th></tr>
";

//for que tá dando zebra...
for($f = 0; $f<$consultas; $f++){
$i = $duracao*$f;

$w = mysql_query("SELECT * FROM consultas WHERE data = '$data'");
$z = mysql_fetch_array($w);
$horario = $z['horario'];
if ($f == $horario) { $resultado = 'Nome: '.$z['paciente'].''; } else { $resultado = '<a href="" onclick="xajax_NovaEntrada(\''.$f.'\');return false;">Adicionar Nova Entrada</a>'; }

$Bsc .= '
<tr>
<td style="text-align: center;font-weight:bold;">'.date("H:i", mktime(8, 0+$i, 0, date("m"), date("d"), date("y"))).' - '.$f.'</td>
<td><div id="'.$f.'">'.$resultado.'</div></td>
</tr>
';

}

//Final da tabela
$Bsc .= "
</table>
";

//Adiciona a $Bsc dentro da div MostraAgenda
$Agenda->addAssign("MostraAgenda","innerHTML", $Bsc);

return $Agenda->getXML();
}


Edição feita por: DNL, 24/07/2006, 18:28.

"Seja você mesmo, mas não seja sempre o mesmo"

#8 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 24/07/2006, 18:29

Faça um teste: no FOR tente trocar o $f por outra letra que não foi usada, por exemplo $k e mude logo abaixo também


T+

Edição feita por: Goku Jr, 24/07/2006, 18:29.

-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#9 DNL

DNL

    Daniel

  • Usuários
  • 40 posts
  • Sexo:Não informado
  • Localidade:Taubté - SP

Posted 24/07/2006, 18:47

Faça um teste: no FOR tente trocar o $f por outra letra que não foi usada, por exemplo $k e mude logo abaixo também


T+


Não tinha reparado q estava usando o $f dnovo... :( mas mesmo assim não funcionou :wacko: o que acontece é tipo assim:

a tabela aparece assim:
______________________________________
|___Horário___|________Opções___________|
|___ 8:00 ____|__adicionar________________|
|___ 8:20 ____|__adicionar________________|
|___ 8:40 ____|__Daniel__________________|
|___ 9:00 ____|__adicionar________________|
|___ 9:20 ____|__adicionar________________|
|___ 9:40 ____|__adicionar________________|

mas nesse dia tem mais de uma pessoa, aquele if serve para q se o número da var $f for igual ao numero q ta cadastrado no bd ele mostra o nome da pessoa, se não mostra o link para adicionar uma nova entrada...

o q tá ruim é que se nesse dia tem 2 pessoas cadastradas digamos q um as 8:20 e outro as 9:40 ele só mostra o das 8:20..


Valew,
Até+
"Seja você mesmo, mas não seja sempre o mesmo"

#10 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 25/07/2006, 08:11

E porque vc não usa a própria hora pra fazer isso já que o horário é fixo???

Vou fazer um exemplo aqui e quando terminar eu posto aqui, enquanto isso se vc ler esta mensagem vá tentando ai ou então me diga porque não com a hora (y)

Té mais ;)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#11 DNL

DNL

    Daniel

  • Usuários
  • 40 posts
  • Sexo:Não informado
  • Localidade:Taubté - SP

Posted 25/07/2006, 08:23

E porque vc não usa a própria hora pra fazer isso já que o horário é fixo???

Vou fazer um exemplo aqui e quando terminar eu posto aqui, enquanto isso se vc ler esta mensagem vá tentando ai ou então me diga porque não com a hora (y)

Té mais ;)


Não estou usando a hora porque as médicas cadastradas vão ter tempos diferentes de consulta, tipo algumas são 15min outras 20min, daí dependendo do tempo de consulta muda os horários que vão ser listados.


Valew
Até+
"Seja você mesmo, mas não seja sempre o mesmo"

#12 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 25/07/2006, 08:26

tem algum link que possamos visualizar o que vc está fazendo, só pra ter uma ideia melhor???

Té mais ;)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#13 DNL

DNL

    Daniel

  • Usuários
  • 40 posts
  • Sexo:Não informado
  • Localidade:Taubté - SP

Posted 25/07/2006, 08:56

tem algum link que possamos visualizar o que vc está fazendo, só pra ter uma ideia melhor???

Té mais ;)


Coloquei em um servidor para vocês darem uma olhada como estou fazendo...

http://www.nextinfor...a_principal.php


//Edição 1: Os nomes são fictícios, só estou testando na 1 médica q aparece...

//Edição 2: Na frente de cada horário coloquei a var que vai sendo incrementada pelo for...


Valew
Até+

O que tá acontecendo dá pr ver bem agora, tipo qnd eu coloquei "agendei" uma consulta as 11:20, blz... como só tem a minha, quando lista a agenda do dia aparece meu nome lá as 11:20...

Só que já fizeram 3 cadastros depois do meu, e esse não aparecem, não sei se é isso mas parece que tem alguma coisa errada naquele if que define o que vai aparecer dentro da célula...



Valew
Até+

Edição feita por: DNL, 25/07/2006, 09:22.

"Seja você mesmo, mas não seja sempre o mesmo"

#14 gennf

gennf

    A Solução está ai...

  • Usuários
  • 645 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG

Posted 25/07/2006, 09:24

Bom, vc disse que aparece 1 mas eu testando aqui (não sei se está cadastrando) mas não apareceu nenhum sempre aparece a mensagem Adicionar Nova Entrada independente da data que eu escolha mesmo eu já tendo cadastrado algo.

Mas o que me traz aqui é outra coisa. Que valor vem da variável $horário (0-1-2-3-4-5-...)???

E o sistema está cadastrando???

Té mais ;)
Portal BatePapoBrasil
URL: www.batepapobrasil.com

----------------------------
Site desenvolvidos
URL:
VitrineABC :: Alugue Litoral :: OrtodontiaLago

#15 DNL

DNL

    Daniel

  • Usuários
  • 40 posts
  • Sexo:Não informado
  • Localidade:Taubté - SP

Posted 25/07/2006, 09:33

Bom, vc disse que aparece 1 mas eu testando aqui (não sei se está cadastrando) mas não apareceu nenhum sempre aparece a mensagem Adicionar Nova Entrada independente da data que eu escolha mesmo eu já tendo cadastrado algo.

Mas o que me traz aqui é outra coisa. Que valor vem da variável $horário (0-1-2-3-4-5-...)???

E o sistema está cadastrando???

Té mais ;)


Aqui está sim... criei o bd no servidor e exportei as 2 tabelas q estão sendo usadas, daí até cadastrei no dia de hoje eu primeiro no horário das 11:20...

Já tem cadastrados

nome: eu mesmo / horário: 31 (que seria as 18:30)
nome: nenhum / horário: 0 (que seria as 8:00)

qnd cadastra envia para o bd o número q reprensenta cada horário.. daí depois a var horario volta com esse número, por exemplo se são consultas de 20min esse número vai de 0 até 39



Valew
Até+
"Seja você mesmo, mas não seja sempre o mesmo"




2 user(s) are reading this topic

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

IPB Skin By Virteq