Foros del Web » Programando para Internet » PHP »

Como hacer para que no duplique el valor

Estas en el tema de Como hacer para que no duplique el valor en el foro de PHP en Foros del Web. Hola a todos/as Tengo el siguiente lio os pongo el codigo: Código PHP: // Función para obtener los nombres de campos que empiezan por "u" - esta función va antes que la de abajo en ejecución function  nombres_u ( $id_operario , $fecha ){                $result  ...
  #1 (permalink)  
Antiguo 18/01/2008, 09:24
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Mensaje Como hacer para que no duplique el valor

Hola a todos/as

Tengo el siguiente lio os pongo el codigo:

Código PHP:
// Función para obtener los nombres de campos que empiezan por "u" - esta función va antes que la de abajo en ejecución

function nombres_u($id_operario,$fecha){
    
    
    
$result mysql_query("SELECT * FROM campos_prefactura WHERE (nombre_campo LIKE 'u%') ORDER BY id_campo_prefactura ASC");

// Sacamos el numero total de filas de la consulta

$num_rows mysql_num_rows($result);

echo 
"$num_rows filas\n<br><br>";

$consulta_nombres mysql_query("SELECT * FROM campos_prefactura WHERE (nombre_campo LIKE 'u%') ORDER BY id_campo_prefactura ASC"); 

 
//Descomponemos el array que nos devuelve la consulta en muchas variables y las imprimimos

for($i=$i<=$num_rows $i++)  
   { 

$escribe_nombres mysql_fetch_array($consulta_nombres);

$registro_nombre[$i]['id'] = $escribe_nombres['id_nombre_campo']; 
$registro_nombre[$i]['nombre'] = $escribe_nombres['nombre_campo'];

 
$cuenta_campo=$registro_nombre[$i]['nombre'];

$suma_campo=mysql_query ("SELECT SUM($cuenta_campo) FROM prefactura WHERE id_operario='$id_operario' AND fecha='$fecha'")or die (mysql_error());

while (
$escribe_suma mysql_fetch_array($suma_campo))
{

foreach (
$escribe_suma as $nombre=> $valor){ 

        
$union=$nombre.'|'.$valor;

          list(
$id,$nombre) = explode("|"$union);

                    echo 
"id:".$id."| nombre:".$nombre."<br>";

    }  

    }

  }

Y esto me imprime lo siguiente :

37 filas

id:0| nombre:0
id:SUM(us_g_bu)| nombre:0
id:0| nombre:0
id:SUM(uc_g_bu)| nombre:0
id:0| nombre:0
id:SUM(us_g_gn)| nombre:0
id:0| nombre:5
id:SUM(uc_g_gn)| nombre:5

id:0| nombre:0
id:SUM(us_reg)| nombre:0
id:0| nombre:0
id:SUM(uc_reg)| nombre:0

Como puedo hacer para que no me duplique los valores, como lo que esta en negrita me refiero, donde esta el fallo del codigo o por que me hace esto, haber si alguien me puede hechar una manita.

Un saludo a todos/as y mil gracias
  #2 (permalink)  
Antiguo 18/01/2008, 09:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Como hacer para que no duplique el valor

En lugar de descargar el valor con:
Código PHP:
mysql_fetch_array($consulta_nombres); 
Utiliza:
Código PHP:
mysql_fetch_row($consulta_nombres); 
Saludos.
  #3 (permalink)  
Antiguo 18/01/2008, 09:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como hacer para que no duplique el valor

Cita:
Iniciado por GatorV Ver Mensaje
En lugar de descargar el valor con:
Código PHP:
mysql_fetch_array($consulta_nombres); 
Utiliza:
Código PHP:
mysql_fetch_row($consulta_nombres); 
Saludos.
Hola GatorV

Cambiando la opción como tu me indicas me da el siguiente error.

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') FROM prefactura WHERE id_operario='1' AND fecha='18/01/2008'' at line 1"

Gracias.

Haber si tu o alguin, puede saber el por que es esto de los duplicados, por que llevo desde el martes con los dichosos duplicados, jejeje menudo lio de función la verdad.


Saludos
  #4 (permalink)  
Antiguo 18/01/2008, 10:30
Avatar de migueljga  
Fecha de Ingreso: enero-2008
Mensajes: 35
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Como hacer para que no duplique el valor

El error es de tu consulta
intenta hacer lo siguiente
Código PHP:
"...SUM(".$cuenta_campo.") FROM ..." 
tienes un parentesis antes del FROM.
Edita y nos cuentas.
n_n

Última edición por migueljga; 18/01/2008 a las 10:34 Razón: mal interpreté el problema
  #5 (permalink)  
Antiguo 18/01/2008, 10:58
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como hacer para que no duplique el valor

Cita:
Iniciado por migueljga Ver Mensaje
El error es de tu consulta
intenta hacer lo siguiente
Código PHP:
"...SUM(".$cuenta_campo.") FROM ..." 
tienes un parentesis antes del FROM.
Edita y nos cuentas.
n_n
Hola migueljga

He probado con eso y me ha dado un valor erroneo pues me aparece todo a cero, ahora he resulto que no me duplique los resultados os pongo el codigo y os explico mi problema seguro que es una tonteria:

Código PHP:

function nombres_u($id_operario,$fecha){
    
    
    
$result mysql_query("SELECT * FROM campos_prefactura WHERE (nombre_campo LIKE 'u%') ORDER BY id_campo_prefactura ASC");

// Sacamos el numero total de filas de la consulta

$num_rows mysql_num_rows($result);

echo 
"$num_rows filas\n<br><br>";

$consulta_nombres mysql_query("SELECT * FROM campos_prefactura WHERE (nombre_campo LIKE 'u%') ORDER BY id_campo_prefactura ASC"); 

 
//Descomponemos el array que nos devuelve la consulta en muchas variables y las imprimimos

for($i=$i<=$num_rows $i++)  

   { 

$escribe_nombres mysql_fetch_array($consulta_nombres);

$registro_nombre[$i]['id'] = $escribe_nombres['id_nombre_campo']; 
$registro_nombre[$i]['nombre'] = $escribe_nombres['nombre_campo'];

 
$cuenta_campo=$registro_nombre[$i]['nombre'];

$suma_campo=mysql_query ("SELECT SUM($cuenta_campo) FROM prefactura 

WHERE id_operario='$id_operario' AND fecha='$fecha'"
)or die (mysql_error());
while (
$escribe_suma mysql_fetch_row($suma_campo))

{

foreach (
$escribe_suma as $nombre=> $valor){ 

        
$union=$nombre.'|'.$valor;
          list(
$id,$total) = explode("|"$union);


echo 
"Total:".$total."<br>";

        
//print_r ($union);
    
}  


}


}

Ahora me devuelve lo siguiente:


Total:0
Total:0
Total:0
Total:5
Total:0
Total:0
Total:0
Total:0
Total:0
Total:0

Ya no duplica pero como veis esto me lo devuelve la variable $total que realmentes es un array mi preguntas es como acceder a cada uno de los valores de este lo he intentado poniendo

Código PHP:
echo "Total:".$total[1]."<br>"
Pero ya no devuelve los valores devuelve esto:

Total:
Total:
Total:
Total:
Total:

Como puedo hacer para acceder a cada uno de los valores del array.

Muchas gracias por las respuestas.

Haber si alguien me puede hechar una mano , por que se que es una tonteria seguro.

Saludos
  #6 (permalink)  
Antiguo 18/01/2008, 13:00
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Descomponer array en variables

Hola a todos/as

Tengo un array que esta dentro de
Código PHP:
 $escribe_suma 
, quisiera saber como puedo hacer para meterlo en diferentes variables o bien referenciarlos con el tipo $escribe_suma[0], etc...

Os pongo el codigo de donde sale esto por que es un tanto lio y lo mismo se puede implementar solo con modificar lo que tengo.

Código PHP:
function nombres_u($id_operario,$fecha){
    
    
    
$result mysql_query("SELECT * FROM campos_prefactura WHERE (nombre_campo LIKE 'u%') ORDER BY id_campo_prefactura ASC");

// Sacamos el numero total de filas de la consulta

$num_rows mysql_num_rows($result);

echo 
"$num_rows filas\n<br><br>";

$consulta_nombres mysql_query("SELECT * FROM campos_prefactura WHERE (nombre_campo LIKE 'u%') ORDER BY id_campo_prefactura ASC"); 

 
//Descomponemos el array que nos devuelve la consulta en muchas variables y las imprimimos

for($i=$i<=$num_rows $i++)  

   { 
$escribe_nombres mysql_fetch_array($consulta_nombres);

$registro_nombre[$i]['id'] = $escribe_nombres['id_nombre_campo']; 
$registro_nombre[$i]['nombre'] = $escribe_nombres['nombre_campo'];

$cuenta_campo=$registro_nombre[$i]['nombre'];

$suma_campo=mysql_query ("SELECT SUM($cuenta_campo) FROM prefactura WHERE id_operario='$id_operario' AND fecha='$fecha'")or die (mysql_error());

while (
$escribe_suma mysql_fetch_row($suma_campo))
{
echo 
$escribe_suma;

foreach (
$escribe_suma as $nombre=> $valor){ 

        
$union=$nombre.'|'.$valor;
          list(
$id,$total) = explode("|"$union);



echo 
"Total:".$total."<br>";


    }  


}


}

Esto me devuelve esto

Total:0
Total:0
Total:0
Total:5
Total:0

por eso quiero acceder a cada parte del array creo, que he construido mal el array puesto que si pongo
Código PHP:
echo $escribe_suma [o]; 
, me devuelve lo mismo y si le pongo un [1], no me devuelve nada, asi que creo que es por la construcción del array que no lo he hecho muy bien que se diga.

Haber si a alguien se le ocurre algo, por uqe nado atascadito, la verdad.

Gracias a todos por vuestro tiempo.

Un saludo
  #7 (permalink)  
Antiguo 18/01/2008, 13:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Descomponer array en variables

Temas unidos.

No dupliques temas y continua con el hilo anterior.
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 14:47.