Foros del Web » Programando para Internet » Javascript »

Problema con Javascript, funciona cuando quiere

Estas en el tema de Problema con Javascript, funciona cuando quiere en el foro de Javascript en Foros del Web. Buenas: Tengo una web en php con un formulario que se manda a mysql. Al mismo tiempo, activa un javascript que guarda un canvan en ...
  #1 (permalink)  
Antiguo 03/06/2014, 04:42
 
Fecha de Ingreso: abril-2012
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Problema con Javascript, funciona cuando quiere

Buenas:
Tengo una web en php con un formulario que se manda a mysql.
Al mismo tiempo, activa un javascript que guarda un canvan en el servidor, llama a un php, guarda el archivo y sube el nombre del archivo al mysql.

La cuestión, es que solo funciona, si entro por primera vez, y de los 3 input que tengo, solo meto datos en el primero.
Os pongo los archivo, para ver si me podéis ayudar.
Muchas gracias.

Archivo php con formulario:
Código PHP:
<?php
require("conexion.php");
$status "";





if (isset(
$_POST["nombre"])) {
    
$nombre $_POST["nombre"];
    
$aceite $_POST["aceite"];
    
$fecha_actual date("Y-m-d");
    
$filtro $_POST["filtro"];
    
$sql2="select `id` from `imagen` order by id DESC LIMIT 1";
    
$imagen=mysql_query($sql2$conexion )or die(mysql_error());

$id_imagen=mysql_result($imagen0)+1;

    
$sql "INSERT INTO `aceite` (`id_cliente`, `aceite`, `fecha`, `id_imagen`, `filtro`) ";
    
$sql.= "VALUES ('".$nombre."', '".$aceite."', '".$fecha_actual."', '".$id_imagen."', '".$filtro."')";
$id_imagen=mysql_result($imagen0);
    
mysql_query($sql$conexion)or die(mysql_error());
    
$status "ok";
    echo 
$sql2."</br>";
    echo 
$sql;
    
}
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="MobileOptimized" content="width" /> 
      <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<style>
            #container { position: relative; }
            #imageView { border: 1px solid #000; }
        </style>
<h3>Introducir Aceite y Filtros</h3>
<?php if ($status == "ok") { ?>
<p class="confirm">Registro guardado correctamente</p>
<?php ?>
<form method="post" id="frEmpresa" action="">
    <label for="nombre">Cliente</label>
    <input type="number" id="nombre" name="nombre" />
    <br />
    <label for="aceite">Aceite</label>
    <input type="number" id="aceite" name="aceite" />
    <br />
    <label for="filtro">Filtros</label>
    <input type="number" id="filtro" name="filtro" />    
    </br>

    <canvas id="canvas" width="300" height="200"></canvas>
    <div class="gui">
      <input type="color" id="color" value="#000000">
      <button id="bt-clear">CLEAR</button>
      <button id="bt-save">SAVE</button>
    </div>
 <script src= "script/guardando-pngs.js"></script>
 
</form>
</body>
</html>

Como veis, es un formulario sin más, lo unico que llama a un javascrip.


Código:
var tiemposcambian = tiemposcambian || {};

tiemposcambian.GuardandoPNGs = (function() {
  var mousePressed = false;
  var lastX, lastY;
  var ctx;

  function init() {
    // init canvas
    var canvas = document.getElementById('canvas');
    ctx = canvas.getContext('2d');
    resetCanvas();

    // button events
    document.getElementById('bt-save').onmouseup = sendToServer;
    document.getElementById('bt-clear').onmouseup = resetCanvas;

    // canvas events
    canvas.onmousedown = function(e) {
      draw(e.layerX, e.layerY);
      mousePressed = true;
    };

    canvas.onmousemove = function(e) {
      if (mousePressed) {
        draw(e.layerX, e.layerY);
      }
    };

    canvas.onmouseup = function(e) {
      mousePressed = false;
    };
    
    canvas.onmouseleave = function(e) {
      mousePressed = false;
    };
  }

  function draw(x, y) {
    if (mousePressed) {
      ctx.beginPath();
      ctx.strokeStyle = document.getElementById('color').value;
      ctx.lineWidth = 1;
      ctx.lineJoin = 'round';
      ctx.moveTo(lastX, lastY);
      ctx.lineTo(x, y);
      ctx.closePath();
      ctx.stroke();
    }
    lastX = x; lastY = y;
  }

  function sendToServer() {
    var data = canvas.toDataURL('image/png');
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
      // request complete
      if (xhr.readyState == 4) {
       
      }
    }
	
    xhr.open('POST','snapshot.php',true);
    xhr.setRequestHeader('Content-Type', 'application/upload');
    xhr.send(data);

  }
  
  function resetCanvas() {
    // just repaint canvas white
    ctx.fillStyle = '#EEEEEE';
    ctx.fillRect(0, 0, canvas.width, canvas.height);
  }

  return {
    'init': init
  };
});


window.onload = function() {
  new tiemposcambian.GuardandoPNGs().init();
};

Este llama a un php y hay termina todo.




Código:
<?php


  // read input stream
	$data = file_get_contents("php://input");
	
	
	// filtering and decoding code adapted from
  // http://stackoverflow.com/questions/11843115/uploading-canvas-context-as-image-using-ajax-and-php?lq=1
	// Filter out the headers (data:,) part.
	$filteredData=substr($data, strpos($data, ",")+1);
	// Need to decode before saving since the data we received is already base64 encoded
	$decodedData=base64_decode($filteredData);

	// store in server
	$fic_name = 'snapshot'.date("His").'.png';
	$fp = fopen('snapshots/'.$fic_name, 'wb');
	$ok = fwrite( $fp, $decodedData);
	fclose( $fp );
	
require("conexion.php");

	
	$sql = "INSERT INTO `imagen` (`nombre`) ";
    $sql.= "VALUES ('".$fic_name."')";
	
	mysql_query($sql, $conexion)or die(mysql_error());


?>
Espero que me ayudeis, estoy desesperado.
  #2 (permalink)  
Antiguo 03/06/2014, 13:44
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Problema con Javascript, funciona cuando quiere

Te aconsejo colocar linea de depuración (console.log()) en cada función de tu javascript y usar un debugger como firebug, con ésto será sencillo ver dónde está el problema.
  #3 (permalink)  
Antiguo 03/06/2014, 14:14
 
Fecha de Ingreso: abril-2012
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Respuesta: Problema con Javascript, funciona cuando quiere

Gracias, hacia mucho que no tocaba nada de programación y me has dado la posible solución, al menos para poder ver donde falla.
Gracias de nuevo

Etiquetas: formulario, funcion, html, input, js, php, select
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 17:26.