Foros del Web » Programando para Internet » PHP »

realizar busqueda unica

Estas en el tema de realizar busqueda unica en el foro de PHP en Foros del Web. estimados, necesito ayuda con una consulta lo que ocurre es que cuando hago una busqueda por apellido y quiero ver los datos de ese usuario ...
  #1 (permalink)  
Antiguo 15/10/2009, 14:19
Avatar de pedroca  
Fecha de Ingreso: julio-2009
Mensajes: 97
Antigüedad: 14 años, 9 meses
Puntos: 0
realizar busqueda unica

estimados, necesito ayuda con una consulta lo que ocurre es que cuando hago una busqueda por apellido y quiero ver los datos de ese usuario me los muestra pero lo que ocurre es que me los muestra si ese usuario tiene 10 movimientos me lo muestra 10 veces el apellido y el nombre y solo quisiera que me aparesca una sola vez y sus 10 movimientos que hizo ese usuario le spaso la consulta que estoy haciendo:

<?php
/* Incluyo el fichero de conexión
a la base de datos mysql */
include("conexion.php");

$apellidos = $_POST['apellidos'];


?>
<style type="text/css">
<!--
body {
background-color: #CCCCCC;
}
-->
</style>
<table width="700" border="1" cellspacing="2" cellpadding="2">
<tr>
<td><div align="center"><strong>Apellidos</strong></div></td>
<td><div align="center"><strong>Nombres</strong></div></td>
<td><div align="center"><strong>Fecha</strong></div></td>
<td><div align="center"><strong>Hora</strong></div></td>
<td><div align="center"><strong>Tipo</strong></div></td>
</tr>
<?php
/*
Realizo la consulta a la base datos
*/

$link=Conectarse();
$sql = "select empleados.apellidos, empleados.nombres, control.fecha, control.hora, control.tipo from empleados";
$sql .=" inner join control on empleados.cirun = control.cirun";
$sql .=" where empleados.apellidos like '%$apellidos%'";
$result = mysql_query($sql, $link);
if ($row = mysql_fetch_array($result)){
mysql_field_seek($result,0);
while ($field = mysql_fetch_field($result)){
} do {
/*
en "$row" muestro los datos
*/
?>
<tr>
<td><?php echo $row[0]; ?></td>
<td><?php echo $row[1]; ?></td>
<td><?php echo $row[2]; ?></td>
<td><?php echo $row[3]; ?></td>
<td><?php echo $row[4]; ?></td>
</tr>
<?php
} while ($row = mysql_fetch_array($result));
} else {
/*
Si no se encontraron resultados
se muestra el siguiente mensaje
*/
echo "<h2>No Registro Movimientos!</h2>";
}
?>
</table>
  #2 (permalink)  
Antiguo 15/10/2009, 14:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: realizar busqueda unica

Puedes hacer una consulta usando GROUP BY de MySQL, para que te muestre solamente una vez el nombre.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 15/10/2009, 15:40
Avatar de pedroca  
Fecha de Ingreso: julio-2009
Mensajes: 97
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: realizar busqueda unica

Cita:
Iniciado por abimaelrc Ver Mensaje
Puedes hacer una consulta usando GROUP BY de MySQL, para que te muestre solamente una vez el nombre.

estimado cuando utilizo el group by me muestra una sola vez pero si este usuario tiene 6 movimientos solo me muestra un solomovimiento y no los 6 por decir
ahurita me muestra por decir asi:
Apellidos Nombres Tipo
Aireyu Villagomez Cesar Levi 1
Aireyu Villagomez Cesar Levi 2
Aireyu Villagomez Cesar Levi 3
Aireyu Villagomez Cesar Levi 4
Aireyu Villagomez Cesar Levi 5
Aireyu Villagomez Cesar Levi 6

quiero que me muestre asi:
Apellidos Nombres Tipo
Aireyu Villagomez Cesar Levi 1
2
3
4
5
6
  #4 (permalink)  
Antiguo 15/10/2009, 15:47
Avatar de pedroca  
Fecha de Ingreso: julio-2009
Mensajes: 97
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: realizar busqueda unica

a mi codigo que tendria que aumentarle para que me muestre de esa manera los datos

gracias
  #5 (permalink)  
Antiguo 15/10/2009, 16:22
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: realizar busqueda unica

prueba este codigo, igual y te sirve
Código php:
Ver original
  1. $link=Conectarse();
  2. $sql = "select empleados.apellidos, empleados.nombres, control.fecha, control.hora, control.tipo from empleados";
  3. $sql .=" inner join control on empleados.cirun = control.cirun";
  4. $sql .=" where empleados.apellidos like '%$apellidos%'";
  5. $result = mysql_query($sql, $link);
  6. if(mysql_num_rows($result) > 0){
  7.     $band='';
  8.     while($row = mysql_fetch_array($result)){
  9.         if($band != $row[0]){
  10.             echo '<th colspan="3">'.$row[0].' '.$row[1].'</th>';
  11.             $band=$row[0];
  12.         }
  13.         echo '<td>'.$row[2].'</td>';
  14.         echo '<td>'.$row[3].'</td>';
  15.         echo '<td>'.$row[4].'</td>';
  16.     }
  17. }else{
  18.     echo "<h2>No Registro Movimientos!</h2>";
  19. }
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #6 (permalink)  
Antiguo 15/10/2009, 17:26
Avatar de luckystrikede11  
Fecha de Ingreso: octubre-2009
Ubicación: Concepcion, Chile
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: realizar busqueda unica

prueba con algo asi..

Código:
$aux = '@@'
while($row = mysql_fetch_array($consulta_sql)){
        if($aux != $row['apellido']){
            echo $row['apellido'];
            $aux = $row['apellido'];
        }
        echo $row['movimiento'];
    }
Nota: el unico problema que vas a presentar es cuando existan 2 personas con el mismo apellido.. mostrara solo una vez el apellido y los movimientos de ambas o mas personas si fuera el caso.


lo que podrias hacer cuando exista mas de uno.. rescatar el total.. y asociar un identificador.. y ahi ocupar la funcion del dentro del while
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 00:21.