Foros del Web » Programando para Internet » PHP »

Duda con sintaxis

Estas en el tema de Duda con sintaxis en el foro de PHP en Foros del Web. Hola!!! Tengo un código de un buscador en el que tuve que implementar variables de SESSION, sin ellas la búsqueda se hace de forma correcta, ...
  #1 (permalink)  
Antiguo 09/04/2010, 12:29
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Duda con sintaxis

Hola!!!

Tengo un código de un buscador en el que tuve que implementar variables de SESSION, sin ellas la búsqueda se hace de forma correcta, pero aplicando estas variables de session no, solo hace correcta la 1er búsqueda o sea por ciudad, en las demás no me da error, sino que me muestra la totalidad de los registros.

Me pueden ayudar??? gracias gente!

Código PHP:
<?php 
//defino variables para que las reconozca php son las que vienen del formulario y se escriben asi desde la V.5.0 

require ("php/conectar_db.php"); 

session_start(); 

if (isset(
$_POST['ciudad']))  

    if (
$_SESSION['buscarciudad'] != $_POST['ciudad']) 
    
$_SESSION['buscarciudad'] = $_POST['ciudad'];  

if (isset(
$_POST['partido']))  

    if (
$_SESSION['buscarpartido'] != $_POST['partido']) 
    
$_SESSION['buscarpartido'] = $_POST['partido'];  

if (isset(
$_POST['depto']))  

    if (
$_SESSION['buscardepto'] != $_POST['depto']) 
    
$_SESSION['buscardepto'] = $_POST['depto'];  



if ((!empty(
$_SESSION['buscarciudad'])) || ($_SESSION['buscarpartido'] = "") || ($_SESSION['buscardepto'] = ""))  

    
//cuando todos los campos estan vacios excepto CIUDAD 
    
$_pagi_sql "SELECT * FROM tb_ciudades WHERE ciuNombre LIKE '%".mysql_real_escape_string($_SESSION['buscarciudad'])."%'"

else if ((
$_SESSION['buscarciudad'] = "") || (!empty($_SESSION['buscarpartido'])) || ($_SESSION['buscardepto'] = "")) 

    
//cuando todos los campos estan vacios excepto PARTIDO 
    
$_pagi_sql "SELECT * FROM tb_ciudades WHERE ciuPartido LIKE '%".mysql_real_escape_string($_SESSION['buscarpartido'])."%'"
}           
else if ((
$_SESSION['buscarciudad'] = "") || ($_SESSION['buscarpartido'] = "") || (!empty($_SESSION['buscardepto'])))  

    
//cuando todos los campos estan vacios excepto DEPTO 
    
$_pagi_sql "SELECT * FROM tb_ciudades WHERE ciuDepto LIKE '%".mysql_real_escape_string($_SESSION['buscardepto'])."%'"

else { 
$_pagi_sql "SELECT * FROM tb_ciudades"

//hay que seguir haciendo las distintas combinaciones para el buscador... 



....


    echo 
"<table width='523' border='0' class='tblbuscarprof' align='center'>"
    echo 
"<tr>"
    echo 
"<td class='tdgris' width='60'>Ciudad</td>"
    echo 
"<td class='tdgris' width='60'>Partido</td>"
    echo 
"<td class='tdgris' width='70'>Departamento</td>"
    echo 
"</tr>"
    echo 
"</table>"
while (
$Row mysql_fetch_array ($_pagi_result)) { 
    echo 
"<table width='523' border='0' align='center'>";     
    echo 
"<tr>"
    echo 
"<td class='tdnegra' width='60'>".$Row["ciuNombre"]."</td>"
    echo 
"<td class='tdnegra' width='60'>".$Row["ciuPartido"]."</td>"
    echo 
"<td class='tdnegra' width='70'>".$Row["ciuDepto"]."</td>"
    echo 
"</tr>"
    echo 
" <tr>"
    echo 
" <td colspan='3'><img src='images/linea.jpg' width='523' height='12' /></td>"
    echo 
" </tr>";     
    echo 
"</table>"

echo 
"<br>"

//cierra la base 
mysql_close ($Link); 

?>
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 09/04/2010, 16:27
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: Duda con sintaxis

ensaya con el session_start(); antes del require, tengo entendido que session_start(); debe ir antes de cualquier otro codigo php, o html que genere salida hacia el browser
  #3 (permalink)  
Antiguo 09/04/2010, 16:43
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Duda con sintaxis

probé con tu consejo pero sigo con el mismo problema... si alguien tiene una alternativa de un buscador que haga la paginacion luego de la búsqueda de forma correcta se lo agradece enormemente, pues hace una semana que ando en la búsqueda y no logro resolverlo :(
__________________
Saludos!!!
Maru.-
  #4 (permalink)  
Antiguo 09/04/2010, 17:12
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Duda con sintaxis

Puede ser que te de el problema sessiones de las primeras busquedas que hiciste?


Valla, las eliminas en algún sitio? :S
  #5 (permalink)  
Antiguo 09/04/2010, 17:19
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Duda con sintaxis

uff!!! ya probé destruyendo las variables, probé sin variables de session... ya no se que mas intentar
__________________
Saludos!!!
Maru.-
  #6 (permalink)  
Antiguo 09/04/2010, 17:40
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Duda con sintaxis

pero para que necesitas las sessiones? :S

Edito, no obstante, acabo de ver esto, y esta mal

if (isset($_POST['ciudad']))
{
if ($_SESSION['buscarciudad'] != $_POST['ciudad'])
$_SESSION['buscarciudad'] = $_POST['ciudad'];
}
if (isset($_POST['partido']))
{
if ($_SESSION['buscarpartido'] != $_POST['partido'])
$_SESSION['buscarpartido'] = $_POST['partido'];
}
if (isset($_POST['depto']))
{
if ($_SESSION['buscardepto'] != $_POST['depto'])
$_SESSION['buscardepto'] = $_POST['depto'];
}



sería así, pero ya te digo que no sé para qué :S

Código PHP:
Ver original
  1. if (isset($_POST['ciudad']))  
  2. {
  3.     if ($_SESSION['buscarciudad'] != $_POST['ciudad'])
  4.     {$_SESSION['buscarciudad'] = $_POST['ciudad'];  }
  5. }
  6. if (isset($_POST['partido']))  
  7. {
  8.     if ($_SESSION['buscarpartido'] != $_POST['partido'])
  9.     {$_SESSION['buscarpartido'] = $_POST['partido'];  }
  10. }
  11. if (isset($_POST['depto']))  
  12. {
  13.     if ($_SESSION['buscardepto'] != $_POST['depto'])
  14.     {$_SESSION['buscardepto'] = $_POST['depto'];  }
  15. }
  #7 (permalink)  
Antiguo 09/04/2010, 17:46
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Duda con sintaxis

Por otro lado, no quieres usar else if

Quieres usar elseif(en las búsquedas).

Y, por último, no sé si || es and o or

Prueba a cambiarlo por and, si es o, es lógico que no funcione bien, puesto que siempre se cumple la condicion primera.

Para que me entiendas, le estas diciendo, en español:

si ((no esta vacio ($_SESSION['buscarciudad'])) o ($_SESSION['buscarpartido'] = "") o ($_SESSION['buscardepto'] = ""))

Eso siempre pasará, valla, si buscas ciudad, esta claro que se cumplen las tres condiciones, no esta vacio buscar ciudad, esta lleno buscarpartido y buscardpto.

Por otro lado, si buscas el partido, también será verdadero, porque no existe ciudad y existe partido, pero no existe depto...

Valla, cambialo por and o && los ||
  #8 (permalink)  
Antiguo 09/04/2010, 17:47
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Duda con sintaxis

Millan2525, creo que los dos códigos que has puesto son correctos

En un if del primer código que hay en el post veo que solo hay un '=', cambialo por '=='.

&& = and
|| = or

Un saludo
  #9 (permalink)  
Antiguo 10/04/2010, 11:58
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Duda con sintaxis

Muchas gracias por ayudarme y los consejos para resolver esto.

Lo de las sesiones es porque estoy usando un paginador y cuando hago la búsqueda que la hace bien, luego al querer pasar a una página siguiente u otra me retorna la totalidad de los registros y buscando en la web encontre que eso se podria resolver poniendo las variables de session, aunque no se... empece a armar eso pero tenia dudas con la sintaxis.

Les dejo el código completo por las dudas y por si a alguien se sirve, me da un parse error en la linea donde se definen las variables de session :(

Código PHP:
session_start(); 
Código HTML:
<form action="<?PHP $PHP_SELF ?>" method="post">
<table width="500" height="150" border="0" align="center" class="tblformprof" cellspacing="5" cellpadding="5">
  <tr>
    <td width="54" class="izq">Ciudad</td>
    <td width="197"><label>
      <input type="text" name="ciudad" id="ciudad" size="10">
    </label></td>
    <td width="59" class="izq">&nbsp;</td>
    <td width="157"><label></label></td>
  </tr>
  <tr>
    <td class="izq">Partido</td>
    <td><label>
      <input type="text" name="partido" id="partido" size="25">
    </label></td>
    <td class="izq">Departamento</td>
    <td><label>
      <input type="text" name="depto" id="depto" size="20">
    </label></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><label>
      <div align="center">
        <input class="boton" type="submit" name="button" id="button" value="Buscar">
        </div>
    </label></td>
    <td>&nbsp;</td>
    <td><label>
      <div align="left">
        <input class="boton"type="reset" name="button2" id="button2" value="Borrar" />
        </div>
    </label></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
</form> 
Código PHP:
require ("php/conectar_db.php");

if (isset(
$_POST['ciudad']))

* * if (
$_SESSION['buscarciudad'] != $_POST['ciudad']) 
* * {
$_SESSION['buscarciudad'] == $_POST['ciudad']; *}


if (isset(
$_POST['partido'])) *

* * if (
$_SESSION['buscarpartido'] != $_POST['partido']) 
* * {
$_SESSION['buscarpartido'] == $_POST['partido']; *}
}
 
if (isset(
$_POST['depto'])) *

* * if (
$_SESSION['buscardepto'] != $_POST['depto']) 
* * {
$_SESSION['buscardepto'] == $_POST['depto']; *}
}


if ((!empty(
$_SESSION['buscarciudad'])) && ($_SESSION['buscarpartido'] == "") && ($_SESSION['buscardepto'] == "")) 
{
    
//cuando todos los campos estan vacios excepto CIUDAD
    
$_pagi_sql "SELECT * FROM tb_ciudades WHERE ciuNombre LIKE '%".mysql_real_escape_string($_SESSION['buscarciudad'])."%'";
}
elseif ((
$_SESSION['buscarciudad'] == "") && (!empty($_SESSION['buscarpartido'])) && ($_SESSION['buscardepto'] == ""))
{
    
//cuando todos los campos estan vacios excepto PARTIDO
    
$_pagi_sql "SELECT * FROM tb_ciudades WHERE ciuPartido LIKE '%".mysql_real_escape_string($_SESSION['buscarpartido'])."%'";
}          
elseif ((
$_SESSION['buscarciudad'] == "") && ($_SESSION['buscarpartido'] == "") && (!empty($_SESSION['buscardepto']))) 
{
    
//cuando todos los campos estan vacios excepto DEPTO
    
$_pagi_sql "SELECT * FROM tb_ciudades WHERE ciuDepto LIKE '%".mysql_real_escape_string($_SESSION['buscardepto'])."%'";
}
else {
$_pagi_sql "SELECT * FROM tb_ciudades";
}


$_pagi_cuantos 25;    


$_pagi_propagar = array("ciudad, partido, depto");
$_pagi_result mysql_query($_pagi_sql$Link);
include(
"php/paginator.inc.php");

echo 
"<p class='resultado'><b>Resultado(s):</b> ".$_pagi_info."</p>"

    echo 
"<table width='523' border='0' class='tblbuscarprof' align='center'>";
    echo 
"<tr>";
    echo 
"<td class='tdgris' width='60'>Ciudad</td>";
    echo 
"<td class='tdgris' width='60'>Partido</td>";
    echo 
"<td class='tdgris' width='70'>Departamento</td>";
    echo 
"</tr>";
    echo 
"</table>";
while (
$Row mysql_fetch_array ($_pagi_result)) {
    echo 
"<table width='523' border='0' align='center'>";    
    echo 
"<tr>";
    echo 
"<td class='tdnegra' width='60'>".$Row["ciuNombre"]."</td>";
    echo 
"<td class='tdnegra' width='60'>".$Row["ciuPartido"]."</td>";
    echo 
"<td class='tdnegra' width='70'>".$Row["ciuDepto"]."</td>";
    echo 
"</tr>";
    echo 
" <tr>";
    echo 
" <td colspan='3'><img src='images/linea.jpg' width='523' height='12' /></td>";
    echo 
" </tr>";    
    echo 
"</table>";
}
echo 
"<br>";
echo 
"<p class='paginar'>".$_pagi_navegacion."</p>";


//cierra la base
mysql_close ($Link); 
Mil gracias de nuevo :)
__________________
Saludos!!!
Maru.-

Etiquetas: sintaxis
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:21.