Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ahorrar código con consulta PHP, JQUERY con buscador AJAX

Estas en el tema de Ahorrar código con consulta PHP, JQUERY con buscador AJAX en el foro de PHP en Foros del Web. Hola gente productiva. Les comento que dispongo de un buscador con Jquery y Ajax, que busca los valores en una BD. Este funciona bien para ...
  #1 (permalink)  
Antiguo 25/08/2015, 21:19
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Ahorrar código con consulta PHP, JQUERY con buscador AJAX

Hola gente productiva. Les comento que dispongo de un buscador con Jquery y Ajax, que busca los valores en una BD. Este funciona bien para quien tenga el permiso de "Administrador" pero no se cómo ahorrar código y que funcione también para, por ejemplo, los que tienen permiso "Gerente". Estuve probando adaptarlo pero no funciona todavía por eso les pido ayuda, por favor, alguna idea.

Aquí está el código completo que funciona para los que tienen permiso "Administrador":

redactar.php:
Código PHP:
Ver original
  1. <form action="/enviar-mensaje" id="enviarMensaje" method="post" autocomplete="off">    
  2.      <input name="idUsuarioRemitente" type="hidden" value="<?php echo $idUsuarioRemitente ?>" />                
  3.      <input name="redactarEnviarMensaje" type="hidden" value="<?php echo $redactarEnviarMensaje ?>" />              
  4.         <div class="content">  
  5.              <?php
  6.               //Inicio si tiene permiso "Administrador"                    
  7.               if ($_SESSION['miSession']['permiso']=="1")
  8.                  {
  9.              ?>            
  10.                    <input type="text" class="search"  id="searchid" name="datosUsuarioDestinatario" placeholder="" style="width:700px;" /><br/>
  11.              <?php  
  12.                  }
  13.               //Fin si tiene permiso "Administrador"
  14.               //Inicio si tiene permiso "Gerente"                      
  15.               if ($_SESSION['miSession']['permiso']=="2")
  16.                  {
  17.                  }
  18.               //Fin si tiene permiso "Gerente"
  19.              ?>                    
  20.           <div id="result"></div>
  21.         </div>
  22.      <input type="submit" name="enviar" id="button" value="Enviar" class="submit"/>    
  23.     </form>

funcion.js:
Código Javascript:
Ver original
  1. $(function(){
  2. $(".search").keyup(function()
  3. {
  4. var searchid = $(this).val();
  5. var dataString = 'search='+ searchid;
  6. if(searchid!='')
  7. {
  8.     $.ajax({
  9.     type: "POST",
  10.     url: "/contenido/mensaje/search.php",
  11.     data: dataString,
  12.     cache: false,
  13.     success: function(html)
  14.     {
  15.     $("#result").html(html).show();
  16.     }
  17.     });
  18. }return false;    
  19. });
  20.  
  21. $("#result").on("click",function(e){
  22. var $clicked = $(e.target);
  23. if (e.target.nodeName == "STRONG")
  24. $clicked = $(e.target).parent().parent();
  25. else if (e.target.nodeName == "SPAN" || e.target.nodeName == "IMG")
  26. $clicked = $(e.target).parent();
  27.  
  28. var $name = $clicked.find('.name').html();
  29. var decoded = $("<div/>").html($name).text();
  30. $('#searchid').val(decoded);
  31. });
  32.  
  33. $(document).on("click", function(e) {
  34.     var $clicked = $(e.target);
  35.        
  36.     if (! $clicked.hasClass("search")){
  37.     $("#result").fadeOut();
  38.     }
  39. });
  40.  
  41. $("#searchid").on("click",function(e){
  42.     $("#result").fadeOut();
  43. });
  44. });

search.php:
Lo que necesito aquí es cambiar la consulta para los permisos de "Gerente"
Código PHP:
Ver original
  1. $sql_res=mysql_query("
  2.                      SELECT
  3.                            idUsuario, nombre, apellido, e_mail, idTipoUsuario                  
  4.                          FROM
  5.                            usuario
  6.                          WHERE                                               
  7.                               idUsuario not in (1)
  8.                            AND  
  9.                              (idUsuario LIKE '%$q%'
  10.                              OR
  11.                                nombre LIKE '%$q%'
  12.                              OR
  13.                                apellido LIKE '%$q%'
  14.                              OR
  15.                                e_mail LIKE '%$q%'
  16.                              )                 
  17.                          ORDER BY
  18.                               idUsuario LIMIT 5                      
  19.                     ");
  20. ?>
  21. <br/>
  22. <?php
  23. while($row=mysql_fetch_array($sql_res))
  24. {
  25. $idUsuario=$row['idUsuario'];
  26. $idTipoUsuario=$row['idTipoUsuario'];
  27. $tipoUsuario=mysql_query("
  28.                      SELECT                          
  29.                            tipUs.idTipoUsuario, tipUs.nombreTipoUsuario                        
  30.                          FROM                          
  31.                            tipoUsuario tipUs
  32.                          WHERE
  33.                            tipUs.idTipoUsuario='$idTipoUsuario'                        
  34.                     ");
  35. $rows=mysql_fetch_array($tipoUsuario);
  36. echo $nombreTipoUsuario=$rows['nombreTipoUsuario'];
  37.    
  38. $username= utf8_encode($row['nombre']);
  39. $userapellido=utf8_encode($row['apellido']);
  40. $email=$row['e_mail'];
  41. $b_username='<strong>'.$q.'</strong>';
  42. $b_userapellido='<strong>'.$q.'</strong>';
  43. $b_email='<strong>'.$q.'</strong>';
  44.  
  45. $final_username = tagHighlight($username, $q);
  46. $final_userapellido = tagHighlight($userapellido, $q);
  47. $final_email = tagHighlight($email, $q);
  48.  
  49. ?>
  50. <div class="show" align="left">
  51. <img src="author.PNG" style="width:50px; height:50px; float:left; margin-right:6px;" /><span class="name" ><?php echo $final_username." ".$final_userapellido;?><?php echo " < ".$final_email. " > idUsuario: ".$idUsuario." - ".$nombreTipoUsuario ?></span>&nbsp;<br/><br/>
  52. </div>
  #2 (permalink)  
Antiguo 26/08/2015, 05:26
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Ahorrar código con consulta PHP, JQUERY con buscador AJAX

aunque no entendi mucho lo que necesitas, prueba con esto:
Código PHP:
Ver original
  1. <form action="/enviar-mensaje" id="enviarMensaje" method="post" autocomplete="off">    
  2.      <input name="idUsuarioRemitente" type="hidden" value="<?php echo $idUsuarioRemitente ?>" />                
  3.      <input name="redactarEnviarMensaje" type="hidden" value="<?php echo $redactarEnviarMensaje ?>" />              
  4.         <div class="content">  
  5.              <?php
  6.               //Inicio si tiene permiso "Administrador"                    
  7.               if ($_SESSION['miSession']['permiso']=="1")
  8.                  {
  9.            
  10.                  echo "<input type='text' class='search'  id='searchid' name='datosUsuarioDestinatario' placeholder='' style='width:700px;' /><br/>";
  11.  
  12.                  }
  13.               //Fin si tiene permiso "Administrador"
  14.               //Inicio si tiene permiso "Gerente"                      
  15.               else if ($_SESSION['miSession']['permiso']=="2")
  16.                  {
  17.                  echo "<input type='text' class='search'  id='searchid' name='datosUsuarioDestinatario' placeholder='' style='width:700px;' /><br/>";
  18.                  }
  19.                  else {
  20.                  }
  21.               //Fin si tiene permiso "Gerente"
  22.              ?>                    
  23.           <div id="result"></div>
  24.         </div>
  25.      <input type="submit" name="enviar" id="button" value="Enviar" class="submit"/>    
  26.     </form>
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 26/08/2015, 10:11
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Ahorrar código con consulta PHP, JQUERY con buscador AJAX

Hola xfxstudios. Gracias por responderme. Te comento que ya lo había intentado de esa forma. El problema o lo que necesito explicarme bien es que según el permiso de usuario sea otra consulta.

Es decir, si en "redactar.php" el permiso del "Administrador" es:

Código PHP:
Ver original
  1. //Inicio si tiene permiso "Administrador"                    
  2.               if ($_SESSION['miSession']['permiso']=="1")
  3.                  {
  4.            
  5.                  echo "<input type='text' class='search'  id='searchid' name='datosUsuarioDestinatario' placeholder='' style='width:700px;' /><br/>";
  6.  
  7.                  }
  8.               //Fin si tiene permiso "Administrador"

Aquí está su consulta, que es de "search.php" (recordando que desde la página "function.php" hace la llamada por Ajax a "search.php"):

Código PHP:
Ver original
  1. $sql_res=mysql_query("
  2.                     SELECT
  3.                           idUsuario, nombre, apellido, e_mail, idTipoUsuario                  
  4.                         FROM
  5.                           usuario
  6.                         WHERE                                              
  7.                              idUsuario not in (1)
  8.                           AND  
  9.                             (idUsuario LIKE '%$q%'
  10.                             OR
  11.                               nombre LIKE '%$q%'
  12.                             OR
  13.                               apellido LIKE '%$q%'
  14.                             OR
  15.                               e_mail LIKE '%$q%'
  16.                             )                  
  17.                         ORDER BY
  18.                              idUsuario LIMIT 5                      
  19.                    ");
  20. ?>

La cuestión sería reutilizar el código pero en vez de que sea el permiso "Administrador" lo sea para otro usuario como "Gerente" que tendría otra consulta. La consulta sé cual sería pero no se cómo hacer la llamada por Ajax o qué acomodar para que solo pueda, identificando el otro permiso, otra consulta.

El código completo del caso está en el primer post, solo que me faltó colocar una línea (la primera) importante en la página "search.php". Aquí el código completo de "search.php":

Código PHP:
Ver original
  1. $q=$_POST['search'];
  2.  
  3. $sql_res=mysql_query("
  4.                      SELECT
  5.                            idUsuario, nombre, apellido, e_mail, idTipoUsuario                  
  6.                          FROM
  7.                            usuario
  8.                          WHERE                                              
  9.                               idUsuario not in (1)
  10.                            AND  
  11.                              (idUsuario LIKE '%$q%'
  12.                              OR
  13.                                nombre LIKE '%$q%'
  14.                              OR
  15.                                apellido LIKE '%$q%'
  16.                              OR
  17.                                e_mail LIKE '%$q%'
  18.                              )                  
  19.                          ORDER BY
  20.                               idUsuario LIMIT 5                      
  21.                     ");
  22. ?>
  23. <br/>
  24. <?php
  25. while($row=mysql_fetch_array($sql_res))
  26. {
  27. $idUsuario=$row['idUsuario'];
  28. $idTipoUsuario=$row['idTipoUsuario'];
  29. $tipoUsuario=mysql_query("
  30.                     SELECT                          
  31.                           tipUs.idTipoUsuario, tipUs.nombreTipoUsuario                        
  32.                         FROM                          
  33.                           tipoUsuario tipUs
  34.                         WHERE
  35.                           tipUs.idTipoUsuario='$idTipoUsuario'                        
  36.                    ");
  37. $rows=mysql_fetch_array($tipoUsuario);
  38. echo $nombreTipoUsuario=$rows['nombreTipoUsuario'];
  39.    
  40. $username= utf8_encode($row['nombre']);
  41. $userapellido=utf8_encode($row['apellido']);
  42. $email=$row['e_mail'];
  43. $b_username='<strong>'.$q.'</strong>';
  44. $b_userapellido='<strong>'.$q.'</strong>';
  45. $b_email='<strong>'.$q.'</strong>';
  46.  
  47. $final_username = tagHighlight($username, $q);
  48. $final_userapellido = tagHighlight($userapellido, $q);
  49. $final_email = tagHighlight($email, $q);
  50.  
  51. ?>
  52. <div class="show" align="left">
  53. <img src="author.PNG" style="width:50px; height:50px; float:left; margin-right:6px;" /><span class="name" ><?php echo $final_username." ".$final_userapellido;?><?php echo " < ".$final_email. " > idUsuario: ".$idUsuario." - ".$nombreTipoUsuario ?></span>&nbsp;<br/><br/>
  54. </div>


Creo que habría que modificar la consulta en "search.php" pero ya intenté colocándoles las condiciones "if ($_SESSION['miSession']['permiso']=="1")
{}" o "if ($_SESSION['miSession']['permiso']=="2") {}" pero no funciona. Capaz que haya que modificar adonde se hace la llamada desde "function.php" pero en esa materia no lo se, si es agregar algún parámetro para provocar la diferenciación en las llamadas.

Última edición por mikehove; 26/08/2015 a las 10:19
  #4 (permalink)  
Antiguo 27/08/2015, 04:46
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Ahorrar código con consulta PHP, JQUERY con buscador AJAX

Alguna ayuda, por favor?
  #5 (permalink)  
Antiguo 27/08/2015, 14:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ahorrar código con consulta PHP, JQUERY con buscador AJAX

Lo primero, si los filtros son diferentes, entonces guárdalos en una variable; ejemplo:

Código PHP:
Ver original
  1. if ($_SESSION['miSession']['permiso']=="1") {
  2.        $filtro = '-- Aquí los filtros adecuados para este tipo de usuario --';
  3. } elseif ($_SESSION['miSession']['permiso']=="2") {
  4.        $filtro = '-- Aquí los filtros adecuados para este tipo de usuario --';
  5. } // Si requieres otras opciones, las agregas aquí
  6.  
  7. // Luego armas la consulta, sugiero que sea con JOIN para evitarte
  8. // otra consulta donde obtienes el tipo de usuario
  9.  
  10. $consulta = "SELECT u.idUsuario, u.nombre, u.apellido, u.e_mail, u.idTipoUsuario, t.nombreTipoUsuario";
  11. $consulta .= " FROM usuarios u";
  12. $consulta .= " LEFT JOIN tipoUsuarios t ON u.idTipoUsuario = t.idTipoUsuario";
  13. $consulta .= " WHERE $filtro"; // Aquí agregas el filtro, ojo con los prefijos de tablas
  14. $consulta .= " LIMIT(0,10) ORDER BY u.nombre"; // Paginación y orden
  15.  
  16. // Aquí ya ejecutas la consulta
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 28/08/2015, 20:19
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Ahorrar código con consulta PHP, JQUERY con buscador AJAX

Muchas gracias Triby por contestarme y a Xfxstudios.
Comento cómo lo pude resolver:

/redactar:
Código PHP:
Ver original
  1. //Inicio si tiene permiso "Administrador"                      
  2.                  if ($_SESSION['miSession']['permiso']=="1")
  3.                     {                  
  4.                     ?>  
  5.                       <input  id="permisoUsuario" type="hidden" value="permisoAdmin" />                    
  6.                     <?php  
  7.                     }
  8.                  //Fin si tiene permiso "Administrador"
  9.                  //Inicio si tiene permiso "Gerente Productor"                     
  10.                  if ($_SESSION['miSession']['permiso']=="2")
  11.                     {
  12.                     ?>            
  13.                       <input  id="permisoUsuario" type="hidden" value="permisoGerente" />                    
  14.                     <?php  
  15.                     }
  16.                  //Fin si tiene permiso "Gerente Productor"

js:
Código Javascript:
Ver original
  1. var permisoUsuario = $(this).parent().find('input#permisoUsuario').val();
  2. var dataString = 'search='+ searchid+"&permisoUsuario="+permisoUsuario;

search.php:
Código PHP:
Ver original
  1. if($_POST['permisoUsuario'] == "permisoAdmin")
  2.   {
  3.    //echo "Tiene permiso de Administrador";
  4.          $filtro = "                             
  5.                     idUsuario not in (1)
  6.                  AND  
  7.                     (idUsuario LIKE '%$q%'
  8.                  OR
  9.                     nombre LIKE '%$q%'
  10.                  OR
  11.                     apellido LIKE '%$q%'
  12.                  OR
  13.                     e_mail LIKE '%$q%'
  14.                  )";
  15.   }
  16. if($_POST['permisoUsuario'] == "permisoGerente")
  17.   {
  18.    //echo "Tiene permiso de Gerente Productor";
  19.          $filtro = "                             
  20.                     (idTipoUsuario='1' OR idTipoUsuario='5')
  21.                  AND  
  22.                     (idUsuario LIKE '%$q%'
  23.                  OR
  24.                     nombre LIKE '%$q%'
  25.                  OR
  26.                     apellido LIKE '%$q%'
  27.                  OR
  28.                     e_mail LIKE '%$q%'
  29.                  )";
  30.   }
  31. $sql_res=mysql_query("
  32.                     SELECT
  33.                            idUsuario, nombre, apellido, e_mail, idTipoUsuario                  
  34.                          FROM
  35.                            usuario
  36.                          WHERE                                               
  37.                             $filtro            
  38.                          ORDER BY
  39.                               idUsuario LIMIT 5                      
  40.                     ");
  #7 (permalink)  
Antiguo 28/08/2015, 23:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ahorrar código con consulta PHP, JQUERY con buscador AJAX

Sigues haciendo la otra consulta dentro del while? entonces lo único que querías era un código "más legible" sin mejorar el rendimiento del script.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: jquery, js
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 19:28.