PHP - Problemas para dividir el contenido de 2 divs

   
Vista:

Problemas para dividir el contenido de 2 divs

Publicado por Unexes (124 intervenciones) el 28/11/2015 15:24:37
Buenas a tod@s.

Vereis tengo el código que os pongo a continuación, esta funcionando correctamente tal cual esta ahora, pero necesito que haga algo mas y eso no he conseguido hacerlo por lo tanto os detallo mi problema.

Lo que hace este código es leer de una base de datos y rellenar el "selector" y cuando cambiamos el valor del mismo "selA4" me pone en el <div id="Cantidad"> la cantidad seleccionada y en el <div id="PrecioTotal"> el valor correspondiente del campo "descripcion" de mi base de datos, y si el valor de descripcion es ==0 me aparece un texto.

Lo que necesito es añadir un nuevo Div que lo llamare "PrecioUnidad" y que en el mismo aparezca el valor resultante de la división del valor del div "PrecioTotal" dividido por el valor del div "Cantidad" con el fin de obtener en el nuevo div "PrecioUnidad" el precio por unidad ("PrecioTotal" dividido por "Cantidad").

Espero haberme explicado bien aunque he sido un poco repetitivo, supongo que habrá otras maneras de obtener el precio por unidad, si alguien quiere sugerirme que lo haría de otra forma estaré encantado en estudiar su idea.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
        <link rel="stylesheet" type="text/css" href="../css/cav.css" />
<head>
        <?php
		require_once('../Connections/Probando.php');
		mysqli_query($conexion, "SET NAMES 'utf8'");
		?>
<body>
<div id="A4">
                <div id="Selector">
    <select name="sel_A4" id="sel_A4" class="select" onchange="mostrar(this, 'Cantidad', 'PrecioTotal', 'Conjunto' );">
			<?php
    			$tablaseleccionA4 = mysqli_query($conexion,"SELECT * FROM prueba WHERE Activacion = '1' And Tamano= 'CTA4' ORDER BY Cantidad ASC");
    				while ($registroseleccionA4  = mysqli_fetch_array($tablaseleccionA4 ))
					echo "<option value='".$registroseleccionA4['Cantidad']."' data-description='".$registroseleccionA4['Descripcion_Precio']."'>&nbsp;&nbsp;".number_format($registroseleccionA4['Cantidad'], 0, ',', '.')."</option>";
				mysqli_free_result($tablaseleccionA4);
			?>
   </select>
                </div>
 
                <div id="Cantidad" class="presentacion_cantidad"></div>
 
                <div id="PrecioTotal" class="tarifa"></div>
 
                <div id="Conjunto">Esto es solo texto que aparece cuando el valor en descripcion es igual a ==0</div>
</div><!-- Cierro A4 -->
 
 <script type="text/javascript">
function mostrar( obj, valueDiv, nameDiv, conjuntoDiv ){
	var container = document.getElementById(nameDiv) ;
	var container1 = document.getElementById(valueDiv) ;
	container1.innerHTML = obj[ obj.selectedIndex ].value.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
	var container2 = document.getElementById(conjuntoDiv) ;
    var description = obj[ obj.selectedIndex ].dataset.description;
		if (description == 0){
			document.getElementById(nameDiv).style.display ="none";
			document.getElementById(valueDiv).style.display ="none";
	    	document.getElementById(conjuntoDiv).style.display ='block';
		} else {
			container.innerHTML = description;
			document.getElementById(nameDiv).style.display ="block";
			document.getElementById(valueDiv).style.display ="block";
			document.getElementById(conjuntoDiv).style.display ='none';
	}
}
mostrar(document.getElementById("sel_A4"),"Cantidad", "PrecioTotal", "Conjunto");
</script>
</body>
</html>
GRACIAS por vuestra ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problemas para dividir el contenido de 2 divs

Publicado por xve (5515 intervenciones) el 28/11/2015 20:45:00
Hola Unexes, entiendo que dicha división, la quieres realizar con JavaScript, verdad? o con PHP?

Si es con javascript, una manera simple seria:

1
resultado=parseInt(document.getElementById("PrecioTotal"))/parseInt(document.getElementById("Cantidad"));

Utilizo parseInt(), porque entiendo que los valores son enteros...

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas para dividir el contenido de 2 divs

Publicado por Unexes (124 intervenciones) el 28/11/2015 22:42:08
Gracias xve por tu ayuda, en principio creo que es mejor hacerlo con javascript, aunque no sabia exactamente como hacerlo y por eso puse este post en PHP,, pido disculpas.

He probado lo que me indicas y no funciona, en el div donde deberia aparecer el resultado aparece lo siguiente: "NaN"
por si sirve de algo ya que estoy perdido, en la base de datos el campo "Cantidad" y el campo "PrecioTotal" son de tipo "int" y la longitud de "5".
Esto es lo que he puesto para probarlo:

1
2
3
<div id="Display" class="tarifa"></div> <!--Aquí es donde aparece el famoso "NaN"-->
resultado=parseInt(document.getElementById("PrecioTotal"))/parseInt(document.getElementById("Cantidad"));
	Display.innerHTML = resultado;
y el resultado es lo que se ve en la imagen los 2 valores de 50 y el de 110 son correctos lo que trato es que donde aparece "Nan" aparezca el valor de dividir "110" entre "50"

Espero me podais ayudar

Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problemas para dividir el contenido de 2 divs

Publicado por xve (5515 intervenciones) el 29/11/2015 09:19:25
Mil perdones Unexes, me olvide de poner el value.... seria así:

1
resultado=parseInt(document.getElementById("PrecioTotal").value)/parseInt(document.getElementById("Cantidad").value);

Ahora creo que esta correcto... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas para dividir el contenido de 2 divs

Publicado por Unexes (124 intervenciones) el 29/11/2015 12:01:33
De nuevo gracias xve y por supuesto no tienes que pedir perdón tu ayuda es inestimable, disculpas a tí por las molestias y el tiempo que inviertes en ayudar,

Mientras espero vuestros comentarios y ayuda yo por mi parte voy probando cosas y buscando en mister google y ya había probado anteriormente el código tal cual me lo has enviado ahora xve, aunque ahora lo he vuelto a probar por si acaso.

Ahora funciona peor, ya que si tomo como base la imagen que adjunte en el post anterior el valor "110" correspondiente al precio total y el div donde se mostraba el "NaN" desaparecen ya no son visibles, no muestran nada, y por si sirve para orientarte y saber que puede estar fallando te comento que tampoco me aparece el texto cuando selecciono una cantidad y la descripcion es ==0.

Creo que el problema puede estar en el div "Selector", al recoger el "SELECT" el valor de la base de datos por eso con el código que me indicaste anteriormente aparecía "NaN" (Not-A-Number (No es Un Número)) pero no veo exactamente donde esta el problema en mi código, creo que podría estar en la siguiente linea, pero solo es una suposición.
1
echo "<option value='".$registroseleccionA4['Cantidad']."' data-description='".$registroseleccionA4['Descripcion_Precio']."'>&nbsp;&nbsp;".number_format($registroseleccionA4['Cantidad'], 0, ',', '.')."</option>";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas para dividir el contenido de 2 divs

Publicado por Unexes (124 intervenciones) el 29/11/2015 12:59:38
Perdón, Perdón, yo si te pido mil perdones xve y al resto de compañeros, OLVIDAD EL COMENTARIO DEL POST ANTERIOR A ESTE, tuve problemas al copiar y pegar, se me colo un duendecillo así que el resultado de funcionamiento no es el que te comentaba

Te comento a tu ultimo post, funciona igual que el código que me enviaste anteriormente, no ha desaparecido nada todo sigue igual.
este código
1
resultado=parseInt(document.getElementById("PrecioTotal"))/parseInt(document.getElementById("Cantidad"));
y este funcionan igual.
1
resultado=parseInt(document.getElementById("PrecioTotal").value)/parseInt(document.getElementById("Cantidad").value);

Lo que si que te quiero comentar es que creo que el problema puede estar en el div "Selector", al recoger el "SELECT" el valor de la base de datos por eso con el código que me indicaste anteriormente aparecía "NaN" (Not-A-Number (No es Un Número)) pero no veo exactamente donde esta el problema en mi código, creo que podría estar en la siguiente linea, pero solo es una suposición.
1
echo "<option value=".$registroseleccionA4['Cantidad']." data-description=".$registroseleccionA4['Descripcion_Precio'].">&nbsp;&nbsp;".number_format($registroseleccionA4['Cantidad'], 0, ',', '.')."</option>";

Un saludo y perdonad el desliz.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problemas para dividir el contenido de 2 divs

Publicado por xve (5515 intervenciones) el 29/11/2015 19:21:29
jajajaja... nuevamente perdóname Unexes... me he vuelto a equivocar, y he tenido que preparar un ejemplo para darme cuenta...

Es así:
1
resultado=parseInt(document.getElementById("PrecioTotal").innerHTML)/parseInt(document.getElementById("Cantidad").innerHTML);

Aquí tienes el ejemplo que he preparado para darme cuenta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE HTML>
<html>
<head>
<meta charset="uft-8">
</head>
 
<body>
	<div id="PrecioTotal">100</div>
	<div id="Cantidad">50</div>
 
	<script>
	var resultado=parseInt(document.getElementById("PrecioTotal").innerHTML)/parseInt(document.getElementById("Cantidad").innerHTML);
	alert(resultado);
	</script>
</body>
 
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas para dividir el contenido de 2 divs

Publicado por Unexes (124 intervenciones) el 30/11/2015 10:14:17
Muchas gracias xve.

El problema de mostrar la división de los 2 divs ya esta resuelta a falta de algunas pruebas SOLUCIONADO.

Solo ocurre una cosa en el resultado de la división y es que cuando la cantidad es igual o superior al millar (1.000) me divide solo por la parte que esta antes del punto, me explico:

PrecioTotal= 750
Cantidad= 1.225 (UNO punto DOS DOS CINCO)
Resultado que me da = 750 (esto es incorrecto porque me divide 750 por 1)
Resultado que me deberia dar= 0,61 (este es el resultado que seria correcto)

En realidad me divide por la cantidad que esta por delante del punto de millar y no por la cantidad total, en cantidades inferiores a 1.000 funciona bien.

Creo que el problema esta en esta linea:
1
container1.innerHTML = obj[ obj.selectedIndex ].value.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
ya que si elimino lo siguiente:
1
.replace(/\B(?=(\d{3})+(?!\d))/g, ".")
funciona bien pero ahora debo saber como formatear lo que me muestra el div "Cantidad" para que la visualizacion sea correcta.

Voy a intentar resolverlo, aunque estoy perdido con el javascript.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas para dividir el contenido de 2 divs

Publicado por Unexes (124 intervenciones) el 30/11/2015 11:17:02
SOLUCIONADO


Ja Ja me contesto a mi mismo para que los demás vean como lo he solucionado.

He sustituido esta linea:
1
resultado=parseInt(document.getElementById("Tarifa").innerHTML)/parseInt(document.getElementById("Cantidad").innerHTM);
por esta otra:
1
resultado=parseInt(document.getElementById("Tarifa").innerHTML)/parseInt(document.getElementById("Cantidad").innerHTML.replace('.', ""));

Por supuesto a esto no hubiese llegado sin la inestimable ayuda de xve. que siempre esta ahi para echarnos un cable.

Un saludo a todos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Problemas para dividir el contenido de 2 divs

Publicado por xve (5515 intervenciones) el 30/11/2015 11:39:42
Casi hemos contestado al mismo tiempo!!!!

Me alegro que lo solucionaras!!!! y te agradezco que lo compartas!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problemas para dividir el contenido de 2 divs

Publicado por xve (5515 intervenciones) el 30/11/2015 11:35:55
Si claro, el punto es un separados de decimales para javascript... tendrás que eliminar dicho punto antes de hacer la operación...

Una manera que se me ocurre, es que quites el punto de la cantidad para hacer el calculo...algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE HTML>
<html>
<head>
<meta charset="uft-8">
</head>
 
<body>
	<div id="PrecioTotal">1.000</div>
	<div id="Cantidad">50</div>
 
	<script>
	var precio=document.getElementById("PrecioTotal").innerHTML.replace(".","");
	var cantidad=document.getElementById("Cantidad").innerHTML.replace(".","");
	var resultado=parseInt(precio)/parseInt(cantidad);
	alert(resultado);
	</script>
</body>
 
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar