Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 69

Resultados do mySQL

21-02-2011 17:55

Olá, boa tarde.

Sei que estou no fórum PHP e falarei de mySQL, mas minha dúvida eu acho que é no script e não com o BD (eu acho). Bom, vamos lá.

Tenho um banco de dados com várias colunas e linhas. Gostaria de contar alguns campos que sejam diferentes de vazio (!=).

Por exemplo, tenho cadastrado 10 pessoas. Essas 10 pessoas podem ter até 5 imagens cada. Só que nem todas enviam 5 imagens, enviam apenas 1... 2... 3 ou qualquer quantia entre 0 e 5. Muito bem, o que eu estou fazendo é o seguinte:

if ($imagem1) {$I1 = "1";} if ($imagem2) {$I2 = "1";} if ($imagem3) {$I3 = "1";} if ($imagem4) {$I4 = "1";} if ($imagem5) {$I5 = "1";} $quantia_img = $I1+$I2+$I3+$I4+$I5; echo "O usuário ".$usuario." possuí ".$quantia_img." imagens.";

Só que o script não está contando corretamente. O primeiro usuário ele conta certo. Suponhamos que o "Pedro" tem as seguintes imagens preenchidas (ele é o 1º usuário):
$imagem1, $imagem3 e $imagem5. O script conta corretamente.

Mas se o João (2º usuário) tem as imagens:
$imagem2 e $imagem4, o script está somando para o João um total de 5 imagens. Como faço para consertar isso?

Já tentei usar:
mysql_fetch_assoc
mysql_fetch_row
mysql_fetch_array

Mas todos mostram o mesmo erro nos resultados. =/
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Resultados do mySQL

21-02-2011 18:00

Como está a tabela que tem as imagens? É uma tabela só para imagem?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 69

Resultados do mySQL

21-02-2011 18:08

Não... Ela é uma tabela lotada de informações: Nome, endereço, rg, cpf, usuário (para linkar com a tabela de login), telefones, e-mail, site... Nossa, é bem grandinho o banco na questão de campos a serem preenchidos...

Isso não é uma boa coisa neah?! =/
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Resultados do mySQL

21-02-2011 18:12

Eu acho até que dá para fazer uma gambiarra pegando os dados da mesma tabela, só que o ideal seria ter uma tabela só para as fotos, pegando o id do usuário. Ai na hora da consulta, você contaria quantas linhas de resultado tem para aquele id, ai, o resultado mostraria quantas fotos há na tabela.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 69

Resultados do mySQL

21-02-2011 18:21

poxa vida... seria possível me falar +/- dessa gambiarra? pois além dos campos imagens há os campos descrição das imagens, então criar outro BD seria muito complicadinho, pois o sistema já está "pronto".

=/

A propósito, quando eu for reformular esse sistema para AJAX, sem dúvida farei uma cotação contigo para quem sabe fecharmos uma parceria de serviço. =)

Agradeço muito pelas suas ajudas web!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Resultados do mySQL

21-02-2011 18:51

MOVIDO: de PHP para MySQL

A solução para contar os campos de uma tabela do MySQL que estão vazios é a seguinte

Suponha que você tenha a tabela com as colunas

TABELA dados
id, email, foto1, foto2, foto3

A consulta

SELECT (foto1='')+(foto2='')+(foto3='') AS quantos, id, email, foto1, foto2, foto3 FROM dados

Dentro do while, você usa o $quantos para retornar o número de campos vazio.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 69

Resultados do mySQL

21-02-2011 19:42

Tentei de tudo... Mas como não sei quase nada de mySQL não consegui fazer nada!

=/

Tentei fazer o while lá, mas não consegui. Código é assim mesmo:

$conta_imagens = mysql_query("SELECT (imagem1='')+(imagem2='')+(imagem3='')+(imagem4='')+(imagem5='') AS quantos, imagem1, imagem2, imagem3, imagem4, imagem5 FROM anuncios"); while ($linha=mysql_fetch_array($conta_imagens)) { echo $quantos; }

Mas não sei... Eu preciso contar quantos campos tem preenchido alguma imagem, com esse código é só eu achar o valor de campos vazio e subtrair do valor máximo certo? No caso, 5 imagens?

Aguardando. Obrigado. Abraços
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Resultados do mySQL

21-02-2011 19:54

Nesse caso, você vai substituir o vazio por diferente de vazio

Para campo vazio
imagem1=''

Para campo diferente de vazio
imagem1!=''

Isso com todos os campos.

Outra coisa é que você tem que extrair os campos da consulta, caso contrário terá que definir eles.

Logo depois do while, coloca
extract($linha);

Ai dentro do while, você vai pegar o $quantos e os outros campos da tabela que foram selecionados.

Se der algum erro fale qual é.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 69

Resultados do mySQL

21-02-2011 20:10

Então web, testei o que você disse e o código ficou assim:

$conta_imagens = mysql_query("SELECT (imagem1!='')+(imagem2!='')+(imagem3!='')+(imagem4!='')+(imagem5!='') AS quantos, imagem1, imagem2, imagem3, imagem4, imagem5 FROM anuncios"); while ($linha=mysql_fetch_array($conta_imagens)) { extract($linha); echo " - ".$quantos; }

O problema é que o resultado que está sendo exibido é o seguinte:

- 0 - 3 - 0 - 0 - 1 - 1 - 2 - 0 - 0

O que significa que ele está exibindo os 9 resultados repetidamente, ou seja, o primeiro cadastro não tem nenhuma imagem, o segundo tem 3 imagens, o 3º e 4º não tem nenhuma, o 5º e 6º tem 1 imagem e assim sucessivamente.

Os resultados estão corretos, mas eu quero que apareça cada um em seu resultado e não todos os resultados em todos os resultados.

=/

Abraços.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Resultados do mySQL

21-02-2011 20:23

O que você está fazendo é uma consulta, correto? Você deve ter os outros campos ai, nome, email, etc...

Chama esses campos no SELECT, ai, na hora de mostrar, você chama eles junto com o resultado.

Você pode fazer até algo assim:

Antes do while
<table>
<tr>
<td>nome</td>
<td>email</td>
<td>fotos</td>
</tr>

Dentro do while
<tr>
<td>$nome</td>
<td>$email</td>
<td>$quantos</td>
</tr>

Fora do while você fecha a tabela.
Quando carregar a página, vai ter uma listagem, com os usuários e o número de foto que ele tem.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 69

Resultados do mySQL

21-02-2011 20:37

tentei, mas não consegui. Minha consulta atual:

$R = mysql_query("SELECT * FROM anuncios WHERE (ativo = 'sim') AND (categorias LIKE '%".$u[1]."%') ORDER BY id ASC") or die ("N&atilde;o foi possível realizar a consulta ao banco de dados<br><br>".mysql_error());

como transformo a consulta das imagens de uma maneira que tenha esse ATIVO = SIM e categorias LIKE $u[1]

$u[1] = é o que o usuário está buscando
=(

Eu sou leigo em SQL web, me desculpe pela minha ignorância! =(
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Resultados do mySQL

21-02-2011 20:44

Na sua consulta atual você pega todas colunas *, então seria basicamente adicionar os seus campos, assim

SELECT (imagem1!='')+(imagem2!='')+(imagem3!='')+(imagem4!='')+(imagem5!='') AS quantos, imagem1, imagem2, imagem3, imagem4, imagem5, ativo, categorias, ativo, id FROM anuncios WHERE (ativo = 'sim') AND (categorias LIKE '%".$u[1]."%') ORDER BY id ASC

Coloquei em itálico a parte da contagem, sublinhado a parte dos outros campos que você vai precisar na consulta e em negrito, o restante da parte da sua consulta atual.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 69

Resultados do mySQL

21-02-2011 21:03

Perfeitamente... Entendi que eu deveria incluir o necessário para minha consulta no final do código e também entendi que eu precisava incluir os campos do BD entre AS e FROM.

Mas não está aparecendo quando dou um echo $quantos.

Todos os demais resultados da pesquisa aparecem normalmente, sem nenhum erro, apenas o $quantos não existe.

Resultado final da consulta à tabela:
$R = mysql_query("SELECT (imagem1!='')+(imagem2!='')+(imagem3!='')+(imagem4!='')+(imagem5!='') AS quantos, imagem1, imagem2, imagem3, imagem4, imagem5, id, cliente, slug, cliente_cod, cliente_unico, nome_fantasia, endereco_da_empresa, complemento, cep, tel1, tel2, tel3, nid1, nid2, email_da_empresa, site_da_empresa, categorias, bairro, bairro_ap, mapa, texto_anuncio_sub, horario_funcionamento, logo, logo_desc, data, plano, ativo FROM anuncios WHERE (ativo = 'sim') AND (categorias LIKE '%".$u[1]."%') ORDER BY id ASC");

Obs: Precisa estar na ordem exata das colunas?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Resultados do mySQL

21-02-2011 21:29

Aparentemente não tem erro na sua consulta. Eu testei aqui no Xampp localmente, em 2 tabelas, e o script funciona corretamente. O ordem das colunas na consulta não altera o resultado. Tenta renomear $quantos. Se não der certo, pode ser incompatibilidade do seu servidor MySQL.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 69

Resultados do mySQL

21-02-2011 21:34

Bom... Alterei o nome e nada...

Amanhã testarei diretamente no servidor (sem ser local), daí veremos o resultado.

De qualquer forma, muito obrigado pelo apoio novamente web... Um grande abraço. Boa noite!

Até breve!

;)
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Resultados do mySQL

21-02-2011 21:35

blz.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 50 postagens
Mais de 50 postagens
Tópico Autor
Mensagens: 69

Resultados do mySQL

22-02-2011 11:09

Deu certo web!

Muito obrigado.

O problema era o seguinte, eu tenho várias opções de resultados: Busca (palavras), Categorias, Sub-categorias e muitas outras. Eu estava vendo o resultado da Busca mas estava editando o de Categorias :shock:

Me desculpe pelo trabalhçao, mas deu tudo certinho!

Abraços! ;)

8)
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Resultados do mySQL

22-02-2011 12:00

Bom que conseguiu.
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado