Ver Mensaje Individual
  #20 (permalink)  
Antiguo 17/05/2013, 07:02
Bugger
 
Fecha de Ingreso: septiembre-2010
Ubicación: /home/
Mensajes: 103
Antigüedad: 13 años, 8 meses
Puntos: 17
Respuesta: error If y else <fácil>

yo he copiado tú código tal cual estaba!

el caso es que debes, sacar tu SELECT * FROM tabla_X fuera de donde creas las cláusulas WHERE, donde pones los parámetros. Entonces sino hay parámetros te cargará todos los resultados - si hay parámetros entrará en tú IF y creará la cláusula WHERE.

algo así debería irte! es tu código algo modificado y optimizado, para comprobar las variables no debes poner tantos else if -

Código PHP:
Ver original
  1. <?php
  2. // Inicializamos la variable
  3. $clausula_where = "";
  4. // Esta funcion te devuelve WHERE o AND para montar tu clausula WHERE de la sentencia SQL
  5. function FWhere($clausula_where) { return ($clausula_where == '') ? ' WHERE ' : "$clausula_where AND "; }
  6.  
  7. // Comprobamos primer parámetro
  8. if(!empty($nombre)){
  9.     // Si existe miramos la funcion FWhere - para saber si hay que poner un WHERE o un AND a la clausula
  10.     $clausula_where = Fwhere($clausula_where) ." tb1.Nombre LIKE '%".$nombre."%' ";
  11. }
  12. // Comprobamos Segundo parámetro
  13. if(!empty($localidad)){
  14.     // Si existe miramos la funcion FWhere - para saber si hay que poner un WHERE o un AND a la clausula
  15.     // En este caso si existiera la variable anterior la funcion FWHERE te devolveria un AND
  16.      $clausula_where = Fwhere($clausula_where) ." tb1.Localidad LIKE '%$nombre%' ";
  17. }
  18. // Comprobamos Tercer parámetro
  19. if( !empty($provincia)){
  20.     // Si existe miramos la funcion FWhere - para saber si hay que poner un WHERE o un AND a la clausula
  21.     // En este caso si existiera alguna de las variables anteriores la funcion FWHERE te devolveria un AND
  22.      $clausula_where =  Fwhere($clausula_where) ." tb1.Provincia LIKE '%$provincia%' ";
  23. }
  24. // Comprobamos Cuarto parámetro
  25. if(!empty($cif)){
  26.     // Si existe miramos la funcion FWhere - para saber si hay que poner un WHERE o un AND a la clausula
  27.      // En este caso si existiera alguna de las variables anteriores la funcion FWHERE te devolveria un AND
  28.      $clausula_where =  Fwhere($clausula_where) ." tb1.CIF LIKE '%$nombre%' ";
  29. }
  30.  
  31.  // En este caso si existiera alguna de las variables anteriores la funcion FWHERE te devolveria un AND
  32. $clausula_where =  Fwhere($clausula_where)."  tb2.nom_usuario = '".$user."'";
  33. $clausula_where .= "  ORDER BY Nombre ASC";
  34.  
  35. // Creamos la Sentencia SQL  y le pasamos la variable clausula_where
  36. $sql= " SELECT * FROM lista_clientes as tb1 INNER JOIN usuario_zona as tb2  
  37.        ON tb1.Zona = tb2.Zona ".$clausula_where;
  38. // Para provar el codigo puedes imprimir la sentencia por pantalla para ver que sale
  39. echo $sql;
  40. $consulta = mysql_query($sql) or die("Error en la sentencia SQL: ".$sql." - ".mysql_error());
  41.  
  42. if(mysql_num_rows($consulta)!=0)  
  43. {
  44. ?>
  45. <form action="index.php" name="form2" method="post">  
  46. <input type="submit" name="nuevo" value="Crear Nuevo Cliente" style="border-radius:15px" class="button large orange" />
  47. </form>
  48. <?php
  49. }else{
  50.     echo "No hay Resultados";
  51. }
  52. ?>

espero que te sirva!

Saludos

Última edición por Bugger; 17/05/2013 a las 08:23