PHP - Listado mejores clientes

 
Vista:
sin imagen de perfil

Listado mejores clientes

Publicado por mario (17 intervenciones) el 01/02/2017 19:58:43
Hola buenas
Estoy haciendo un ejercicio y el ejercicio es sacar la lista de los mejores clientes y estoy teniendo bastante problemas para sacarlo y a ver si me podéis ayudar,Os voy a poner las imágenes de los datos y del resultado que quiero que me salga y os voy a enseñar mi código para a ver si me podéis ayudar a hacerlo correctamente

Este es el resultado que tiene que salir

Captura

y esta es la información de la base de datos que son dos tablas(operaciones y tablas):

(operaciones)
Captura2

(tablas)
Captura3

(las dos tablas juntas)
Captura4
Tipo "c" es compra y tipo "a" es alquiler y lo que tengo que hacer en el ejercicio es que cuando sea tipo "c" que me vaya sumando el preciocom y cuando sea tipo "a" me va sumando el precioalq(eso con cada usuario) y luego hacer la suma de cada tablas compradas y alquiladas del usuario y el resultado seria como la primera imagen que os he enseñado

ejemplo:el usuario [email protected] ha comprado tres tablas de estos precios:522€,478€ y 522€ y ha alquilado tablas por 12€,9€ y 10€ y la suma de estos da 1563 entonces en la lista de mejores clientes aparecería [email protected]: 1563€ (en la primera imagen no sale el mismo numero porque he añadido una operación mas)

y este es mi código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
include"funciones.php";
$conexion=conexion();
$listado="select * from operaciones
order by email";
$eje=mysqli_query($conexion,$listado);
echo"RELACION ORDENADA POR LOS MEJORES CLIENTES:";
echo"</br>";
 
$numfilas=mysqli_num_rows($eje);
$array=mysqli_fetch_array($eje);
$usuario=$array[2];
$sumatotal=0;
$sumaalquiler=0;
$sumacompra=0;
 
for($i=0;$i<$numfilas;$i++){
 
  if($usuario==$array[2]){
  $listado2="select * from tablas where nombre=$array[1]
             order by nombre";
$eje2=mysqli_query($conexion,$listado2);
    $array2=mysqli_fetch_array($eje2);
    if($array[4]=='c'){
      $sumacompra=$sumacompra+$array2[2];
    }
    else{
      $sumaalquiler=$sumaalquiler+$array2[1];
    }
 
}
else{
  $sumatotal=$sumacompra+$sumaalquiler;
  echo $array[2].":".$sumatotal;
  $sumatotal=0;
  $sumacompra=0;
  $sumaalquiler=0;
 
}
  $array=mysqli_fetch_array($eje);
}
 
?>

Gracias por vuestra atencion :)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 191
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Listado mejores clientes

Publicado por Brayan (76 intervenciones) el 02/02/2017 16:35:31
Ese codigo que te muestra en si? creo q te esta mostrando valores siempre de 0 y no te muestra los clientes o me equivoco?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Listado mejores clientes

Publicado por mario (17 intervenciones) el 03/02/2017 08:08:55
ese codigo me muestra solo valores con 0 o sea el codigo esta mal por eso necesito ayuda para hacer bien ese codigo por que no se como hacerlo para que me salga como en la primera imagen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 191
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Listado mejores clientes

Publicado por Brayan (76 intervenciones) el 03/02/2017 15:01:50
El detalle esta en que hay varios puntos que estan mal por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
for($i=0;$i<$numfilas;$i++){//¿que intentas hacer con este for si nunca usas la variable $i?
 
  if($usuario==$array[2]){ // esta condicion no esta del todo bien, porque el array 2 tiene otros indices $array[2][0], $array[2][1], $array[2][2], 
  $listado2="select * from tablas where nombre=$array[1]
             order by nombre";
$eje2=mysqli_query($conexion,$listado2);
    $array2=mysqli_fetch_array($eje2);
    if($array[4]=='c'){
      $sumacompra=$sumacompra+$array2[2];//que pasa con la variable alquiler en este caso?
    }
    else{
      $sumaalquiler=$sumaalquiler+$array2[1]; //que pasa con al variable compra en este caso?
    }
 
}
else{ // Este else creo esta mal
  $sumatotal=$sumacompra+$sumaalquiler;
  echo $array[2].":".$sumatotal;
  $sumatotal=0;
  $sumacompra=0;
  $sumaalquiler=0;
 
}
  $array=mysqli_fetch_array($eje);
}
 
?>

lo mas sensato seria que te reescribiera un codigo en base a esto, pero no dispongo de tanto tiempo sin embargo si logras ver lo que hace cada condicional y ves lo que esta mal en las lineas comentadas seguro lo podrás resolver.

Lo que puede estar pasando es que la condicion que dice que si usuario es igual al array no se esta cumpliendo y por ende te arroja valores en 0.

Debes buscarle otra logica a las condiciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar