Ayuda PHP urge

  • Autor Autor deskpro123
  • Fecha de inicio Fecha de inicio
deskpro123

deskpro123

Zeta
Verificación en dos pasos activada
Hola a todos, vendo a pedirles ayuda sobre PHP...

Miren, me pasa lo siguiente, tengo un script POSTBACK, osea me devuelve informacion de otra pagina web...

Entonces funciona de la siguiente manera:

Cuando se hace X accion en la otra pagina, llama a mi web y guarda un registro de la siguiente manera:

La otra web llama a mi web asi:
http://miweb.com?script.php?fecha=2014-08-15&valor=1

Entonces en el script.php tengo algo como esto:

PHP:
$query=mysql_query("SELECT * FROM registros WHERE fecha = '".$fecha_get."'");

$num_rows = mysql_num_rows($query);

if ($num_rows > 0) {
mysql_query("UPDATE registros SET valor=valor+'".$valor_get."' WHERE  fecha = '".$fecha_get."' limit 1");
}
else {
mysql_query("INSERT INTO registros (valor, fecha) VALUES ('".$valor_get."' , '".$fecha_get."')");
}

EL PROBLEMA:

El problema es que si ejecuto yo el script desde mi explorador, me crea al registro con dicha FECHA y cada vez que doy a reflesh lo actualiza la variable VALOR exitosamente, como debe de funcionar correctamente....

Peroooo cuando la otra web hace la llamada, aunque la fecha que indico en la variable FECHA exista, no me actualiza VALOR en la base de datos sino que crea un registro nuevo, ejemplo:

Lo que deberia hacer al llamar MI URL 3 veces:

http://miweb.com?script.php?fecha=2014-08-15&valor=2

Y en la base de datos deberia aparecer asi:
FECHA:2014-08-15 - VALOR: 6


Lo que realmente hace
FECHA:2014-08-15 - VALOR: 2
FECHA:2014-08-15 - VALOR: 2
FECHA:2014-08-15 - VALOR: 2

SERA QUE LA FECHA QUE ME ENVIA LA OTRA WEB TIENE ALGO DIFERENTE?

Espero me puedan ayudar y si hay una forma mas moderna de hacerlo seria exelente.

[MENTION=9679]cicklow[/MENTION] , amigo , sabes algo a que se puede deber eso?

Un saludo a todos
 
debe ser en la comparación de la fecha, qué tipo de campo es la fecha?
 
Haber intenta con:

Insertar CODE, HTML o PHP:
mysql_query("UPDATE registros SET valor=valor+".$valor_get." WHERE  fecha = '".$fecha_get."' limit 1");

Y verifica que el formato de la fecha registrado en la base de datos coincida con el eviado por GET

Salu2!
 
debe ser en la comparación de la fecha, qué tipo de campo es la fecha?

Es un campo varchar(10), si eso pense, que cuando compara la fecha no la ve igual ....

- - - Actualizado - - -

Haber intenta con:

Insertar CODE, HTML o PHP:
mysql_query("UPDATE registros SET valor=valor+".$valor_get." WHERE  fecha = '".$fecha_get."' limit 1");

Y verifica que el formato de la fecha registrado en la base de datos coincida con el eviado por GET

Salu2!

Crees que pueda ser por esas 2 comillas?
 
Si, por que asi das a entender que es una cadena, si no te funciona postea la estructura de tu tabla registros
 
Tenes que hacer fetch de los datos primero. Además las comillas no son necesarias, PHP se encarga de eso.

También sanitizá las variables antes de meterlas en la DB con mysql_real_escape_string();

Y.. indentá el código, es mas entendible. 🙂

Indentación - Wikipedia, la enciclopedia libre

Insertar CODE, HTML o PHP:
$fecha_get = mysql_real_escape_string($fecha_get);
$valor_get = mysql_real_escape_string($valor_get);

$query = mysql_query("SELECT * FROM registros WHERE fecha = '$fecha_get'");

$num_rows = mysql_num_rows($query);

if ($num_rows > 0)
{
	$row = mysql_fetch_assoc($query);
	
	$valor = $row['valor'] + $valor_get;
	
	mysql_query("UPDATE registros SET valor='$valor' WHERE fecha = '$fecha_get'");
}

else
{
	mysql_query( "INSERT INTO registros (valor, fecha) VALUES ('$valor_get', '$fecha_get')" );
}
 
intenta hacer la consulta directo en el phpmyadmin a ver que te devuelve, es más fácil ver el error ahí.
 

Temas similares

Miguel Sanches
Respuestas
6
Visitas
344
Rolando C
Rolando C
J
Respuestas
8
Visitas
483
Jonay Basanta
J
T
Respuestas
2
Visitas
437
themasterlight
T
Atrás
Arriba