Jump to content


Photo

[resolvido] Como Faço Isso?


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

#1 inascimentojr

inascimentojr

    Novato no fórum

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

Posted 07/09/2009, 02:03

:boxing: tenho um script em php que preciso listar os campos de uma tabela que contenham um determinado numero dentro da string. o problema e que na string pode conter mais de um numero de 0 a 9 ou seja se no campo tem "2 3 5" e eu buscar pelo numero 3 essa linha deve ser listada. o codigo atual e o seguinte:

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

// p.conteudo é o campo da tabela qe sera pesquisado (ex '2 3 5 7') e $conteudo e o numero que esta sendo pesquisado (ex. '2')

:blink: acho que tenho que utilizar algo como strstr , porem nao consigo fazer funcionar, como ficaria no codigo acima? Por favor de um exemplo usando o codigo acima. vou postar o codigo completo abaixo para vocês entender melhor o funcionamento :

<?php
  }
  else 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 );

	if ( $total_results == 0 )
	{
	  ?>

Edição feita por: inascimentojr, 10/09/2009, 04:50.


#2 _MELO_

_MELO_

    Normal

  • Usuários
  • 117 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre - RS. Argentina.
  • Interesses:PHP, JavaScript, Ajax, pl/pgSQL e PostgreSQL.

Posted 08/09/2009, 15:37

Tenta assim brother:

$query .= " AND p.conteudo ilike '%".$sql->quote($conteudo)."%' ;
Alexandre Melo

#3 inascimentojr

inascimentojr

    Novato no fórum

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

Posted 08/09/2009, 19:07

Tenta assim brother:

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


Esse codigo esta dando um erro : Parse error: syntax error, unexpected '"' in /home/morarnor/public_html/bairros/search_.php on line 265

tentei consertar mas não acertei....... o problema está nas aspas .... tem como acertar?

#4 MarcoviZ

MarcoviZ

    ubuntu for human being

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

Posted 08/09/2009, 19:12

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

faltou fechar aspas

[]'s
[]'s

#5 _MELO_

_MELO_

    Normal

  • Usuários
  • 117 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre - RS. Argentina.
  • Interesses:PHP, JavaScript, Ajax, pl/pgSQL e PostgreSQL.

Posted 09/09/2009, 10:12

Esqueci de fechar aspas ... valeu MArcoviZ!
Conseguiu inascimentojr? Era isso que precisava?
Alexandre Melo

#6 inascimentojr

inascimentojr

    Novato no fórum

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

Posted 10/09/2009, 04:52

Eu estava trabalhando a parte errada do codigo... a parte correta do codigo era:

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.conteudo like " $sql->quote ($conteudo);

tentei usar

where

	  p.conteudo like '%" $sql->quote ($conteudo)"%' ";

porem nao funcionou, somente retornava um resultado fui testando e dai cheguei a uma solução abaixo.



o codigo correto é:

WHERE
		
			p.conteudo like" . $sql->quote ("%".($xxxx)."%");


Resolvido galera, muito obrigado pelas dicas...

Edição feita por: inascimentojr, 10/09/2009, 04:55.





1 user(s) are reading this topic

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

IPB Skin By Virteq