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

Problemas com LOOP


ANDRE_GUSTAVO

Pergunta

Olá pessoal, estou desenvolvendo um sistema para passagens!

O usuario seleciona a linha, em seguida é exibido as poltronas disponiveis e as ocupadas.

As poltronas disponiveis saão exibidas em verde com um check box para seleção!

As poltronas ocupadas são exibidas em vermelho, mas sem a opção de seleção, pois a mesma já foi selecionada por outro usuario!

Tenho uma tabela POLTRONA que utilizo para carregar a numeração das poltronas que vai de 1 a 23

Em outra tabela PASSAGENS_COMPRADAS registro os dados do usuario e da passagem comprada como poltronas, dia da viagem, etc.

Gostaria de saber como fazer para que quando houver na tabela PASSAGENS_COMPRADAS uma poltrona que se encontra na tabela POLTRONAS, ela seja exibida como ocupada, (sem a opção para seleção).

Veja como estou tentando, porém somente uma poltrona é exibida corretamente como OCUPADA, na tabela de compras tenho mais de 6 poltronas compradas.

<?php
include("conectaSQL.php");
// SQL PARA LISTAR TODAS AS POLTRONAS
$monta_poltrona = new conectaSQL();
$monta_poltrona->conecta();
$str_SQL_poltrona = "SELECT * FROM poltronas Order by Id ASC";
$monta_poltrona->consulta($str_SQL_poltrona);

// SQL PARA VERIFICARAS POLRONAS COMPRADAS
$status_poltrona = new conectaSQL();
$status_poltrona->conecta();
$str_SQL_status_poltrona = "SELECT * FROM passagens_compradas Order by Id ASC";
$status_poltrona->consulta($str_SQL_status_poltrona);


while ($dados_status_poltrona = $status_poltrona->resultado()) {

   while ($dados_poltrona = $monta_poltrona->resultado()) {

      for ($i=0; $i<=23; $i++){
      $verifica_poltrona = array();
      $verifica_poltrona[$i] = $dados_status_poltrona['num_poltrona'];

      if($dados_poltrona['poltrona'] == $verifica_poltrona[$i]) {

      $disponibilidade = "ocupada";
      }else {
      $disponibilidade = "livre";
      }


      if($disponibilidade == "ocupada")
      {
      $exibe_poltrona = '<strong class="npotrn2">'.$dados_poltrona['poltrona'].'</strong>';
      }
      if($disponibilidade == "livre"){
      $exibe_poltrona = '<input type="checkbox" name="poltrona'.$dados_poltrona['Id'].'" id="poltrona'.$dados_poltrona['Id'].'"class="selecionapoltrona" value="'.$dados_poltrona['poltrona'].'"><strong class="npotrn">'.$dados_poltrona['poltrona'].'</strong>';
}
}
?>

<li class="<?php  echo $disponibilidade; ?>"> <?php  echo $exibe_poltrona; ?></li>


<?php
}    
}
}

$monta_poltrona->fecha();

$status_poltrona->fecha();
?>

Alguém poderia me ajudar a fazer com que seja exibido todas as poltronas ocupadas?? dessa forma que está ai, somente 1 esta como ocupada.

Desde já agradeço a todos pela ajuda e atenção!

Ate mais!

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Bom dia, Andre_Gustavo!

Pelo que vi você fez uso de vários laços.

Sugestão:

Dentro do laço que monta as poltronas, você cria uma consulta com a que vá em passagens compradas com a

cláusula WHERE poltrona='$nrpoltrona' e se houver qtd de linha =1, então foi vendida.

Nesse caso você usa essa informação e cria o código, que pode ser algo assim:

IF($qtd==1){button;}ELSE{checkbox;}

Na verdade eu não fiz nada apenas te dei uma idéia, querendo dizer que se a poltrona não estiver disponível você não

deixa a opção de checkbox.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Alterei o codigo, agora está sendo exibido todas as poltronas ocupadas, porém, esta sendo repetido umas 30 vezes

Para cada poltrona ocupada ele repete toda a lista de poltronas.

Aqui vai meu codigo:

<?php 
$str_SQL_status_poltrona = mysql_query("SELECT * FROM passagens_compradas Order by Id ASC") or die ( mysql_error() );

while($dados_status_poltrona=mysql_fetch_array($str_SQL_status_poltrona)){    

    $str_SQL_poltrona = mysql_query("SELECT * FROM poltronas Order by Id ASC") or die ( mysql_error() );
    
    $verifica_poltrona = $dados_status_poltrona['num_poltrona'];    
    
    while($dados_poltrona=mysql_fetch_array($str_SQL_poltrona)){    

        if($dados_poltrona['poltrona'] == $verifica_poltrona) {
        
        $disponibilidade = "ocupada";
        }else {
        $disponibilidade = "livre";
        }
        
        
        if($disponibilidade == "ocupada")
        {
        $exibe_poltrona = '<strong class="npotrn2">'.$dados_poltrona['poltrona'].'</strong>';
        }
        if($disponibilidade == "livre"){
        $exibe_poltrona = '<input type="checkbox" name="poltrona'.$dados_poltrona['Id'].'" id="poltrona'.$dados_poltrona['Id'].'" class="selecionapoltrona" value="'.$dados_poltrona['poltrona'].'"><strong class="npotrn">'.$dados_poltrona['poltrona'].'</strong>';
        
        }
?>

<li class="<?php  echo $disponibilidade; ?>"> <?php  echo $exibe_poltrona; ?></li>

<?php

}                    
    }


mysql_close($conexao);
?>

Tipo.... para cada poltrona ocupada, está sendo exibido toda a sequencia de poltronas .

Por exemplo a poltrona 1 ocupada, ele lista todas as poltronas com apenas a 1 ocupada, a poltrona 15 ocupada ele lista todas as poltronas novamente com apenas a 15 ocupada.

Gostaria que na mesma sequencia fosse exibdo as ocupadas e as livres

Alguém por ai pode ajudar com esse loop??

Desde já agradeço a atenção e ajuda de todos!!

Link para o comentário
Compartilhar em outros sites

  • 0

Já não sei mais o que fazer para que funcione corretamente, alguém poderia me ajudar????

O LOOP pega somente o 1ª valor!!!!

alterei mais uma vez meu codigo!

Aqui vai o codigo:

$poltronas_defaul = array();
                $i=0;    
            
                while($num_pol = mysql_fetch_array($str_SQL))
                {
                  $poltronas_defaul[i]= $num_pol['num_poltrona'];
                  $i=$i+1;
                  while($dados_status_poltrona=mysql_fetch_array($str_SQL_status_poltrona))
                  {
                      $id_pol_vend = $dados_status_poltrona['poltrona'];
                    foreach($poltronas_defaul as $key => $valor){
                        if($id_pol_vend == $valor)
                        {
                            $disponibilidade = "ocupada";
                            $exibe_poltrona = '<strong class="npotrn2">'.$dados_status_poltrona['poltrona'].'</strong>';
                         }else{
                            $disponibilidade = "livre";
                            $exibe_poltrona = '<input type="checkbox" name="poltrona'.$dados_status_poltrona['Id'].'" id="poltrona'.$dados_status_poltrona['Id'].'" class="selecionapoltrona" value="'.$dados_status_poltrona['poltrona'].'"><strong class="npotrn">'.$dados_status_poltrona['poltrona'].'</strong>';
                             }                  
                     }
                     ?>
                     
                    <li class="<?php  echo $disponibilidade; ?>"> <?php  echo $exibe_poltrona; ?></li>

                <?php
                    }
                }
mysql_close($conexaologin);
?>

HELP ME!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Tente assim:

$poltronas_defaul = array();
                $i=0;    
            
                while($num_pol = mysql_fetch_array($str_SQL))
                {
                  $poltronas_defaul[$i] = $num_pol['num_poltrona'];
                  $i=$i+1;
                  while($dados_status_poltrona=mysql_fetch_array($str_SQL_status_poltrona))
                  {
                      $id_pol_vend = $dados_status_poltrona['poltrona'];
                        if($id_pol_vend == $poltronas_default[$i])
                        {
                            $disponibilidade = "ocupada";
                            $exibe_poltrona = '<strong class="npotrn2">'.$dados_status_poltrona['poltrona'].'</strong>';
                         }else{
                            $disponibilidade = "livre";
                            $exibe_poltrona = '<input type="checkbox" name="poltrona'.$dados_status_poltrona['Id'].'" id="poltrona'.$dados_status_poltrona['Id'].'" class="selecionapoltrona" value="'.$dados_status_poltrona['poltrona'].'"><strong class="npotrn">'.$dados_status_poltrona['poltrona'].'</strong>';
                             }
                      }                  
                     ?>
                    
                    <li class="<?php  echo $disponibilidade; ?>"> <?php  echo $exibe_poltrona; ?></li>

                <?php
                }
mysql_close($conexaologin);
?>

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

  • 0

Descobri um errinho, agora vai dar certo:

<?php
$poltronas_defaul = array();
$ctrl=false;
$i=0;    
while($num_pol = mysql_fetch_array($str_SQL))
{
  $poltronas_defaul[$i] = $num_pol['num_poltrona'];
  $i=$i+1;
  while($dados_status_poltrona=mysql_fetch_array($str_SQL_status_poltrona))
  {
    $id_pol_vend = $dados_status_poltrona['poltrona'];
    if(!$ctrl)
    {
      if($id_pol_vend == $poltronas_default[$i])
      {
        $disponibilidade = "ocupada";
        $exibe_poltrona = '<strong class="npotrn2">'.$dados_status_poltrona['poltrona'].'</strong>';
        $ctrl=true;
      }
      else
      {
        $disponibilidade = "livre";
        $exibe_poltrona = '<input type="checkbox" name="poltrona'.$dados_status_poltrona['Id'].'" id="poltrona'.$dados_status_poltrona['Id'].'" class="selecionapoltrona" value="'.$dados_status_poltrona['poltrona'].'"><strong class="npotrn">'.$dados_status_poltrona['poltrona'].'</strong>';
      }
    }
  }
  $ctrl=false;
?>
<li class="<?php  echo $disponibilidade; ?>"> <?php  echo $exibe_poltrona; ?></li>
<?php
}
mysql_close($conexaologin);
?>

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

  • 0

Como está suas tabelas? Tem como postar aqui quais os campos das duas tabelas? Qual campo você utiliza para ligar as informações da tabela de passagens_compradas com as informações da tabela poltronas? num_poltrona?

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

  • 0

Vendo agora com calma, há algo estranho ali, sem a estrutura das tabelas vai ser difícil resolver mesmo.

Complementando: A tabela "passagens_compradas" não contém somente informações sobre as passagens já compradas? Como os dados desta tabela poderíam ser usadas para compor o <input>? Não vejo lógica nisso.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, pessoal...

aqui vai a estrutura das minhas tabelas.

TABELA DAS POLTRONAS

DROP TABLE IF EXISTS `poltronas`;
CREATE TABLE `poltronas` (
  `Id` int(11) NOT NULL auto_increment,
  `poltrona` int(11) default NULL,
  PRIMARY KEY  (`Id`),
  KEY `poltrona` (`poltrona`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `poltronas` VALUES (1,1);
INSERT INTO `poltronas` VALUES (2,5);
INSERT INTO `poltronas` VALUES (3,9);
INSERT INTO `poltronas` VALUES (4,13);
INSERT INTO `poltronas` VALUES (5,17);
INSERT INTO `poltronas` VALUES (6,21);
INSERT INTO `poltronas` VALUES (7,25);
INSERT INTO `poltronas` VALUES (8,29);
INSERT INTO `poltronas` VALUES (9,33);
INSERT INTO `poltronas` VALUES (10,37);
INSERT INTO `poltronas` VALUES (11,41);
INSERT INTO `poltronas` VALUES (12,45);
INSERT INTO `poltronas` VALUES (13,2);
INSERT INTO `poltronas` VALUES (14,6);
INSERT INTO `poltronas` VALUES (15,10);
INSERT INTO `poltronas` VALUES (16,14);
INSERT INTO `poltronas` VALUES (17,18);
INSERT INTO `poltronas` VALUES (18,22);
INSERT INTO `poltronas` VALUES (19,26);
INSERT INTO `poltronas` VALUES (20,30);
INSERT INTO `poltronas` VALUES (21,34);
INSERT INTO `poltronas` VALUES (22,38);
INSERT INTO `poltronas` VALUES (23,42);
/*!40000 ALTER TABLE `poltronas` ENABLE KEYS */;
UNLOCK TABLES;
AQUI A TABELA DAS PASSAGENS VENDIDAS
DROP TABLE IF EXISTS `passagens_vendidas`;
CREATE TABLE `passagens_vendidas` (
  `Id` int(11) NOT NULL auto_increment,
  `codigo_linha` varchar(255) collate utf8_unicode_ci default NULL,
  `cliente` varchar(32) collate utf8_unicode_ci default NULL,
  `email` varchar(255) collate utf8_unicode_ci default NULL,
  `origem` varchar(255) collate utf8_unicode_ci default NULL,
  `destino` varchar(255) collate utf8_unicode_ci default NULL,
  `data_saida` varchar(255) collate utf8_unicode_ci default NULL,
  `data_chegada` varchar(255) collate utf8_unicode_ci default NULL,
  `hora_saida` varchar(255) collate utf8_unicode_ci default NULL,
  `hora_chegada` varchar(255) collate utf8_unicode_ci default NULL,
  `num_poltrona` int(11) default NULL,
  `valor` int(11) default NULL,
  `status_pg` varchar(255) collate utf8_unicode_ci default NULL,
  `data_compra` datetime default NULL,
  PRIMARY KEY  (`Id`),
  KEY `num_poltronas` (`num_poltrona`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `passagens_vendidas` VALUES (1,'3213132','9329148510489',' asdf adsf ','ajsçflkj','aklsdjf','alçksdjf','açlkdfj','açlskdjf','açlskfj',2,210,'pendente','1899-12-30');
INSERT INTO `passagens_vendidas` VALUES (2,'3213132','9329148510489','jçdlkfjsça','ajdsçlkf j','açslkdf j','asdjçk fj','açslkd jf','ajçsdlk ','asçlkdf j',14,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (3,'64565465 ','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g',' asdf ads asf','adg dasfh fdv a','as fgasdads f','adsg adfh asd','asdf asdf',3,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (4,'asd ','d faasd asdfs',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',17,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (5,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',11,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (6,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',34,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (7,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',26,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (8,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',36,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (9,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',4,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (10,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',1,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (11,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',5,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (12,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',39,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (14,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',31,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (15,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',44,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (16,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',15,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (17,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',20,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (18,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',37,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (19,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',22,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (20,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',21,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (21,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',9,210,'pendente',NULL);
INSERT INTO `passagens_vendidas` VALUES (22,'ad fasdf asd asd','ad fasdf asd asd',' asdf adsf ','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g','adsf ads gadfs g',33,210,'pendente',NULL);
/*!40000 ALTER TABLE `passagens_vendidas` ENABLE KEYS */;
UNLOCK TABLES;

Obrigado pela ajuda!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Cara estava tudo invertido, rs. Então faça assim:

<?php

$str_SQL=mysql_query("SELECT * FROM poltronas ORDER BY poltrona");

while($num_pol = mysql_fetch_array($str_SQL))
{
  $poltrona_id = $num_pol['Id'];
  $poltrona = $num_pol['poltrona'];

      $disponibilidade = "livre";
      $exibe_poltrona = '<input type="checkbox" name="poltrona'.$poltrona_id.'" id="poltrona'.$poltron_id.'" class="selecionapoltrona" value="'.$poltrona.'"><strong class="npotrn">'.$poltrona.'</strong>';

  $str_SQL_status_poltrona=mysql_query("SELECT * FROM passagens_vendidas");

  while($dados_status_poltrona=mysql_fetch_array($str_SQL_status_poltrona))
  {
    $id_pol_vend = $dados_status_poltrona['num_poltrona'];
    if($id_pol_vend == $poltrona)
    {
      $disponibilidade = "ocupada";
      $exibe_poltrona = '<strong class="npotrn2">'.$poltrona.'</strong>';
    }
  }
?>
<li class="<?php  echo $disponibilidade; ?>"> <?php  echo $exibe_poltrona; ?></li>
<?php
}
mysql_close($conexaologin);
?>

Editado por svjets
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...