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($imagen, 0)+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($imagen, 0);
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.