Jump to content


Photo

Ainda Nao Consegui


  • Faça o login para participar
2 replies to this topic

#1 inascimentojr

inascimentojr

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Não informado

Posted 04/09/2009, 21:40

Preciso filtrar um banco de dados mysql atravez do valor retornado do cgi, ja tenho o codigo porem restou uma duvida digamos que no campo $conteudo pode ser inserido mais de um numero que ira ser usado na pesquisa:

linha 1 da tabela campo conteudo "1"
linha 2 da tabela campo conteudo "1 2"
linha 3 da tabela campo conteudo "1"
linha 4 da tabela campo conteudo "1 2 3"
linha 5 da tabela campo conteudo "2"
linha 6 da tabela campo conteudo "3"
linha 7 da tabela campo conteudo "1"

// ACREDITO QUE A SOLUÇÃO POSSA SER ALGOM COMO Strpbrk OU strstr !

Preciso filtrar a tabela da seguinte forma. Se campo conteudo contem 2 ele é listado. e no resultado deveria aparecer as linhas 2, 4, e 6.
o codigo abaixo só permite que eu filtre um numero inteiro. qual a mudança que dever ser feita? obigado!

Linha que deve gerar a pesquisa que estou com duvida

$query .= " AND p.conteudo=" . $sql->quote ( $conteudo );


abaixo codigo completo.

if ( $cgi->getValue ( "op" ) == "search" )
{
$pt = $cgi->getValue ( "pt" );
$pp = $cgi->getValue ( "pp" );
$pb = $cgi->getValue ( "pb" );
$pl = $cgi->getValue ( "pl" );
$po = $cgi->getValue ( "po" );
$pp_min = $cgi->getValue ( "pp_min" );
$pp_max = $cgi->getValue ( "pp_max" );
$conteudo = $cgi->getValue ("conteudo");
$query = "
SELECT
p.id AS id,
p.propertyoption AS propertyoption,
p.propertyprice AS propertyprice,
p.propertyaddress AS propertyaddress,
pl.propertylocation AS propertylocation,
ps.propertystatus AS propertystatus,
pt.propertytype AS propertytype,
p.propertyref AS propertyref,
p.propertybedrooms AS propertybedrooms,
p.propertyphoto1 AS propertyphoto1,
p.propertyphoto2 AS propertyphoto2,
p.propertyphoto3 AS propertyphoto3,
p.propertyphoto4 AS propertyphoto4,
p.shortdescription AS shortdescription,
p.longdescription AS longdescription,
p.virtualtour AS virtualtour,
p.conteudo AS conteudo

FROM
" . $property_table . " p
INNER JOIN
" . $propertytypes_table . " pt ON (p.propertytype=pt.id)
INNER JOIN
" . $propertylocations_table . " pl ON (p.propertylocation=pl.id)
INNER JOIN
" . $propertystatus_table . " ps ON (p.propertystatus=ps.id)
WHERE
p.propertyshow=1
";

if ( $pt != "" )
$query .= " AND p.propertytype=" . $sql->quote ( $pt );

if ( $pp_min != "" )
$query .= " AND p.propertyprice>=" . $sql->quote ( $pp_min );

if ( $pp_max != "" )
$query .= " AND p.propertyprice<=" . $sql->quote ( $pp_max );

if ( $pb != "" )
$query .= " AND p.propertybedrooms>=" . $sql->quote ( $pb );

if ( $pl != "" )
$query .= " AND p.propertylocation=" . $sql->quote ( $pl );

if ( $po != "" )
$query .= " AND p.propertyoption=" . $sql->quote ( $po );
if ( $conteudo != "" )
$query .= " AND p.conteudo=" . $sql->quote ( $conteudo );

// set the query ordering
if ( isset ( $property_search_order ) && $property_search_order != "" )
$query .= "ORDER BY p." . $property_search_order . " " .
( "a" == strtolower ( substr ( $property_search_ordering, 0, 1 ) ) ?
"ASC" : "DESC" );

$results = $sql->execute ( $query, SQL_RETURN_ASSOC );

$total_results = sizeof ( $results );

Edição feita por: inascimentojr, 05/09/2009, 14:56.


#2 Guilherme Luiz

Guilherme Luiz

    Normal

  • Usuários
  • 78 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 04/09/2009, 22:02

você pode usar a função ereg_replace... pra que ele interprete espaços como intervalos... e esses intervalos seriam arrays... ou seja se no campo tiver 1 ele vai mostra sua consulta mas se no seu campo tiver 1 2 3 9 e vc buscar por 2 ele vai encontrar pq o ereg vai tratar os espaços como intervalo de arrays....

ereg_replace
just its a lie when the truth is found !

#3 inascimentojr

inascimentojr

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Não informado

Posted 04/09/2009, 22:18

não sei se me expressei bem. vou dar um exemplo. tenho 100 palitos e 3 pessoas podem compartilhar alguns deles. entao o
palito 1 deve ser visto por pessoa no. "12" // pessoa 1 e pessoa 2
palito 2 deve ser visto por pessoa no. "2"
palito 3 deve ser visto por pessoa no. "3"
palito 4 deve ser visto por pessoa no. "13" // pessoa 1 e pessoa 3
// quero trabalhar com a string (acho que é algo como strstr) dai quando ele encontrar no texto o numero procurado ele inclua na pesquisa.
O codigo ta pronto e funcionando porem quero modificar para incluir esse detalhe! tem como ajuda?




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq