Multiplicar dos campos en dreamweaver

Mis genios amigos.

Tengo el campo A y el campo B que son un formulario que se rellena en la página web y se guarda en la base de datos. (No hay problema con esto porque ya están relacionados los campos y efectivamente se guardan los datos en la BD)

Simplemente requiero que en el campo C sea el valor de la multiplicación A*B al insertar un registro pero no sé cómo.

1

1 respuesta

Respuesta
1

Perdona que sea escueto. Te envié una respuesta y el sistema no la registró (de hecho te contesté también en la del día 15).

Con PHP (lenguaje de servidor) no puedes acceder a los valores que introduce el usuario en el formulario hasta que este se ha enviado. Por lo tanto tienes dos opciones:

- No incluir el campo C en el formulario. Una vez enviado con REQUEST o POST recibes los valores A y B y ya puedes calcular C y guardarlo en la BBDD

- Incluir el campo C en el formulario. En ese caso debes usar Javascript (lenguaje de cliente) o JQuery y cada vez que se modifique el valor, (con "onchange") por ejemplo, en A o B se actualice C. Cuando envies el formulario ya tendrás disponibles los 3 valores para guardarlo en la base de datos.

Sí, que extraño nunca me llegó la respuesta. Aun así gracias por volver a responder.

Me parece excelente esta solución: "No incluir el campo C en el formulario. Una vez enviado con REQUEST  o POST recibes los valores A y B y ya puedes calcular C y guardarlo en la BBDD"

El problema es que usé un código como este pero no me funcionó

En value puse:

"<?php echo $_REQUEST["A"] * $_REQUEST["B"];?>"

Mándame si quieres el código simplificado del formulario y de la inserción en la base de datos.

En "value" no puedes poner esos valores, no se procesan hasta que se envía el formulario, solo si al enviar el formulario se vuelve a mostrar (porque por ejemplo hubiera un valor inválido y quisieses mostrar el error) los REQUEST tendrían los valores de A y B. De todas formas si envías el formulario por POST usa mejor POST[] para recoger los datos.

En el formulario debería estar así:

<form action="guardar_en_base.php" method="post">
  campo A: <input type="number" name="A"><br>
  campo B: <input type="number" name="B"><br>
  <input type="submit" value="Enviar">
</form>

Luego en guardar_en_base.php sería:

¿

<?php

Conectar a la base de datos

$a=POST['A'], $b=POST['B'] y $c = $a*$b

Guardar valores

____________________________________________________

Si quieres que aparezca C en el formulario tienes que crear una funcion Javascript que actualice C cuando cambien A o B, pero no puedes hacerlo con PHP:

En el formulario debería estar así:

<form action="guardar_en_base.php" method="post">
  campo A: <input type="number" name="A" onchange="actualizaC();"><br>
  campo B: <input type="number" name="B" onchange="actualizaC();"><br>

campo C: <input type="number" name="C"><br>
  <input type="submit" value="Enviar">
</form>

Luego en guardar_en_base.php sería:

<?php

Conectar a la base de datos

$a=POST['A'], $b=POST['B'] y $c = POST['C']

guardar valores

Y un script en Javascript tipo (no está en código):

function actualizaC(){

a=getElementByName('A').value;

b=getElementByName('B').value;

getElementByName('C').value[a*b];

}

¿Alguna vez le han dicho que usted es genial? Me sorprende que haya alguien que me ayude pero que hasta el código me pida.

Aquí está el código y el resultado va en DEB (en vez de C).

Si gusta me ayuda pero si le da pereza no hay problema. YA HIZO DEMASIADO.

<?php require_once('Connections/Datos.php'); ?>

<?php

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO formulario (Usuario, Hospital, Fecha, mAs, A, B, DEB, Fibras, Microcalcificaciones) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Usuario'], "text"),
GetSQLValueString($_POST['Hospital'], "text"),
GetSQLValueString($_POST['Fecha'], "text"),
GetSQLValueString($_POST['mAs'], "text"),
GetSQLValueString($_POST['A'], "int"),
GetSQLValueString($_POST['B'], "int"),
GetSQLValueString($_POST['DEB'], "int"),
GetSQLValueString($_POST['Fibras'], "int"),
GetSQLValueString($_POST['Microcalcificaciones'], "int"));

mysql_select_db($database_Datos, $Datos);
$Result1 = mysql_query($insertSQL, $Datos) or die(mysql_error());

$insertGoTo = "NuevoDatos enviados.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
$insertSQL = sprintf("INSERT INTO formulario (Contador, Usuario, Hospital, Fecha, mAs, A, B, DEB, Fibras, Microcalcificaciones, Masas, SNR, CNR) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Contador'], "int"),
GetSQLValueString($_POST['Usuario'], "text"),
GetSQLValueString($_POST['Hospital'], "text"),
GetSQLValueString($_POST['Fecha'], "text"),
GetSQLValueString($_POST['mAs'], "text"),
GetSQLValueString($_POST['A'], "int"),
GetSQLValueString($_POST['B'], "int"),
GetSQLValueString($_POST['DEB'], "int"),
GetSQLValueString($_POST['Fibras'], "int"),
GetSQLValueString($_POST['Microcalcificaciones'], "int"),
GetSQLValueString($_POST['Masas'], "int"),
GetSQLValueString($_POST['SNR'], "text"),
GetSQLValueString($_POST['CNR'], "text"));

mysql_select_db($database_Datos, $Datos);
$Result1 = mysql_query($insertSQL, $Datos) or die(mysql_error());
}

mysql_select_db($database_Datos, $Datos);
$query_Usuarios = "SELECT * FROM users";
$Usuarios = mysql_query($query_Usuarios, $Datos) or die(mysql_error());
$row_Usuarios = mysql_fetch_assoc($Usuarios);
$totalRows_Usuarios = mysql_num_rows($Usuarios);
?>

<?php
mysql_free_result($Usuarios);
?>

Ólvidate entonces del Javascript si no te quieres liar mucho, pero debes de quitar el "DEB" del formulario pues un dato que calculas y que no debe introducir el usuario, y que además solo puedes manejar con Javascript antes de enviarlo.

1º) Quitas el campo "DEB" del formulario.

2º) Usas así el código:

<?php require_once('Connections/Datos.php'); ?>

<?php

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$a=$_POST['A'];

$b=$_POST['B'];
$insertSQL = sprintf("INSERT INTO formulario (Usuario, Hospital, Fecha, mAs, A, B, DEB, Fibras, Microcalcificaciones) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Usuario'], "text"),
GetSQLValueString($_POST['Hospital'], "text"),
GetSQLValueString($_POST['Fecha'], "text"),
GetSQLValueString($_POST['mAs'], "text"),
GetSQLValueString($_POST['A'], "int"),
GetSQLValueString($_POST['B'], "int"),

GetSQLValueString($a*$b, "int"),
GetSQLValueString($_POST['Fibras'], "int"),
GetSQLValueString($_POST['Microcalcificaciones'], "int"));

mysql_select_db($database_Datos, $Datos);
$Result1 = mysql_query($insertSQL, $Datos) or die(mysql_error());

$insertGoTo = "NuevoDatos enviados.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {

$a=$_POST['A'];

$b=$_POST['B'];

$InsertSQL = sprintf("INSERT INTO formulario (Contador, Usuario, Hospital, Fecha, mAs, A, B, DEB, Fibras, Microcalcificaciones, Masas, SNR, CNR) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['Contador'], "int"),
GetSQLValueString($_POST['Usuario'], "text"),
GetSQLValueString($_POST['Hospital'], "text"),
GetSQLValueString($_POST['Fecha'], "text"),
GetSQLValueString($_POST['mAs'], "text"),
GetSQLValueString($_POST['A'], "int"),
GetSQLValueString($_POST['B'], "int"),
GetSQLValueString($a*$b, "int"),
GetSQLValueString($_POST['Fibras'], "int"),
GetSQLValueString($_POST['Microcalcificaciones'], "int"),
GetSQLValueString($_POST['Masas'], "int"),
GetSQLValueString($_POST['SNR'], "text"),
GetSQLValueString($_POST['CNR'], "text"));

mysql_select_db($database_Datos, $Datos);
$Result1 = mysql_query($insertSQL, $Datos) or die(mysql_error());
}

mysql_select_db($database_Datos, $Datos);
$query_Usuarios = "SELECT * FROM users";
$Usuarios = mysql_query($query_Usuarios, $Datos) or die(mysql_error());
$row_Usuarios = mysql_fetch_assoc($Usuarios);
$totalRows_Usuarios = mysql_num_rows($Usuarios);
?>

¿

<?php
mysql_free_result($Usuarios);
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas