0

Tengo mi base de datos creada, en ella una tabla con los campos , ID, VALOR, VALOR2, TIEMPO, tengo mi archivo PHP que me ingresa los valores (VALOR Y VALOR2), el cual es este:

<?php
    $conexion = mysql_connect("localhost", "usuarioservidor", "1234");
    mysql_select_db("bdservidor",$conexion);
    mysql_query("INSERT INTOtablaservidor(valor,valor2) VALUES ('" . $_GET['valor'] . "','" . $_GET['valor2'] . "')", $conexion);
 ?>

perfecto hasta allí todo bien, me inserta los datos correctamente, me le asigna el ID y el TIEMPO, la duda es la siguiente , cuando yo ingreso solo un dato por ejemplo sea de VALOR o VALOR2, el otro dato me le asigna un 0, como puedo hacer para que el otro valor se mantenga el anterior, ya configure en las opciones para que me ponga un NULL, pero no me sirve así,debido a que estoy extrayendo información de esa base de datos con este código:

<?php
$dbhost = 'localhost';
$dbuser = 'usuarioservidor';
$dbpass = '1234';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
  die('Could not connect: ' . mysql_error());
}

$sql = 'SELECT ID, VALOR, VALOR2, TIEMPO FROM tablaservidor ORDER BY id DESC limit 1' ;
mysql_select_db('bdservidor');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
  die('Could not get data: ' . mysql_error());
}

while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
  echo 
      " id={$row[0]}   \n ".
     "valor={$row[1]}  \n ".
     "valor2={$row[2]} \n ".
     "tiempo={$row[3]} \n ".
     "";
}

mysql_free_result($retval);
//echo " Datos leidos de la base de datos MYSQL\n";

mysql_close($conn);
?>` 

cuando extraigo los valores y solo le asigne un valor a VALOR y no a VALOR2 me muestra esto:

introducir la descripción de la imagen aquí

necesito que el otro dato me mantenga el ultimo valor aun si le asigno un solo valor a alguno de los 2, es que estoy encendiendo unos leds mediante esto no necesito que me asigne ni NULL, ni 0, necesito que me mantengo el ultimo valor aun así le ingreso solo un dato, le agradezco si alguien puede ayudarme.

JuankGlezz
  • 5,398
  • 8
  • 28
  • 57
Staz
  • 29
  • 3
  • 6
  • Tener en cuenta https://es.stackoverflow.com/questions/10518/qu%C3%A9-es-la-inyecci%C3%B3n-sql-y-c%C3%B3mo-puedo-evitarla – Dev. Joel Apr 06 '17 at 18:30
  • Antes de hacer el insert, puedes consultar el último registro ingresado y obtener de ahí VALOR_ANTERIOR y VALOR2_ANTERIOR, compararlos contra VALOR y VALOR2, y si alguno de ellos no tiene información, asignarle el valor anterior (VALOR = VALOR_ANTERIOR). De este modo, si no se le asignan valores, se tomarán los valores anteriores. – JYass Apr 06 '17 at 18:35

1 Answers1

0

Primero tienes que obtener los últimos valores, luego tienes que verificar cual te falta y luego lo agregas a la base de datos.

 <?php
     $conexion = mysql_connect("localhost", "usuarioservidor", "1234");
     mysql_select_db("bdservidor",$conexion);
        if (!isset($_GET['valor'],$_GET['valor2'])) {
            $sql = 'SELECT VALOR, VALOR2 FROM tablaservidor ORDER BY id DESC limit 1' ;
            mysql_select_db('bdservidor');
            $retval = mysql_query( $sql, $conexion );

            if(! $retval ) {
              die('Could not get data: ' . mysql_error());
            }

            while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
                if (!isset($_GET['valor'])){
                    $valor={$row[0]};
                }else{
                    $valor=$_GET['valor'];
                }
                if (!isset($_GET['valor2'])){
                    $valor2={$row[1]};
                }else{
                    $valor2=$_GET['valor2'];
                }
            }
        } else {
            $valor=$_GET['valor'];
            $valor2=$_GET['valor2'];

        }       
        mysql_query("INSERT INTOtablaservidor(valor,valor2) VALUES ('" . $valor . "','" . valor2 . "')", $conexion);
?>
Jorge Arturo Juarez
  • 2,813
  • 1
  • 11
  • 24
  • la cuestión está en extraer los valores no en ingresarlos, como decía, yo ingreso solo.un valor y como el otro no le ingreso se pone por defecto en NULL o 0 como lo tenga configurado, quiero que al extraerblos datos no me extraigan un 0 o nulo sino el último valor que tenía – Staz Apr 06 '17 at 19:07
  • Exactamente eso hace el código que te di, Primero evalua si falta ya sea el valor 1 o el 2. si falta un valor, obtiene ese valor de tu base de datos, del ultimo registro que existe en la base de datos, no se de donde mas esperas que se obtenga este valor. si ambos valores estan ingresados, toma esos valores. luego inserta el registro a la Base de Datos. – Jorge Arturo Juarez Apr 06 '17 at 19:22