PHP - Novato desesperado

   
Vista:

Novato desesperado

Publicado por Noe (19 intervenciones) el 18/03/2010 16:16:07
Hola foro !!!

En un post anterior (que jamas fue contestado…) pedi ayuda indicandoles que no tengo aun los conocimientos como lo tienen todos ustedes. Por eso acudi por su ayuda tampoco quiero que me hagan mi sistemita, tan solo lo que requiero es una pequeñísima ayuda de este foro .

Lo que necesito es lo siguiente tengo una tabla 15 campos ente los que se encuentran 2 campos
( hora_peticion tipo time, y folio int(5) ) , se requiere agregarle 40 minutos a la hora que se tiene almacenada en el campo hora_peticion de un folio en especifico. Y mostrarlo en pantalla

Ya se que me indicaran que vea esta liga o aquella otra, o que revise la documentación y lo he hecho !!
Pero no he podido resolver esto esperando que se apiaden de este novato que algún día tendrá los suficientes conocimientos.

Tengo este que he probado

select date_add(now(), interval 40 minute) funciona en MYSQL-FRONT si le suma los 40 minutos he intentado ponerle el campo hora_peticion y envía error.

SELECT hora_pet
FROM orden WHERE folio=10
and
DATE_ADD(hora_pet,INTERVAL 40 minute)

no envía error pero no muestra nada

Seré el hombre más agradecido del mundo, si alguien se compadece de mí, y seré el hombre más feliz del mundo si me envían un pequeño ejemplo.

GRACIAS………
Atentamente
Noe Velásquez
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

RE:Novato desesperado

Publicado por apis (47 intervenciones) el 18/03/2010 19:52:37
Hi! no entendi bien, de tu tabla orden quieres agregarle 40 minutos al campo hora del folio 10? porque no lo pones como en tu consulta asi:
SELECT hora_pet,DATE_ADD(hora_pet,INTERVAL 40 minute)
FROM orden WHERE folio=10

o quieres filtrar los datos que esten entre una fecha mas 40 minutos despues? en base a que fecha?
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

RE:Novato desesperado

Publicado por Noe (19 intervenciones) el 18/03/2010 23:03:40
Hola Apis !!!
Gracias por tu tiempo, efectivamente lo que deseo es incrementar 40 minutos a la hora que tiene guardada campo hora_pet en este caso al folio 10

ejecute la sentencia en phpmyadmin y Mysql-Front como lo indicas y no muestra lo deseado, solo desplega el campo hora_pet tal como esta guardado.

alguna otra idea ?

GRACIAS.....
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

RE:Novato desesperado

Publicado por Diego Romero (1450 intervenciones) el 19/03/2010 00:18:59
Al poner DATE_ADD como condición de la cláusula WHERE estás restringiendo la cantidad de registros a mostrar pero no estás comparando el valor devuelto por la función DATE_ADD con nada. Creo que no es eso lo que quieres. Creo que lo que quieres es encontrar un registro cuyo campo folio sea = 10 y si lo encuentra, a su campo hora_pet sumarle 40 minutos y mostrar el resultado de esa suma.

Entonces la sentencia select quedaría así:

SELECT DATE_ADD(`hora_pet`, INTERVAL 10 MINUTE) as hora_pet_adel FROM `orden` WHERE `folio` = 10;

Obtendrás un registro con un único campo llamado hora_pet_adel que contiene el resultado que querías.
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

RE:Novato desesperado

Publicado por Noe (19 intervenciones) el 19/03/2010 01:32:58
Hola Diego !!!

es exactamente lo que necesito, pero............

lo ejecuto como lo indicas
SELECT DATE_ADD(`hora_pet`, INTERVAL 10 MINUTE) as hora_pet_adel FROM `orden` WHERE `folio` = 10; y solo envia hora_pet_adel en blanco.

ayudame por favor....

GRACIAS.
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

RE:Novato desesperado

Publicado por Diego Romero (1450 intervenciones) el 19/03/2010 05:07:15
¿Qué quieres decir con "en blanco"?.

Me parece que es hora de que pongas el código que ejecuta la consulta en cuestión y por favor ahórrate lo que no sea relevante al problema.
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

RE:Novato desesperado

Publicado por Noe (19 intervenciones) el 19/03/2010 18:02:40
Hola Diego !!!

el codigo lo corro sobre phpmyadmin y mysql-front y no hace lo esperado...yo tengo el sigiente codigo

Esta es la forma donde el usuario hace la petición del servicio ( orden1.php )
<html>
<head>
<title>ORDENE DE SERVICIO</title>
</head>
<body background="fondo_gris.GIF" onload="this.document.forma.usu.focus()">
<table width="54%" align='center'>
<tr>
<td width='11%'><img src="aguila.PNG" width="140" height="115"></td>
<td width='2%' bgcolor="#0099CC"></td>
<td width='77%'><img src="titulo.png" width="600" height="66"></td>
</tr>
</table>
<br>
<br>
<br>
<br>
<table width='600' align='center'>
<form action="orden2.php" method="post" name="forma" target="_self" onSubmit="return odes(this)">
<tr>
<td width='28%' height="25" align='right'><font color="#000000" size="2" face="Comic Sans MS">NOMBRE DEL USUARIO :</td>
<td width='74%'><input type='text' name="usu" size='66' maxlenght='60'></td>
</tr>
<tr>
<td width='28%' height="48" align='right'><font color="#000000" size="2" face="Comic Sans MS">AREA SOLICITANTE :</td>
<td width='74%'>
<select name="are">
<option></option>
<?
include "conecta.php";
$dato=mysql_query("Select * From cat_areas");
while ($row = mysql_fetch_array($dato, MYSQL_ASSOC)){
echo '<option value="'.$row["darea"].'">'.$row["darea"].'</option>'; }
mysql_free_result($result);
?>
</select>
</td>
</tr>
<tr>
<td width='28%' height="48" valign='top' align='right'><font color="#000000" size="2" face="Comic Sans MS">DETALLE DEL SERVICIO :</td>
<td width='74%'><textarea name="pet" cols="50" rows="5"></textarea></td>
</tr>
</table>
<table width='598' align='center'>
<tr height='49'>
<td width='31%'> </td>
<td width='20%'><input type="submit" value="Envia Solicitud"></td>
</form>
<form action="menu.php" method="post">
<td width='18%'><input type="submit" value="Pantalla Anterior"></td>
</form>
</tr>
</table>
</body>
</html>

<script language="javascript">
function odes(f) {
if (f.usu.value.length < 1) {
alert("Por favor introduzca o verifique el Nombre del Usuario");
f.usu.focus();
return(false);
}
if (f.are.value.length < 1) {
alert("Por favor introduzca o verifique el Area");
f.are.focus();
return(false);
}
if (f.pet.value.length < 1) {
alert("Por favor introduzca o verifique la Peticion");
f.pet.focus();
return(false);
}
}
</script>

Esta el codigo que tengo en ( orden2.php ) aquí verifica si hay tecnicos disponibles si no hay tecnicos disponibles
Consulto el ultimo folio y ha esa hora ( hora_pet ) le quiero agregar 40 minutos para mostrarlo al usuario a que hora aproximadamente se le va a atender en caso contrario salvo la petición de orden

<?
include "conecta.php";
$bus_tec=mysql_query("Select estado From tecnicos Where estado='ST'",$link);
$reg_tec=mysql_numrows($bus_tec);
If ($reg_tec > 0) {
$nuevo = "Insert Into orden (usuario,a_usuario,peticion,hora_pet,fecha_pet,estado) values ('$usu','$are','$pet',curtime(),curdate(),'P')";
mysql_query($nuevo,$link);
header("location: orden1.php");
}else{
?>
<html>
<head>
<title>CONSULTA ORDEN DE SERVICIO</title>
</head>
<body background="fondo_gris.GIF">
<table width="54%" align='center'>
<tr>
<td width='11%'><img src="aguila.PNG" width="140" height="115"></td>
<td width='2%' bgcolor="#0099CC"></td>
<td width='77%'><img src="titulo.png" width="600" height="66"></td>
</tr>
</table>
<br>
<br>
<br>
<table width="740" align="center">
<tr>
<td>
<font color="#3348b1" face="comic sans ms" size="3">
<center>
ESTIMADO USUARIO SU ORDEN DE SERVICIO
</center>
</td>
</tr>
<tr>
<td>
<font color="#3348b1" face="comic sans ms" size="3">
<center>
FUE REGISTRADA CORRECTAMENTE !!!
</center>
</td>
</tr>
<tr>
<td>
<center>
<font color="#3348b1" face="comic sans ms" size="3">
SIN EMBARGO POR EL MOMENTO NO CONTAMOS CON UN TECNICO DISPONIBLE,
</center>
</td>
</tr>
<tr>
<td>
<center>
<font color="#3348b1" face="comic sans ms" size="3">
Y SU ORDEN SERA ATENDIDA APROXIMADAMENTE.........
</center>
</td>
</tr>
<tr>
<form action="orden1.php" method="post">
<td width='74%' height="48" valign='bottom' align='right'><input type="submit" value="Pantalla Anterior"></td>
</form>
</tr>
</table>
<?
}
?>
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

RE:Novato desesperado

Publicado por Diego Romero (1450 intervenciones) el 20/03/2010 03:29:17
Menos mal que te pedí que pusieras solo el código que sea relevante al problema. ¿Para qué queremos saber cómo diseñaste la estética del sitio?.

Por lo menos ahora vemos que ESTABAS HACIENDO LA PREGUNTA INCORRECTA!.

Además, tienes la tabla mal hecha.

Veo que tienes la fecha y la hora por separado en la tabla, ¿por qué?. Si la hora es las 23:30 y le sumas 40 minutos tienes que sumar un día a la fecha y si esa fecha es el último día del mes, debes sumar también el mes y si el mes es el último del año tienes que sumar el año!. Pero si tuvieras ese campo de tipo datetime eso lo haría automáticamente MySQL o bien cualquiera de las funciones de fechas de PHP.

Estabas preguntando por una consulta SELECT pero no veo tal consulta en el código, lo que quieres hacer es simplemente sumar 40 minutos a la fecha-hora ACTUAL mostrársela al usuario, nada más.

echo date("H:i:s d/m/Y", time()+(40*60));

El código anterior es suficiente para lo que quieres.

Hay otros problemas: ¿qué valores tienen las variables $usu,$are y $pet antes de ejecutarse el insert? misterio...
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

RE:Novato desesperado

Publicado por Noe (19 intervenciones) el 20/03/2010 07:20:30
Buenas Noches Diego !!!

te agradesco tu pasiencia y tu tiempo, realmente estoy confundido y disculpame por no haber sido muy esplicito..... lo unico que queria era sumar 40 minutos al campo **hora_asig** dependiendo la hora te tubiera almacenada. en donde trabajo el horario es de 9:00 AM a 8:00PM asi que no tengo que sumar dias, meses y años. yo lo resolvi de esta manera

$total=0;
$sql=mysql_query("Select hora_asig,folio From orden Order By folio Desc Limit 1");
$dato=mysql_fetch_array($sql);
$ha=$dato[hora_asig];
// ------------Separa Horas y Minutos----------
$hor_asig = substr($ha,0,2);
$min_asig = substr($ha,3,2);
// ------------Separa Horas y Minutos----------
// ---------------Inicia Proceso---------------
If ($min_asig <= 19){
$val_hor = $hor_asig;
$val_min = $min_asig + 40;
$total = $val_hor.':'.$val_min;
}
If ($min_asig == 20){
$val_hor = $hor_asig + 1;
$val_min = '00';
$total = $val_hor.':'.$val_min;
}
If ($min_asig >= 21){
$val_hor = $hor_asig + 1;
$val_min = $min_asig + 40;
$res_min = $val_min - 60;
$total = $val_hor.':'.$res_min;
If ($min_asig >= 21 and $min_asig <= 29){
$total = $val_hor.':'.'0'.$res_min;
}
}
echo $total;
y obtengo el resultado deseado, ya lo probe con diferentes horas y trabaja magnificamente
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

RE:Novato desesperado

Publicado por apis (47 intervenciones) el 24/03/2010 04:08:47
Hola! no es necesario hacer todos los calculos manualmente, ya sea que ejecutes la consulta asi como te la pase que deberia funcionar la probe con una de mis tablas, y usas el campo propio de sql de datetime o usar la funcion de php. bueno esa es mi recomendacion
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

RE:Novato desesperado

Publicado por Noe (19 intervenciones) el 24/03/2010 14:16:03
Hola Apis !!!

seria mucha molestia si postearas como va el codigo dentro de PHP ? por que esto SELECT hora_pet,DATE_ADD(hora_pet,INTERVAL 40 minute)
FROM orden WHERE folio=10 lo corro dentro de phpmyadmin o mysql-front y no funciona... lo que deseo saber es como lo pongo dentro de php......no estaria de mas recordarte que tengo muy poco tiempo con esta tecnologia.

GRACIAS.
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