Foros del Web » Programando para Internet » PHP »

mostrar un dato del rows si estos son iguales

Estas en el tema de mostrar un dato del rows si estos son iguales en el foro de PHP en Foros del Web. hola :D bueno mi pregunta es la siguiente queria saber si se podria hacer lo siguiente: tengo una bd de traspasos y quiero llamar los ...
  #1 (permalink)  
Antiguo 07/08/2009, 08:06
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 15 años, 5 meses
Puntos: 0
mostrar un dato del rows si estos son iguales

hola :D bueno mi pregunta es la siguiente queria saber si se podria hacer lo siguiente:
tengo una bd de traspasos y quiero llamar los registros que tengan por ejemplo el mismo numero de traspaso bueno en los rows se repiten varios datos para las distintas especies guardadas algo asi:

|traspaso|nombre| serie |
--------------------------------
|12 | pc |3746kj|
---------------------------------
|12 |pc |867gh |
---------------------------------
|12 | monitor |125nk |


el problema ocurre cuando llamo a los datos poer numero de traspaso y los imprimo me muestra el numero de traspaso repetido solo kiero que me imprime una sola vez el dato repetido, y los datos que no se repiten me los muesstre ejemplo:
|traspaso|nombre| serie |
--------------------------------
|12 | pc |3746kj|
---------------------------------
| ............ |............|867gh |
---------------------------------
| .............| monitor |125nk | tratar de imprimir algo asi nose si se puede saludos
  #2 (permalink)  
Antiguo 07/08/2009, 08:17
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, 5 meses
Puntos: 1517
Respuesta: mostrar un dato del rows si estos son iguales

Verifica si con distinct te ayuda hacer lo que quieres. Eso es si lo quieres hacer en la base datos directamente.
__________________
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 07/08/2009, 08:23
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 15 años, 5 meses
Puntos: 0
gracias probare con eso no yo creo q resultara bueno ahi te cuento muchas gracias :D

no me resulta me esta tirando todos los datos igual mira este es mi php que lo esta imprimiendo en exel pero igual me tira los datos repetidos
Código PHP:
<?php
//Exportar datos de php a Excel
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=Reportes.xls");
?>
<html lang="es">
<title>::. Exportacion de Datos .::</title>
</head>
<body>
<?php

$con 
mysql_connect("localhost","root","");
mysql_select_db("probar"$con);
 
$sql "SELECT DISTINCT * FROM cliente ";
$result=mysql_query($sql,$con);
 
?>



<center><h1>FORMULARIO DE TRASPASO</h1></center>
<table border="0" >
<tr>
<pre><td>Traspaso</td>       <td></td>                       <td>Movimiento</td></pre>

</tr>
<?php
while($row mysql_fetch_array($result)) {
printf("<tr>        
<pre><td>&nbsp;%s</td>       <td></td>                         <td>&nbsp;%s</td></pre>
</tr><p><p>"
$row["num_traspaso"],$row["movimiento"]);
}
mysql_free_result($result);
mysql_close($con);
?>
<?php

$con 
mysql_connect("localhost","root","");
mysql_select_db("probar"$con);
 
$sql "SELECT  DISTINCT* FROM cliente ";
$result=mysql_query($sql,$con);
 
?>
<table border="0" >
<tr>
<pre><td>Establecimiento</td>       <td></td>                       <td>Fecha</td></pre>

</tr>
<?php
while($row mysql_fetch_array($result)) {
printf("<tr>        
<pre><td>&nbsp;%s</td>       <td></td>                         <td>&nbsp;%s</td></pre>
</tr><p><p>"
$row["establecimiento"],$row["fecha"]);
}
mysql_free_result($result);
mysql_close($con);
?>
<?php

$con 
mysql_connect("localhost","root","");
mysql_select_db("probar"$con);
 
$sql "SELECT  DISTINCT * FROM cliente ";
$result=mysql_query($sql,$con);
 
?>
<table border="1" >
<tr>
<td>Establecimiento</td>
<td>Fecha</td>
<td>Desde</td>
<td>Edificio</td>
<td>Piso</td>
<td>A</td>
<td>Edificio</td>
<td>Piso</td>
<td>Numero inventario</td>
<td>Cantidad</td>
<td>Especie</td>
<td>Entrega</td>
<td>Recibe</td>
</tr>

<?php
while($row mysql_fetch_array($result)) {
printf("
<tr>
<td>&nbsp;%s</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s&nbsp;</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s&nbsp;</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s</td>
<td>&nbsp;%s</td>


</tr>"
$row["establecimiento"],$row["fecha"],$row["desde"],$row["edificio"],$row["piso"],$row["a_servicio"],$row["a_edificio"],$row["a_piso"],$row["num_inventario"],$row["cantidad"],$row["especie"]);
}
mysql_free_result($result);
mysql_close($con);  //Cierras la Conexión
?>
<?php

$con 
mysql_connect("localhost","root","");
mysql_select_db("probar"$con);
 
$sql "SELECT  DISTINCT * FROM cliente ";
$result=mysql_query($sql,$con);
 
?>
</table>

<table>
<tr>
<pre><td>FIRMA ENTREGA</td>  <td></td>                                      <td>FIRMA RECIBE</td> </pre>                 
</tr>
<?php
while($row mysql_fetch_array($result)) {
printf("
<tr>
<pre><td>&nbsp;%s</td>         <td></td>                                                              <td>&nbsp;%s</td></pre>


</tr>"
$row["entrega"],$row["recibe"]);
}
mysql_free_result($result);
mysql_close($con);  //Cierras la Conexión
?>


</table>
</body>
</html>

Última edición por GatorV; 12/08/2009 a las 08:50
  #4 (permalink)  
Antiguo 07/08/2009, 09:00
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, 5 meses
Puntos: 1517
Respuesta: mostrar un dato del rows si estos son iguales

Lo que sucede es que distinct busca todas las posible diferencias que hay en todos los campos. Si hay alguna diferencia en cualquier campo lo va a publicar. Cual es el proposito de que no publiques el mismo dato para ver si te pueden indicar el mejor metodo que puedas usar en lo que tu quieres
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 07/08/2009, 10:04
Avatar de GabrielAizcorbe  
Fecha de Ingreso: mayo-2009
Ubicación: En la luna.
Mensajes: 30
Antigüedad: 15 años, 5 meses
Puntos: 3
Respuesta: mostrar un dato del rows si estos son iguales

Shyntal, lo mas facil que podrias hacer es lo siguiente:

Asumo que tu debes ingresar el numero de traspaso que quieres llamar en algun text box, con lo cual lo siguiente que yo haria seria la siguiente consulta:


$sql = "SELECT TRASPASO, NOMBRE, SERIE FROM CLIENTES WHERE TRASPASO = " & [valor de tu textbox];
$result=mysql_query($sql,$con);

Luego en la pagina PHP podras hacer algo asi:

<center><h1>FORMULARIO DE TRASPASO</h1></center>
<table border="0" >
<tr>
<pre>
<td>Traspaso</td>
<td></td>
<td>Movimiento</td>
</pre>
</tr>
<?php

$row = mysql_fetch_array($result)
printf("<tr>
<pre><td>&nbsp;%s</td> <td></td> <td>&nbsp;%s</td></pre>
</tr><p><p>", $row["num_traspaso"],$row["movimiento"]);

while($row = mysql_fetch_array($result)) {
printf("<tr>
<pre><td></td> <td></td> <td>&nbsp;%s</td></pre>
</tr><p><p>", $row["movimiento"]);
}

mysql_free_result($result);
mysql_close($con);
?>

Con eso te aseguras de ponerlo una vez :) espero que te sirva la idea...es algo rapido y bastante elegante aunque no es lo MAS elegante, otro modo seria cambiar la consulta a:

$sql = "SELECT NOMBRE, SERIE FROM CLIENTES WHERE TRASPASO = " & [valor de tu textbox];
$result=mysql_query($sql,$con);

y en la pagina hacer algo como:

<center><h1>FORMULARIO DE TRASPASO</h1></center>
<table border="0" >
<tr>
<pre>
<td>Traspaso</td>
<td></td>
<td>Movimiento</td>
</pre>
</tr>
<?php

printf("<tr>
<pre><td>&nbsp;%s</td> <td></td> <td></td></pre>
</tr><p><p>", [valor de tu textbox]);

while($row = mysql_fetch_array($result)) {
printf("<tr>
<pre><td></td> <td></td> <td>&nbsp;%s</td></pre>
</tr><p><p>", $row["movimiento"]);
}

mysql_free_result($result);
mysql_close($con);
?>

Esta ultima es un poco mas optima porque no hago un fetch antes del while que "para mi" queda feo pero ambas son practicas, ya me diras si te sirve.

Saludos

Última edición por GabrielAizcorbe; 07/08/2009 a las 10:07 Razón: Remarque en rojo lo importante y corregi un error en el codigo que habia puesto.
  #6 (permalink)  
Antiguo 07/08/2009, 11:18
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 15 años, 5 meses
Puntos: 0
muchas gracias :D fue de gran ayuda la idea ahora me resulta muchas gracias:D
saludos

me resulto pero con un problema el cual me imprime todo lo de la bd :(
nose cm hacer para q no imprima los duplicados teniendo muchos datos juntos
abimaelrc el proposito es que tento una planilla que tengo que seguir porque hay datos que tengo q mostrar una vez no repetidos por ejemplo el numero de traspaso aunque todas las species tengan el mismo numero lo quiero mostrar una sola vez para todos
me entiende?

Última edición por GatorV; 12/08/2009 a las 08:51
  #7 (permalink)  
Antiguo 12/08/2009, 06:39
Avatar de GabrielAizcorbe  
Fecha de Ingreso: mayo-2009
Ubicación: En la luna.
Mensajes: 30
Antigüedad: 15 años, 5 meses
Puntos: 3
Respuesta: mostrar un dato del rows si estos son iguales

Hola Shyntal, no entiendo completamente pero voy a asumir lo siguiente, que:

ésta fue la query que te funciono:
$sql = "SELECT NOMBRE, SERIE FROM CLIENTES WHERE TRASPASO = " & [valor de tu textbox];

que esa query, para un numero de traspaso, ej.: el 12, te trae registros que pueden estar duplicados

y que los duplicados no son un producto cartesiano de algun filtro extra que tu estas agregando, sino que estan registrados en la base de datos.

Con estas suposiciones que tu diras despues si son o no correctas, te sugiero que uses la siguiente consulta a ver si te resulta:

$sql = "SELECT NOMBRE, SERIE FROM CLIENTES WHERE TRASPASO = " & [valor de tu textbox] & "GROUP BY NOMBRE, SERIE"

De ese modo todos los registros repetidos o duplicados se agruparan en una linea sola.

Extra!!!

Si por alguna casualidad luego quieres saber cuantos repetidos hubo por registro puedes agregar lo siguiente en la consulta

$sql = "SELECT Count(*) AS Repetidos, NOMBRE, SERIE FROM CLIENTES WHERE TRASPASO = " & [valor de tu textbox] & "GROUP BY NOMBRE, SERIE"

esa consulta te devolverá algo así

Repetidos | Nombre | Serie
-----------------------------------------------
1 Fulano 1111
4 Mengano 3367
2 Perengano 2245
1 Sultano 3433

Como puedes ver, en la columna Repetidos lo que te dice es cuantos Registros cumplían con la condición y cuantas veces aparecieron.

Espero que esto te sirva.
Saludos
  #8 (permalink)  
Antiguo 12/08/2009, 08:05
 
Fecha de Ingreso: febrero-2009
Mensajes: 21
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: mostrar un dato del rows si estos son iguales

Código PHP:
select traspasonombreserie from traspasos having count(traspaso) > 
  #9 (permalink)  
Antiguo 12/08/2009, 12:33
Avatar de GabrielAizcorbe  
Fecha de Ingreso: mayo-2009
Ubicación: En la luna.
Mensajes: 30
Antigüedad: 15 años, 5 meses
Puntos: 3
Exclamación Respuesta: mostrar un dato del rows si estos son iguales

Cita:
Iniciado por leider-garcia Ver Mensaje
Código PHP:
select traspasonombreserie from traspasos having count(traspaso) > 
Leider,

Código Problemas de la consulta que propones:
Ver original
  1. Usar el HAVING sin un GROUP BY va a dar error.
  2. Estas olvidando filtrar por el ID de Traspaso
  3. Sin tomar en cuenta que la tabla es CLIENTES no TRASPASO, pero es menor

Luego, tu consulta solo devolvería aquellos registros cuya cuenta sea mayor que 1, o sea que estén como mínimo duplicados; dicho de otro modo que haya MAS DE UNO del mismo tipo de registro, dejando fuera todos aquellos registros que no se repiten jamás, lo cual NO es lo que busca Shyntal.

hay que leer lo que pide el usuario, sino lo confundimos más.

Saludos
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 22:29.