Foros del Web » Programando para Internet » PHP »

Operaciones con una consulta MySql

Estas en el tema de Operaciones con una consulta MySql en el foro de PHP en Foros del Web. Hola, Tengo una duda grande, como puedo cojer todos los datos de una consulta ( hacer por ejemplo un $sql1="SELECT * FROM tpv.examens WHERE `asig` ...
  #1 (permalink)  
Antiguo 24/06/2006, 12:38
 
Fecha de Ingreso: julio-2005
Mensajes: 86
Antigüedad: 19 años, 4 meses
Puntos: 3
Operaciones con una consulta MySql

Hola, Tengo una duda grande, como puedo cojer todos los datos de una consulta ( hacer por ejemplo un $sql1="SELECT * FROM tpv.examens WHERE `asig` = 'na'"; ) y que me sume todo lo que me dé y lo divida por el numero de rows optenidas? el codigo completo es
Código PHP:
<? 
    mysql_connect
("localhost","root",""); 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>Puntos</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<meta http-equiv="Pragma" content="no-cache" /> 
<style type="text/css"> 
<!-- 
a.p:link { 
    color: #0066FF; 
    text-decoration: none; 

a.p:visited { 
    color: #0066FF; 
    text-decoration: none; 

a.p:active { 
    color: #0066FF; 
    text-decoration: none; 

a.p:hover { A
    color: #0066FF; 
    text-decoration: underline; 

a.ord:link { 
    color: #000000; 
    text-decoration: none; 

a.ord:visited { 
    color: #000000; 
    text-decoration: none; 

a.ord:active { 
    color: #000000; 
    text-decoration: none; 

a.ord:hover { 
    color: #000000; 
    text-decoration: underline; 

--> 
</style> 
</head> 
<body bgcolor="#FFFFFF"> 
<script language="JavaScript"> 
function muestra(queCosa) 

    alert(queCosa); 

</script> 
<div align="center"><strong><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Paginación 
de Resultados de una consulta SQL (sobre MySQL)<br><br><p><a href="http://www.pclandia.com">www.pclandia.com</a></p> </font></strong> </div> 
<hr noshade style="color:CC6666;height:1px"> 
<br> 
<? 
//inicializo el criterio y recibo cualquier cadena que se desee buscar 
$criterio ""
$txt_criterio ""
if (!empty(
$_GET['criterio'])){ 
   
$txt_criterio $_GET["criterio"]; 
   
$criterio " where ex_id like '" $txt_criterio "' or asig like '%" $txt_criterio "' or fecha like '" $txt_criterio "'"

if (
$_GET["mens"] == "ok"){ 
   echo 
"Se hizo la acción correctamente";



$sql="SELECT * FROM tpv.examens ".$criterio
$res=mysql_query($sql) or
die(
"Could not connect: " mysql_error());
$numeroRegistros=mysql_num_rows($res); 
if(
$numeroRegistros<=0

    echo 
"<div align='center'>"
    echo 
"<font face='verdana' size='-2'>No s'han trobat resultats.</font>"
    echo 
"</div>"
}else{ 
    
//////////elementos para el orden 
    
if(!isset($orden)) 
    { 
       
$orden="ex_id"
    } 
    
//////////fin elementos de orden 

    //////////calculo de elementos necesarios para paginacion 
    //tamaño de la pagina 
    
$tamPag=5

    
//pagina actual si no esta definida y limites 
    
if(!isset($_GET["pagina"])) 
    { 
       
$pagina=1
       
$inicio=1
       
$final=$tamPag
    }else{ 
       
$pagina $_GET["pagina"]; 
    } 
    
//calculo del limite inferior 
    
$limitInf=($pagina-1)*$tamPag

    
//calculo del numero de paginas 
    
$numPags=ceil($numeroRegistros/$tamPag); 
    if(!isset(
$pagina)) 
    { 
       
$pagina=1
       
$inicio=1
       
$final=$tamPag
    }else{ 
       
$seccionActual=intval(($pagina-1)/$tamPag); 
       
$inicio=($seccionActual*$tamPag)+1

       if(
$pagina<$numPags
       { 
          
$final=$inicio+$tamPag-1
       }else{ 
          
$final=$numPags
       } 

       if (
$final>$numPags){ 
          
$final=$numPags
       } 
    } 

//////////fin de dicho calculo 

//////////creacion de la consulta con limites 
$sql="SELECT * FROM tpv.examens WHERE `asig` = 'na' ".$criterio." ORDER BY ".$orden.",ex_id ASC LIMIT ".$limitInf.",".$tamPag;  
$res=mysql_query($sql); 

//////////fin consulta con limites 
echo "<div align='center'>"
echo 
"<font face='verdana' size='-2'>Trobats ".$numeroRegistros." resultats.<br>"
echo 
"ordenados por <b>".$orden."</b>"
if(isset(
$txt_criterio)){ 
    echo 
"<br>Valor de filtre: <b>".$txt_criterio."</b>"

echo 
"</font></div>"
echo 
"<table align='center' width='80%' border='0' cellspacing='1' cellpadding='0'>"
echo 
"<tr><td colspan='3'><hr noshade></td></tr>"
        echo 
"<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=ex_id&criterio=".$txt_criterio."'>Nº de examen</a></th>";
        echo 
"<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=asig&criterio=".$txt_criterio."'>Asignatura </a></th>";
        echo 
"<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=nota&criterio=".$txt_criterio."'>Nota</a></th>";
        echo 
"<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=fecha&criterio=".$txt_criterio."'>fecha</a></th>";

while(
$registro=mysql_fetch_array($res)) 

?> 
   <!-- tabla de resultados --> 
  <tr bgcolor="#CC6666" onMouseOver="this.style.backgroundColor='#FF9900';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#CC6666'"o"];">
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><center><b><? echo $registro["ex_id"]; ?></b></center></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><center><b> 
<?     
        $link 
mysql_connect("localhost","root",""); 
        
mysql_select_db("tpv",$link);
    
$asig $registro["asig"];
    switch(
$asig) {
    case 
na:
        echo 
"Naturals";
        break;
    case 
so:
        echo 
"Socials";
        break;
    case 
ma:
        echo 
"Matematiques";
        break;
    case 
le:
        echo 
"Llengua castellana";
        break;
            case 
ca:
        echo 
"Llengua catalana";
        break;
            case 
in:
        echo 
"in";
        break;
            case 
te:
        echo 
"tecnologia";
        break;
            case 
op:
        echo 
"Optativa";
        break;
    default:
    echo 
"Defineix ".$registro['asig'];
}  

 
     
?>    </b></center></font></td>
    <td><font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><center><b><? echo $registro["nota"]; ?></b></center></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><center><b><? echo $registro["fecha"]; ?></b></center></font></td>

  </tr> 
   <!-- fin tabla resultados --> 
<? 

}//fin while 
$sql1="SELECT * FROM tpv.examens WHERE `asig` = 'na'";
$res1=mysql_query($sql1); 
while(
$registro=mysql_fetch_array($res1)) 

$nota $registro["nota"];
}
echo 
"</table>";
echo 
$nota;
 
}
//fin if 
//////////a partir de aqui viene la paginacion 
?> 
    <br> 
    <table border="0" cellspacing="0" cellpadding="0" align="center"> 
    <tr><td align="center" valign="top"> 
<? 
    
if($pagina>1
    { 
       echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."&criterio=".$txt_criterio."'>"
       echo 
"<font face='verdana' size='-2'>Anterior.</font>"
       echo 
"</a> "
    } 

    for(
$i=$inicio;$i<=$final;$i++) 
    { 
       if(
$i==$pagina
       { 
          echo 
"<font face='verdana' size='-2'><b>".$i."</b> </font>"
       }else{ 
          echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&criterio=".$txt_criterio."'>"
          echo 
"<font face='verdana' size='-2'>".$i."</font></a> "
       } 
    } 
    if(
$pagina<$numPags
   { 
       echo 
" <a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."&criterio=".$txt_criterio."'>"
       echo 
"<font face='verdana' size='-2'>siguiente</font></a>"
   } 
//////////fin de la paginacion 
?> 
    </td></tr> 
    </table> 
<hr noshade style="color:CC6666;height:1px"> 
<div align="center"><font face="verdana" size="-2"><a class="p" href="examens_save.php">::Agregar examen::</a>  </font></div> 
Cercar:<br>
<form action="ole.php" method="get"> 
Paraules a cercar: 
<input type="text" name="criterio" size="22" maxlength="150"> 
<input type="submit" value="Buscar"> 
</form> <br>
 <br>

</body> 
</html> 
<? 
    mysql_close
(); 
?> 

  </body>
</html>
este es el codigo donde quiero que despues de los resultados ( tabla con while ) me de una variable $nota_final con el resultado de la operación. La operacion es :
Cita:
Si hay 3 resultados con asig = na, que me sume su nota y me la divida entre 3
no sé si me expliqué :) agradeceria su ayuda ya que esto lo hago como medio para aprender php :)
  #2 (permalink)  
Antiguo 24/06/2006, 13:25
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
quizás esto te sirva:
http://www.mysql-hispano.org/page.php?id=31&pag=8


Saludos.
  #3 (permalink)  
Antiguo 24/06/2006, 16:20
 
Fecha de Ingreso: julio-2005
Mensajes: 86
Antigüedad: 19 años, 4 meses
Puntos: 3
uff... no entiendo casi nada de eso :( esque no se, group by y noseque. cómo podria hacerlo esque lo que me falta es ideas y codigo. vamos que estoy de 0 en cuestion de hacer una media de las notas... yo tengo una base de datos con notas y quiero hacer media de todas las notas :S no se como hacerlo. Que alguien me lo explique plz. y no es porque no me lo haya leido, de verdad sino que no me entero. Decidme, hay alguna forma de sacar la media ( hacer operaciones ) de todos los resultados obtenidos
  #4 (permalink)  
Antiguo 24/06/2006, 18:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
La consulta quedaría algo así:
SELECT AVG(nota) as promedio_notas FROM tpv.examens WHERE asig='na'

Y lo que el enlace que te pasé describe, es la forma de usar varias funciones además de AVG (COUNT, por ejemplo)

y con eso, al usar mysql_fetch_row, tendrías en promedio_notas el valor promedio de las notas (siendo "nota" el campo con las notas)


Saludos.
  #5 (permalink)  
Antiguo 25/06/2006, 01:58
 
Fecha de Ingreso: julio-2005
Mensajes: 86
Antigüedad: 19 años, 4 meses
Puntos: 3
Lo probare cuando tenga un Hueco :p graxie Alvlin ;)

Un saludo!
[Editado= 15:21 H]
Graciaaaaaaaaaaaaaaaaaaaaaaaaaaaas, va perfectisimo!!!!!!!!! Gracias y mil gracias :)
[/Editado]

Última edición por hebo; 25/06/2006 a las 07:21
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 21:35.