Ir para conteúdo

POWERED BY:

Arquivado

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

Tatiane.Design

Sistema de busca em php e mysql

Recommended Posts

isso é um erro sério de modelagem.

 

estude Formas Normais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguem pode me orientar meu banco de dados possui 15 tabelas cada uma de uma marca de produto.

 

como selecionar a coluna de cada tabela

 

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa estudar mais sobre modelagem de bancos, isso não é algo difícil, porem tem que prestar bastante atenção nos detalhes, principalmente nas entidades, você vai ter uma tabela 'produtos' e um campo 'marca', então utiliza a cláusula where para selecionar TODOS os produtos da tabela onde à marca seja igual a 'Taiff' ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cada id de uma tabela é uma coluna se for como vou saber qual é o nome da coluna

 

Veja so como eu fiz "taiff" é nome da tabela e "Secador Unique Expert" e do campo marca

 

 

<?php
      $busca = 'a';
      $sql = sprintf( "SELECT * FROM `taiff` WHERE `id` LIKE '%%%s%%' OR `Secador Unique Expert` LIKE '%%%s%%';" , $busca , $busca ); 
      $SQL = mysql_query( $sql ) or die( mysql_error( ) );
      while( $linha = mysql_fetch_array( $SQL ) ){
}
?>

 

 

mas ainda retorna essa mensagem ( Unknown column 'Secador Unique Expert' in 'where clause')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha... o seu problema (como falado pelo William Bruno) é de modelagem. Uma modelagem simples para isto seria:

 

gallery_101314_87_3794.png

 

-- -----------------------------------------------------
-- Table `marca`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `marca` (
 `marcaId` MEDIUMINT(8) NOT NULL AUTO_INCREMENT ,
 `marcaNome` VARCHAR(50) NOT NULL ,
 PRIMARY KEY (`marcaId`) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `produto`
-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `produto` (
 `produtoId` MEDIUMINT(8) NOT NULL AUTO_INCREMENT ,
 `produtoNome` VARCHAR(50) NOT NULL ,
 `produtoDescricao` TEXT NOT NULL ,
 `marcaId` MEDIUMINT(8) NOT NULL ,
 PRIMARY KEY (`produtoId`) ,
 INDEX `fk_produto_marca` (`marcaId` ASC) ,
 CONSTRAINT `fk_produto_marca`
   FOREIGN KEY (`marcaId` )
   REFERENCES `marca` (`marcaId` )
   ON DELETE RESTRICT
   ON UPDATE RESTRICT
ENGINE = InnoDB;

 

Tente compreender o que estou sugerindo. Se tiver dúvidas na montagem das consultas após a mudança no banco é só perguntar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aeee deu certo agora digito por exemplo taiff sai todos os produtos da tabela

so que tem um problema o campo texto ta em todas as tabelas quando digito dipierry da outra tabela sai o da taiff em cima e embaixo o da dipierry

 

esse da taiff

      <?php
      $pesquisar = 'a';
      $sql = sprintf( "SELECT * FROM `taiff` WHERE `id` LIKE '%%%s%%' OR `texto` LIKE '%%%s%%';" , $pesquisar ,  
   $pesquisar ); 
      $SQL = mysql_query( $sql ) or die( mysql_error( ) );
      while( $linha = mysql_fetch_array( $SQL ) ){
}
?>

esse o da dipierry

      <?php
      $pesquisar = 'a';
      $sql = sprintf( "SELECT * FROM `dipierry` WHERE `id` LIKE '%%%s%%' OR `texto` LIKE '%%%s%%';" , $pesquisar ,  
   $pesquisar ); 
      $SQL = mysql_query( $sql ) or die( mysql_error( ) );
      while( $linha = mysql_fetch_array( $SQL ) ){
}
?>

 

Mas tem como fazer essa modelagem sem ter que criar todas as tabelas novamente porque são muita e cada tabela tem muito produtos cadastrado é possivel editar as tabelas eu não entendo muito to aprendendo devagarzinho so meio lenta rsrsrs

 

Acho que entendi eu coloquei o campo texto em todas as tabelas mesmo eu mudando o nome da tabela no sql ainda deve sair os outros produtos de outras tabela porque causa do campo texto eu terei que editar todas as tabelas texto, texto2, texto3...

Compartilhar este post


Link para o post
Compartilhar em outros sites

:( :( :( :( :( :( :(

Eu não posso alterar o nome de um campo de uma tabela que ja possui cadastro

alguem pode confirmar essa informação.

 

Consegui mudar o nome do campo para texto2 so que não resolveu o problema, quando digito dipierry na busca em vez de sair so produtos da tabela dipierry estão saindo o da taiff tambem alguem ´pode me orientar de como resolver isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está cavando um buraco pra entrar nele, sem ofensas, vamos pensar um pouco:

-> O que é uma tabela em um banco de dados ?

-> O que são colunas em uma tabela do banco de dados ?

-> O que é uma cláusula where ?

 

Você tem como responder essas perguntas pra mim ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tabela taiff

 

<?php
      $pesquisar = 'a';
      $sql = sprintf( "SELECT * FROM `taiff` WHERE `id` LIKE '%%%s%%' OR `texto` LIKE '%%%s%%';" , $pesquisar ,  
   $pesquisar ); 
      $SQL = mysql_query( $sql ) or die( mysql_error( ) );
      while( $linha = mysql_fetch_array( $SQL ) ){
  $texto = $linha['texto'];
		$texto2 = substr("$texto",0,200);
	?>
       <a href="?pg=taiff" style="color:#666; text-decoration:none">

       <div style="padding-top:10px; margin-bottom:10px; padding-bottom:10px; border-bottom:1px dashed #333">
       <span style="color:#666"><strong>Taiff</strong></span><br />
       <? echo $texto2 ?>
       </div>        
       </a>
	<?
	}
	?>

 

tabela dipierry

 

<?php
      $pesquisar = 'a';
      $sql = sprintf( "SELECT * FROM `dipierry` WHERE `id` LIKE '%%%s%%' OR `texto` LIKE '%%%s%%';" , $pesquisar ,   $pesquisar ); 
      $SQL = mysql_query( $sql ) or die( mysql_error( ) );
      while( $linha = mysql_fetch_array( $SQL ) ){
  $texto = $linha['texto'];
		$texto2 = substr("$texto",0,200);
	?>
       <a href="?pg=dipierry" style="color:#666; text-decoration:none">

       <div style="padding-top:10px; margin-bottom:10px; padding-bottom:10px; border-bottom:1px dashed #333">
       <span style="color:#666"><strong>Dipierry</strong></span><br />
       <? echo $texto2 ?>
       </div>        
       </a>
	<?
	}
	?>

 

Tem como bloquear a tabela taiff para quando eu digitar dipierry no campo busca sair apenas a tabela dipierry

 

Alguem pode me orientar

 

pra mim refazer as tabelas vou demorar uns 10 dias cadastrando produtos e outros 10 alterando as paginas do site

 

pra mim refazer as tabelas vou demorar uns 10 dias cadastrando produtos e outros 10 alterando as paginas do site

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra mim refazer as tabelas vou demorar uns 10 dias cadastrando produtos e outros 10 alterando as paginas do site

Que demore 10 , 20 , 30 dias, mas isso que você está fazendo está totalmente errado, como você não consegue compreender uma coisa simples ?

Você tem a seguinte tabela no banco de dados

4c0e80fa310a44f99b3bc03.png

Então quer selecionar os dados de uma marca, por exemplo, da Nvidia.

SELECT * FROM  `produtos` WHERE  `marca` =  'Nvidia'

 

Resultado

1b1126b555664f2689368a0.png

 

Agora você quer selecionar os produtos que a marca comece com 'A'

SELECT * FROM `produtos` WHERE `marca` LIKE 'A%'

 

Resultado

7f8e6d80c78047b3a868555.png

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.