Adler, gracias por el código.
Ahora lo tengo así:
index.php:
Código html:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="./css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript"> var ns4 = (document.layers)? true:false
var ie4 = (document.all)? true:false
var ns6 = (document.getElementById)? true:false
function captura_objeto(idnombre) {
if (ns6)
{
return document.getElementById(idnombre);
}
else if (ie4)
{
return document.all[idnombre];
}
else if (ns4)
{
return document.layers[idnombre];
}
else
{
return null;
}
}
function creaAjax(){
var ajaxs = ["Msxml2.XMLHTTP","Msxml2.XMLHTTP.4.0","Msxml2.XMLH TTP.5.0","Msxml2.XMLHTTP.3.0","Microsoft.XMLHTTP"];
var ajax = false;
for(var i=0 ; !ajax && i<ajaxs.length ; i++){
try{
ajax = new ActiveXObject(ajaxs[i]); // Internet Explorer
}
catch(e) {
ajax = false;
}
}
if(!ajax && typeof XMLHttpRequest!='undefined') {
ajax = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
}
return ajax;
}
function MuestraDatos() {
var url = "2.php"
var ajax = creaAjax();
var ditancia = captura_objeto("num1").options[captura_objeto("num1").selectedIndex].value);
var ritmo = captura_objeto("num2").value;
var tiempo = captura_objeto("num3").value;
var objetosel1 = captura_objeto("num2");
var objetosel2 = captura_objeto("num3");
ajax.open('POST',url,true);
ajax.onreadystatechange = function() {
if (ajax==null){
alert ("Tu navegador web no soporta AJAX!");
return;
}
if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3) {
objetosel1.value= "";
}
else if (ajax.readyState==4){
if(ajax.status==200){
var valores = unescape(ajax.responseText);
objetosel1.value = valores.split(",")[0]; // Ritmo
objetosel2.value = valores.split(",")[1]; // Tiempo
}
else if (ajax.status==404)
{
objetosel1.value = "La dirección no existe";
}
else
{
objetosel1.value = "Se ha producido un error";
}
}
}
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajax.setRequestHeader('Content-Length', ritmo.length);
ajax.send("distancia="+distancia+"&ritmo=+ritmo+"&tiempo="+tiempo);
return
}
<h1>Calculadora Marató
</h1>
<form method="get" action="2.php">
DATOS BÁSICOS
Distancia total:
<select id="num1" name="num1">
Ritmo: (mm:ss)
<input type="text" id= "num2" name="num2"/>
Tiempo total: (hh:mm:ss)
<input type="text" id="num3" name="num3"/>
<input type="button" name="submit" value="Calcular" onClick="MuestraDatos();" />
2.php
Código php:
Ver original<?php
# Obrim etiquetes HTML
echo '<html>';
echo '<head>';
echo '<title>Calculadora Marató - Resultado</title>'; // Títol de la pàgina
echo '<link href="./css/style.css" rel="stylesheet" type="text/css" />'; // Importem la fulla d'estil CSS
echo '</head>';
echo '<body>';
# Creem les variables i els hi donem un valor
$num1 = $_GET["num1"]; // num1 - Distancia total
$num2 = $_GET["num2"]; // num2 - Ritmo
$num3 = $_GET["num3"]; // num3 - Tiempo total
//COMPROVACIONS
if($num2=="" and $num3=="") //Si els dos camps estàn buits donarà error
{
echo "<script type=\"text/javascript\">alert(\"Ha de rellenar un campo\");</script>";
include("index.php");
//echo 'Ha de rellenar un campo';
}
else if ($num2!="" and $num3!="") //Si els dos camps estàn plens donarà error
{
echo 'No puede rellenar los dos campos a la vez';
}
else if ($num2!="" and $num3=="")
{
$separar[1] = explode(':',$num2); //con la función explode(); separo los minutos de los segundos mediante el carácter ':'
$minutos_mm_en_segundos = ($separar[1][0]*60); //multiplico los minutos por 60 para convertirlos en segundos
$segundos_ss = ($separar[1][1]); //obtinc les segons
$total_segundos = $minutos_mm_en_segundos + $segundos_ss; //sumo tots els segons per obtenir els segons totals
$km = $num1/1000; //paso els metres a Km.
$marca_segundos = $km * $total_segundos; //total de la marca en segons
$marca_minutos = floor($marca_segundos/60); //la funció floor(); arrodoneix SEMPRE cap a l'enter més baix, així que obtinc la marca en minuts. Encare em falten els segons, que sobren de la divisió al tractar-se d'una divisió amb resultat decimal. Els decimals no m'interessen, faré el modul de la divisió per obtenir els segons sobrants.
$marca_horas = floor($marca_minutos/60); //passo els minuts a hores
$minutos_restantes = $marca_minutos%60;//faig el módul per obtenir els minuts restants de les hores
//CORRECCIÓ D'ERRORS- Si el temps te els segons a 0,5 o 8 es mostra 15:0, 15:5, 15:8, aquest IF fa que, en canvi, es mostri 15:00, 15:05, 15:08
if($minutos_restantes==0 || $minutos_restantes==1 || $minutos_restantes==2 || $minutos_restantes==3 || $minutos_restantes==4 || $minutos_restantes==5 || $minutos_restantes==6 || $minutos_restantes==7 || $minutos_restantes==8 || $minutos_restantes==9)
{
$caracter_de_correcion_minutos='0';
}
else{$caracter_de_correcion_minutos='';}
$segundos_restantes = $marca_segundos%60; //faig el módul per obtenir els segons sobrants dels minuts.
if($segundos_restantes==0 || $segundos_restantes==1 || $segundos_restantes==2 || $segundos_restantes==3 || $segundos_restantes==4 || $segundos_restantes==5 || $segundos_restantes==6 || $segundos_restantes==7 || $segundos_restantes==8 || $segundos_restantes==9)
{
$caracter_de_correcion_segundos='0';
}
else{
$caracter_de_correcion_segundos='';
}
echo '<br />TOTAL MARCA: ', $marca_horas,':', $caracter_de_correcion_minutos, $minutos_restantes,':',$caracter_de_correcion_segundos,$segundos_restantes;
}
else
{
$total_minutos[1] = ($separar[1][0]*60)+$separar[1][1]; //paso les hores a minuts i faig la suma total de minuts
$segundos[1] = $separar[1][2]; //guardo els segons en una variable
$total_segundos = ($total_minutos[1] * 60)+$segundos[1]; //paso els minuts totals a segons i li sumo els segons introduits per l'usuari
$velocitat_m_s = $total_segundos/$num1; //quants segons tardo en fer un metre
$temps_kilometre = $velocitat_m_s*1000; //quants segons tardo en fer un KM
$ritmo_minutos = floor($temps_kilometre/60); //la funció floor(); arrodoneix SEMPRE cap a l'enter més baix, així que obtinc la marca en minuts. Encare em falten els segons, que sobren de la divisió al tractar-se d'una divisió amb resultat decimal. Els decimals no m'interessen, faré el modul de la divisió per obtenir els segons sobrants.
$ritmo_horas = floor($ritmo_minutos/60); //passo els minuts a hores
$minutos_restantes = $ritmo_minutos%60;//faig el módul per obtenir els minuts restants de les hores
//CORRECCIÓ D'ERRORS- Si el temps te els segons a 0,5 o 8 es mostra 15:0, 15:5, 15:8, aquest IF fa que, en canvi, es mostri 15:00, 15:05, 15:08
if($minutos_restantes==0 || $minutos_restantes==1 || $minutos_restantes==2 || $minutos_restantes==3 || $minutos_restantes==4 || $minutos_restantes==5 || $minutos_restantes==6 || $minutos_restantes==7 || $minutos_restantes==8 || $minutos_restantes==9)
{
$caracter_de_correcion_minutos='0';
}
else{$caracter_de_correcion_minutos='';}
$segundos_restantes = $temps_kilometre%60; //faig el módul per obtenir els segons sobrants dels minuts.
if($segundos_restantes==0 || $segundos_restantes==1 || $segundos_restantes==2 || $segundos_restantes==3 || $segundos_restantes==4 || $segundos_restantes==5 || $segundos_restantes==6 || $segundos_restantes==7 || $segundos_restantes==8 || $segundos_restantes==9)
{
$caracter_de_correcion_segundos='0';
}
else{$caracter_de_correcion_segundos='';}
echo '<br />RITMO: ', $ritmo_horas,':', $caracter_de_correcion_minutos, $minutos_restantes,':',$caracter_de_correcion_segundos,$segundos_restantes;
}
echo '</body>'; //Tanquem les etiquetes HTML i el PHP.
echo '</html>';
?>
¿Qué hago mal? Seguí los pasos que me distes lo mejor que supe.
Gracias.