Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thesantana

Array? Só consigo puxar todas as linhas...

Recommended Posts

Olá a todos.

Sou novo aqui e aspira em PHP/MySQL.

 

Já consegui (depois de muito suor) cadastrar dados no banco e puxar a tabela para um PHP.

O problema é que só consigo puxar TUDO, através do " mysql_fetch_array ".

 

Até aí sem novidades, mas eu queria fazer algo como neste site: http://www.rain.com.br/SalasRain/Pages/Busca.aspx (selecione: SP)

que apesar de usar ASPX, acredito que também dê para fazer em PHP.

 

Eu preciso fazer algo nesse sentido, como se fosse um "array por blocos"... Queria fazer um array mais ou menos como eles fizeram:

- Listar todas essas salas de um determinado complexo e parar.

 

- Voltar a listar outras salas de outro complexo...

 

[...]

 

Até o fim.

 

Alguém pode me indicar um caminho!?

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faca 2 loops encaixados.

Um externo apenas para listar os 'complexos', e um dentro deste, recebendo como parametro no WHERE, a identificacao do 'complexo'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

 

Esse puxar tudo que voce mencionou, é porque aparece todos os resultados independente do que voce seleciona? Se sim coloca uma clausula WHERE na sua consulta.

 

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você obteve com o seu "TUDO"? Seriam estritamente TODOS os registros?

 

Se for e você quer, como no site filtrar por estado, basta adicionar uma cláusula WHERE na sua query:

 

SELECT * FROM `tabela` WHERE `estado` = 'SP'

Claro, em PHP você troca o SP literal por uma variável, concatenando.

 

Assim, todos os campos de todos registros cujo estado é SP serão retornados numa matriz multidimensional (oarray em blocos, que você citou)

 

Assim, no índice zero terá um outro array, onde os índices serão strings com os nomes dos campos e os valores, os valores dos respectivos campos da primeira linha retonada da consulta.

No índice 1, o mesmo, porém com as informações da segunda linha.

 

Eassim por diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sério, estou assustado.

Não tem nem 10 min. que postei e já tem gente respondendo...

 

Muito obrigado Willian e RPA.

 

 

Então, desculpe, mas ainda está complexo para mim. Estou estudando.

 

Até agora, consegui listar desta forma:

 <?
   //Executa a consulta
   $sql = "SELECT * FROM salascd order by complexo";
   $res = mysqlexecuta($id,$sql);


  //Exibe as linhas encontradas na consulta
while ($row = mysql_fetch_array($res)){   
  //while ($row = mysql_fetch_array($res)){
?>

Mais uma vez, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta.. oq eu falei foi o seguinte:

<?php
//Executa a consulta
$sql = "SELECT * FROM salascd order by complexo";
$res = mysqlexecuta($id,$sql);


//Exibe as linhas encontradas na consulta
while ($row = mysql_fetch_array($res)){
    echo $res['complexo'];
    $sql2 = "SELECT * FROM salascd WHERE `complexo` = '{$res['complexo']}'";
    $res2 = mysqlexecuta($id,$sql2);
    while ($row2 = mysql_fetch_array($res2)){
    //aqui você exibe normalmente
    }//fecha laço interno
}//fecha laço externo
?>
Se bem que eu nao conheco essa tua funcao: mysqlexecuta, entao nao sei qual eh o primeiro parametro dela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Imaggens!

 

Obrigado pela ajuda.

Acabei de tentar, mas ele apenas joga SP p/ mim.

 

Em resumo, ele faz dessa forma:

 

Nome do Complexo

Sala 1

 

Cidade

 

Nome do Complexo

Sala 2

 

Cidade

 

Nome do Complexo

Sala 3

 

Cidade

 

 

Na verdade, ele teria de ficar assim:

 

 

Nome do Complexo

Sala 1

Sala 2

Sala 3

 

Cidade

 

 

Ou seja, teria que listar todas as salas de um complexo num mesmo "array". Acho que é isso...

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

@thesantana, faz como eu indiquei ali.. com os 2 whiles.. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Willian, será que o "mysqlexecuta" está me atrapalhando?

Fiz o que você indicou e não deu certo...

 

Ele (include // mysqlexecuta.php) está assim:

<?php
/*
Esta função executa um comando SQL no banco de dados MySQL
$id - Ponteiro da Conexão
$sql - Cláusula SQL a executar
$erro - Especifica se a função exibe ou não(0=não, 1=sim)
$res - Resposta
*/
function mysqlexecuta($id,$sql,$erro = 1) {
   if(empty($sql) OR !($id))
      return 0; //Erro na conexão ou no comando SQL   
  if (!($res = @mysql_query($sql,$id))) {
     if($erro)
       echo "Ocorreu um erro na execução do Comando SQL no banco de dados. Favor Contactar o Administrador.";
     exit;
  }
   return $res;
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Matias!

 

Como você poderia me sugerir isso? Como disse antes, sou iniciante e isso está muito difícil p/ mim... Alguma dica para eu excluir isso ou fazer de forma mais fácil? Sei que o William passou está certo, mas eu devo estar me complicando com o "mysqlexecuta.php".

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Matias!

 

Como você poderia me sugerir isso? Como disse antes, sou iniciante e isso está muito difícil p/ mim... Alguma dica para eu excluir isso ou fazer de forma mais fácil? Sei que o William passou está certo, mas eu devo estar me complicando com o "mysqlexecuta.php".

 

abs

 

Oras, passa a query direto via mysql_query() e para tratamento/detecção de erro, use mysql_error().

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só exemplificando o que o Imaggens falou...

 

$sql = 'SELECT * FROM tabela WHERE campo = \''.$campo.'\'';
$qry = mysql_query($sql) or die(mysql_error());

Coloque a consulta dentro da $sql.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.