Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Loading...

mysql where clauss

Mensagens Recomendadas

Loading...    0
Loading...

boas eu tenho um site em php com ligaçao ah base de dados mysql ja faz  a pesquisa como deve de ser e ja tens filtros... todos funcionam menos o que eu quero que pesquise em todos os campos... eu acho k e por estar a por o where mal x)

<?php
if(!empty($_GET["valor"]))
	{
		require("conectdb.php");
				// EXECUTA A INSTRUÇÃO SELECT PASSANDO O QUE O USUARIO DIGITOU
					switch ($_GET['pesquisar']) {
						case 1:
							$coluna= "tipo_id like '$_GET[valor]%' or equipamento_fabricante like '$_GET[valor]%' or equipamento_modelo";
							break;
						case 2:
							$coluna = "tipo_id";
							break;
						case 3:
							$coluna = "equipamento_fabricante";
							break;
						case 4:
							$coluna = "equipamento_modelo";
							break;
						case 5:
							$coluna = "equipamento_numero_serie";
							break;
						case 6:
							$coluna = "equipamento_numero_inventario";
							break;
						case 7:
							$coluna = "equipamento_data";
							break;
					}
$sql="select * from equipamento where {$coluna} like '$_GET[valor]%'";
$resultado=mysql_query($sql) or die (mysql_error());		
//VERIFICA A QUANTIDADE DE REGISTROS RETORNADOS
			$linhas=mysql_num_rows($resultado);
				if($linhas>0){
					//EXECUTA UM LOOP PARA MOSTRAR OS NOMES DAS PESSOAS
					// VALE LEMBRAR QUE TODOS ESSES RESULTADOS SERAO MOSTRADOS DENTRO DA PAGINA INDEX.PHP

					while($pegar=mysql_fetch_array($resultado))
					echo "$pegar[$coluna] <br>";


				}
	}
?> 

sera que alguem me pode dar uma ajudinha e ver como posso fazer para por o case 1 a funcionar???

obrigado desde ja

cumps Loading....

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Loading...    0
Loading...

Notice: Undefined index: tipo_id like 'qw%' or equipamento_fabricante like 'qw%' or equipamento_modelo in C:\Program Files\EasyPHP-5.3.8.1\www\testeB\buscaid.php on line 38

qw% e o valor que quero pesquisar '-'

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Loading...    0
Loading...

fiz um echo da variavel sql e deu isto (pode ser que ajude)

select * from equipamento where tipo_id like 'qw%' or equipamento_fabricante like 'qw%' or equipamento_modelo like 'qw%'

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1123
HappyHippyHippo
"tipo_id like '{$_GET[valor]}%' or equipamento_fabricante like '{$_GET[valor]}%' or equipamento_modelo";

...

$sql="select * from equipamento where {$coluna} like '{$_GET[valor]}%'";

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Loading...    0
Loading...

esta a dar erro no valor:S

Notice: Use of undefined constant valor - assumed 'valor' in C:\Program Files\EasyPHP-5.3.8.1\www\testeB\buscaid.php on line 8

Notice: Use of undefined constant valor - assumed 'valor' in C:\Program Files\EasyPHP-5.3.8.1\www\testeB\buscaid.php on line 8

Notice: Use of undefined constant valor - assumed 'valor' in C:\Program Files\EasyPHP-5.3.8.1\www\testeB\buscaid.php on line 29

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1123
HappyHippyHippo

desculpa .. copy paste com correcções incompletas ...

"tipo_id like '{$_GET['valor']}%' or equipamento_fabricante like '{$_GET['valor']}%' or equipamento_modelo";

...

$sql="select * from equipamento where {$coluna} like '{$_GET['valor']}%'";

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    102
pmg

Isso é "apenas" um warning. O que se passa é que o PHP interpreta o valor ( $_GET[valor] ) como uma constante que não está definida. Mete-lhe umas plicas e o PHP interpreta como string ( $_GET['valor'] ).


Edit: tambem podes definir a constante, mas isso não é necessário ...

define('valor', 'valor');


Depois tens o problema eventual de não existir o parametro valor na query string ...

e o problema das injecções de SQL.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
yoda    139
yoda

Em primeiro lugar, usar directamente os valores obtidos por $_GET ou $_POST sem serem filtrados é má ideia. Para prevenir esses "notices" que aparecem, basta controlar o input :

$valor = array_key_exists('valor', $_GET) ? $_GET['valor'] : false;

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Loading...    0
Loading...

$valor = array_key_exists('valor', $_GET) ? $_GET['valor'] : false; podes'me explicar o que faz isso? x) eu n percebi para que e que esse array_key_exists serve :S

e fil fiz o echo da variavel sql e deu isto

select * from equipamento where tipo_id like 'qw%' or equipamento_fabricante like 'qw%' or equipamento_modelo like 'qw%'

e o erro que da e:

Notice: Undefined index: tipo_id like 'qw%' or equipamento_fabricante like 'qw%' or equipamento_modelo in C:\Program Files\EasyPHP-5.3.8.1\www\testeB\buscaid.php on line 40

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade