Foros del Web » Programando para Internet » PHP »

Ordenar por puntos

Estas en el tema de Ordenar por puntos en el foro de PHP en Foros del Web. Bien tengo tres campos ok? Dinero 1,Dinero 2, Dinero 3 en la BD y desde PHP tengo una funcion que ace la media de estos ...
  #1 (permalink)  
Antiguo 14/02/2005, 11:53
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
Ordenar por puntos

Bien tengo tres campos ok?

Dinero 1,Dinero 2, Dinero 3 en la BD y desde PHP tengo una funcion que ace la media de estos 3 campos,pero claro no puedo hacer digamos un Ranking desde la media ya ke no esta en la BD no puedo poner ORDER BY entendeis? asi que como puedo hacerlo?

y si no como puedo hacer que al meter en el FORM.php en la BD se meta en un campo MEDIA con la media de los otros 3 campos pero automaticamente?
  #2 (permalink)  
Antiguo 14/02/2005, 15:12
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 13 años, 7 meses
Puntos: 0
Hola.

Deberías crear una nueva variable ($media, por ejemplo) que fuese el resultado de una operación aritmética de Dinero 1,Dinero 2 y Dinero 3. Todo esto antes de abrir la tabla

Crear el campo en la tabla de la BD e introducir $media

Saludos
  #3 (permalink)  
Antiguo 14/02/2005, 15:44
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
ya pero como hago para que el form lo meta automaticamente ? :S
la operacion la tengo ya y todo solo que no se como hacer el form
  #4 (permalink)  
Antiguo 14/02/2005, 16:31
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
y porque no lo haces todo directamente?

select (dinero1+dinero2+dinero3)/3 as media from tabla order by media asc;

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #5 (permalink)  
Antiguo 14/02/2005, 17:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
mmm ese codigo que haria? :S que tendria que poner despues donde quiero que aparezca la media en el while?
  #6 (permalink)  
Antiguo 15/02/2005, 05:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bajo "media" tienes como alias el resultado de tu operación matemática .. lo puedes acceder (su resultado) con tu típico $row['media']

Un saludo,
  #7 (permalink)  
Antiguo 15/02/2005, 06:58
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
osea que en la BD no tengo que crear ningun campo? o si? :S
  #8 (permalink)  
Antiguo 15/02/2005, 07:02
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
nop!..
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 15/02/2005, 08:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por Chete
osea que en la BD no tengo que crear ningun campo? o si? :S
No, .. si es un cálculo como ese . .ese cálculo lo haces en "tiempo real" cuando solicitas esa consulta SQL a tu BD. Por eso el "as" (alias de SQL de Msyql) crea una "columna" nueva (campo) "dinámicamente" en tu "resultado" de la consulta con ese valor para que operes con el para mostrarlo o hacer agrupaciones, ordenar .. etc.

Un saludo,
  #10 (permalink)  
Antiguo 15/02/2005, 08:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
aaaaaaaaaaaa pues muchas gracias voy a probarlo :D
  #11 (permalink)  
Antiguo 15/02/2005, 13:41
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
Código PHP:
<? 
include('config4.php');
echo 
'<table width="446" border="0" cellspacing="1" cellpadding="0" bgcolor="#000000">
  <tr bgcolor="#CCCCCC" align="center"> 
    <td width="31"><b>Clan</b></td>
    <td width="31"><b>Web</b></td>
    <td width="41"><b>Azone</b></td>
    <td width="42"><b>Aligas</b></td>
    <td width="37"><b>Aweb</b></td>
    <td width="85"><b>Amiembros</b></td>
    <td width="41"><b>Pweb</b></td>
    <td width="40"><b>Rzone</b></td>
    <td width="79"><b>Media</b></td>
  </tr>'
;
$query mysql_query("select (Azone+Aligas+Aweb+Amiembros+Pweb+Rzone)/6 as media from topclan order by media asc;");
while(
$clan=mysql_fetch_array($query)) 

$Total = ($clan["Rzone"] + $clan["Pweb"] + $clan["Amiembros"] + $clan["Aweb"] + $clan["Aligas"] + $clan["Azone"] );
$Media $clan["media"];

$Media=round($Media,2);

//Aqui abajo se reemplazan los . por las , para que quede mejor :D

$Rzone str_replace(".",",",$clan["Rzone"]);
$Media2 str_replace(".",",",$Media);
$Pweb str_replace(".",",",$clan["Pweb"]);
$Amiembros str_replace(".",",",$clan["Amiembros"]);
$Aweb str_replace(".",",",$clan["Aweb"]);
$Aligas str_replace(".",",",$clan["Aligas"]);
$Azone str_replace(".",",",$clan["Azone"]);
$web '<a href="http://' $clan["web"] . '" target="_blank">Web</a>';
$clan $clan["clan"];

//Se Muestra el contenido del TOP :D

echo '<tr bgcolor="#FFFFFF" align="center"> 
    <td width="31"><font color="#993300"><b>' 
$clan '</b></font></td>
    <td width="31"><font color="#993300"><b>' 
$web '</b></font></td>
    <td width="41"><font color="#993300"><b>' 
$Azone '</b></font></td>
    <td width="42"><font color="#993300"><b>' 
$Aligas '</b></font></td>
    <td width="37"><font color="#993300"><b>' 
$Aweb '</b></font></td>
    <td width="85"><font color="#993300"><b>' 
$Amiembros '</b></font></td>
    <td width="41"><font color="#993300"><b>' 
$Pweb '</b></font></td>
    <td width="40"><font color="#993300"><b>' 
$Rzone '</b></font></td>
    <td width="79"><font color="#FF3322"><b><u>' 
$Media2 '</u></b></font></td>
  </tr>'
;



echo 
'</table>';
?>
Que fallaria aqui? es que lo pongo y si me hace la media pero no me muestra lo demas :S

si pongo $clan["Azone"] no sale nada por que?
  #12 (permalink)  
Antiguo 15/02/2005, 15:15
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
me an dicho ke con SELECT AVG(campo, campo1, campo2, campo3) FROM tabla pero no se como :S no entiendo na alguien me dice como puedo solucionar esto?
  #13 (permalink)  
Antiguo 15/02/2005, 16:08
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
La consulta:

mysql_query("select (Azone+Aligas+Aweb+Amiembros+Pweb+Rzone)/6 as media from topclan order by media asc;");

Solo devuelve 1 campo llamado media.

AVG calcula la media de muchos registros pero sólo de 1 campo, no de 3 campos.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #14 (permalink)  
Antiguo 15/02/2005, 16:10
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
pero como puedo seeccionar todo y a la vez hacer el campo media?
  #15 (permalink)  
Antiguo 15/02/2005, 16:18
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
lo quieres todo bien masticado eh?

mysql_query("select (Azone+Aligas+Aweb+Amiembros+Pweb+Rzone)/6 as media,Azone,Aligas,Aweb,Amiembros,Pweb,Rzone from topclan order by media asc;");

Esto devueve: media,Azone,Aligas... ordenados por la media de los 6 campos...

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #16 (permalink)  
Antiguo 15/02/2005, 16:26
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
ahhh gracias ;)
  #17 (permalink)  
Antiguo 15/02/2005, 17:06
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
Ahora tengo otra duda y es como hacer que el 1º ponga en la tabla 1º,2º,3º etc :S
  #18 (permalink)  
Antiguo 16/02/2005, 07:19
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
nadie sabe?
  #19 (permalink)  
Antiguo 16/02/2005, 08:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por Chete
Ahora tengo otra duda y es como hacer que el 1º ponga en la tabla 1º,2º,3º etc :S
Yo no entendí que pretendes hacer .. por favor explicate mejor .. pon ejemplos!. Sino, es normal que "nadie sepa".

Un saludo,
  #20 (permalink)  
Antiguo 16/02/2005, 13:00
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
es un ranking que se hace con la media osea quien tiene la puntuacion mas alta es 1º el otro 2º,3,4,5,6,7,8..etc asi me entiendes?
  #21 (permalink)  
Antiguo 16/02/2005, 13:49
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
Eso debes hacerlo con php. Antes del while inicializas un contador a 1, sacas el contador, muestras el campo y luego le sumas 1 al contador y listo.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #22 (permalink)  
Antiguo 16/02/2005, 13:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, .. si se supone que el resultado que obtienes al ejecutar:

while($clan=mysql_fetch_array($query))

y quieres ver un 1° .. 2° ahí junto al dato que indicas . .pues usa un contador algo tipo:

$ranking++;
(al final del while . antes de cerrarlo } .. )

y donde gustes .. pones tu: (o similar)

<td width="31"><font color="#993300"><b>' . $ranking . '</b></font></td>

Antes del while() sería ideal iniciar $ranking=0;

Un saludo,
  #23 (permalink)  
Antiguo 16/02/2005, 15:12
 
Fecha de Ingreso: febrero-2005
Mensajes: 143
Antigüedad: 12 años, 10 meses
Puntos: 0
perfecto GRACIAS :D ahora la ultima duda (la pongo aki para evitar flodear el foro)

Bien se crear un form para modificar campos etc,pero como puedo hacer que modifique lo que yo quiera? es decir si en un text form pongo "Clan Nah" se modifiquen solo los campos que el clan sea NaH entendeis?

O mas facil por la ID entendeis?
  #24 (permalink)  
Antiguo 16/02/2005, 17:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Chete .. esa pregunta ya tiene que ver poco con el tema de ese mismo .. inicia un nuevo tema y por favor no tengas "miedo" en escribir màs para explicar tu inquetud ..

Un saludo,
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 13:14.