Foros del Web » Programando para Internet » PHP »

no quería mandar este post pero....

Estas en el tema de no quería mandar este post pero.... en el foro de PHP en Foros del Web. como dije no quería mandar este post, ya que llevo 24 horas revisandolo y he logrado solucionar muchos detalles que me tenían varado pero ahora ...
  #1 (permalink)  
Antiguo 09/09/2002, 21:15
 
Fecha de Ingreso: agosto-2002
Ubicación: Santiago de Chile
Mensajes: 136
Antigüedad: 15 años, 3 meses
Puntos: 1
no quería mandar este post pero....

como dije no quería mandar este post, ya que llevo 24 horas revisandolo y he logrado solucionar muchos detalles que me tenían varado pero ahora estoy agotado y necesito ayuda.
al grano: tengo este script que procesaa un formulario:
<html>
<body>
<table width="100%">
<tr>
<td><table width="90%" border="1" align="center">
<tr>
<th width="44">id</th>
<th width="175">Nombre</th>
<th width="175">Precio metro²</th>
<th width="100">Cantidad</th>
<th width="65">Alto</th>
<th width="65">Ancho</th>
<th width="160">Precio Total</th>
</tr>
<?php
$id = $producto;
$enviar = true;


$pulido=true;
$id_producto=$id;
if ($enviar){
$mysql_link=mysql_connect("localhost", "site85", "456422");
mysql_select_db("site85_1", $mysql_link);
$query="select * from productos where id_producto=$id";
$mysql_result = mysql_query ($query,$mysql_link);

$preciototal=$alto*$ancho*$row[precio];
if($pulido){
$preciototal=$preciototal * 0.2 + $preciototal;
}
if($row=mysql_fetch_array($mysql_result))
{
echo("<tr><td>$row[id_producto]</td>
<td>$row[nombre]</td>
<td>$row[precio]</td>
<td>$cantidad</td>
<td>$alto</td>
<td>$ancho</td>
<td>$preciototal</td></tr>");

}
}
?>
</table>
</body>
</html>
y el unico problema es que en el campo precio total me da cero. todos los otros campos aparecen tal cual los ingreso en el formulario, cero problema.(casi)
gracias
  #2 (permalink)  
Antiguo 09/09/2002, 21:26
 
Fecha de Ingreso: agosto-2002
Ubicación: Santiago de Chile
Mensajes: 136
Antigüedad: 15 años, 3 meses
Puntos: 1
Re: no quería mandar este post pero....

sigo intentando, lo he dado vuelta, reordenado, tratado de todo.(seguro que no todo, por algo no me funciona).
  #3 (permalink)  
Antiguo 09/09/2002, 21:49
Avatar de Jano.cl  
Fecha de Ingreso: diciembre-2001
Ubicación: Chile
Mensajes: 258
Antigüedad: 16 años
Puntos: 0
Re: no quería mandar este post pero....

<adivinando>
trata cambiando
if($row=mysql_fetch_array($mysql_result))
por
if($row==mysql_fetch_array($mysql_result))
</adivinando>

En una de esas te resulta.
  #4 (permalink)  
Antiguo 10/09/2002, 01:24
Avatar de AngelRoyo  
Fecha de Ingreso: marzo-2002
Ubicación: Santiago de Chile
Mensajes: 207
Antigüedad: 15 años, 8 meses
Puntos: 5
Re: no quería mandar este post pero....

Esto tenemos (extracto) :
Código:
  
$mysql_result = mysql_query ($query,$mysql_link); 

$preciototal=$alto*$ancho*$row[precio]; 
if($pulido){ 
$preciototal=$preciototal * 0.2 + $preciototal; 
} 
if($row=mysql_fetch_array($mysql_result)) 
{ 
echo("<tr><td>$row[id_producto]</td> 
<td>$row[nombre]</td> 
<td>$row[precio]</td> 
<td>$cantidad</td>
<td>$alto</td>
<td>$ancho</td> 
<td>$preciototal</td></tr>"); 

}
Como debes hacerlo de aquí en adelante:
1) Siempre despues de:
$mysql_result = mysql_db_query ($query,$mysql_link);
va : $row=mysql_fetch_array($mysql_result);
2) ¿Sabes que hace mysql_fetch_array? Buscalo en el manual y lo sabras mejor que de mi persona.
3) El error es que tu usas una variable que no existe " AÚN ":
$preciototal=$alto*$ancho*$row[precio];
¿Donde esta $alto definida?
¿Donde esta $ancho definida?
Esta si que si:
¿Donde esta $row[precio] definida o con data ?.

Si te marcaba cero es que alguna de ellas es cero. Ese es una propiedad de algebra lineal.
Por lo tanto alguna de esos 3 vale CERO o simplemente no existe. También puede ser que PHP te lo arregla, quien sabe si ahi un texto y PHP "están bueno" que ve un signo (*) y dice: Este tio esta multiplicando así que supondre que es un CERO(0) aún cuando pueda decir "pepe" o nulo.

Eso te resuelve el problema.
Eso también confirma la necesidad de habilitar el Chat :)
Ya lo he probado en otro sitio y va muy bien.
Sólo falta la formalidad de la página con la explicación y hacer real esto del apoyo en línea.

Saludos
Angel.
  #5 (permalink)  
Antiguo 10/09/2002, 08:37
 
Fecha de Ingreso: agosto-2002
Ubicación: Santiago de Chile
Mensajes: 136
Antigüedad: 15 años, 3 meses
Puntos: 1
Re: no quería mandar este post pero....

hola Angel, las variables $alto y $ancho vienen definidas desde el formulario y de hecho aparecen en la tabla tal cual las ingreso, y probé con $precio en vez de
$row[precio] y nada. si no me equivoco la función mysql_fetch_array te entrega un resultado de una tabla asociando sus elementos[] y los guarda en el nombre de variable al lado izquierdo del signo =. Creo.
gracias por todo. seguiré buscando que puede ser. Angel, que pasó con las clases?
Chao.
Marcelo
  #6 (permalink)  
Antiguo 10/09/2002, 09:55
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Re: no quería mandar este post pero....

marceloxx6, $preciototal es igual a cero porque para calcularlo usas $row[precio] ANTES de darle valor a $row con el mysql_fetch_array(). Es decir, $row[precio] no esta definido y PHP lo trata como si seria cero (ya se que no es del todo exacto, pero ahora no tengo tiempo para explicarlo a fondo).

Para que te funcione debes meter el calculo de $preciototal dentro del bloque del if ($row=mysql_fetch_array) ...

Espero que te sea de ayuda.

Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 10/09/2002, 09:56
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
Re: no quería mandar este post pero....

Marcelo, tu error es muy simple. Mira un poco mejor.
Estás utilizando un $row[precio] ANTES de hacer un mysql_fetch_array.

saludos.
  #8 (permalink)  
Antiguo 10/09/2002, 10:13
 
Fecha de Ingreso: agosto-2002
Ubicación: Santiago de Chile
Mensajes: 136
Antigüedad: 15 años, 3 meses
Puntos: 1
Re: no quería mandar este post pero....

Jose ,Miwebstudio ya me había percatado de ese detalle y aun asi no funciona. igual gracias.
  #9 (permalink)  
Antiguo 10/09/2002, 10:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Re: no quería mandar este post pero....

Si has modificado el codigo, seria mejor que lo volvieses a postear, para ver que puede estar mal ahora tras tus cambios.

Aun asi podrias probar a hacer echos de las variables implicadas en el calculo de $preciototal justo antes de hacer el calculo y de $preciototal despues de hacerlo. Estaria bien que lo harias para los dos casos.

Como bien te han dicho antes, $preciototal solo puede ser cero si al hacer el producto uno de los operandos es cero.


Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 10/09/2002, 10:50
 
Fecha de Ingreso: agosto-2002
Ubicación: Santiago de Chile
Mensajes: 136
Antigüedad: 15 años, 3 meses
Puntos: 1
Re: no quería mandar este post pero....

por fin funciona, !gracias a todos!
para uds. deben ser una tontera re simple, pero para mi es otro pasito.
Gracias a todos de nuevo. ;)
Marcelo.
  #11 (permalink)  
Antiguo 10/09/2002, 10:51
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Re: no quería mandar este post pero....

O mejor, usa la funcion error_reporting() (ver manual<a href='ir.asp?http://www.php.net/manual/en/function.error-reporting.php' target='_blank'>http://www.php.net/manual/en/function.er...</a>) Ponla para que te reporte el maximo, con E_ALL creo.


Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 10/09/2002, 10:52
 
Fecha de Ingreso: agosto-2002
Ubicación: Santiago de Chile
Mensajes: 136
Antigüedad: 15 años, 3 meses
Puntos: 1
Re: no quería mandar este post pero....

ahora sólo falta que me reconozca la diferencia de la variable pulido en el precio final.
  #13 (permalink)  
Antiguo 10/09/2002, 19:08
 
Fecha de Ingreso: agosto-2002
Ubicación: Santiago de Chile
Mensajes: 136
Antigüedad: 15 años, 3 meses
Puntos: 1
Re: no quería mandar este post pero....

En esto va el script.

&lt;html&gt;
&lt;body&gt;
&lt;table width=&quot;100%&quot;&gt;
&lt;tr&gt;
&lt;td&gt;&lt;table width=&quot;90%&quot; border=&quot;1&quot; align=&quot;center&quot;&gt;
&lt;tr&gt;
&lt;th width=&quot;44&quot;&gt;id&lt;/th&gt;
&lt;th width=&quot;175&quot;&gt;Nombre&lt;/th&gt;
&lt;th width=&quot;175&quot;&gt;Precio metro²&lt;/th&gt;
&lt;th width=&quot;100&quot;&gt;Cantidad&lt;/th&gt;
&lt;th width=&quot;65&quot;&gt;Alto&lt;/th&gt;
&lt;th width=&quot;65&quot;&gt;Ancho&lt;/th&gt;
&lt;th width=&quot;160&quot;&gt;Precio Total&lt;/th&gt;
&lt;/tr&gt;
&lt;?php
$id = $producto;
$enviar = true;
$pulido=$preciototal * 0.2;
$id_producto=$id;

if ($enviar){
$mysql_link=mysql_connect(&quot;localhost&quot;, &quot;site85&quot;, &quot;456422&quot;);
mysql_select_db(&quot;site85_1&quot;, $mysql_link);
$query=&quot;select * from productos where id_producto=$id&quot;;
$mysql_result = mysql_query ($query,$mysql_link);
if($row=mysql_fetch_array($mysql_result))
{
$preciototal=($alto*$ancho*$row[precio])*$cantidad;


if($pulido){
$preciototal=($pulido + $preciototal);
}
echo(&quot;&lt;tr&gt;&lt;td&gt;$row[id_producto]&lt;/td&gt;
&lt;td&gt;$row[nombre]&lt;/td&gt;
&lt;td&gt;$row[precio]&lt;/td&gt;
&lt;td&gt;$cantidad&lt;/td&gt;
&lt;td&gt;$alto&lt;/td&gt;
&lt;td&gt;$ancho&lt;/td&gt;
&lt;td&gt;$preciototal&lt;/td&gt;&lt;/tr&gt;&quot;);

}
}
?&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
solo me falta que la variable pulido funcione, ya que no hace ni una diferencia que la tickee o no en el form. Ya va a salir.
Chao.
Marcelo
  #14 (permalink)  
Antiguo 11/09/2002, 03:38
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Re: no quería mandar este post pero....

Hola,

Me parece que el codigo que mandas es despues de hacer varias pruebas desesperadas. No te lo tomes a mal. Lo digo por estas dos lineas:
Código:
$enviar = true; 
$pulido=$preciototal * 0.2;
Con la primera, fuerzas a que entre en el if($enviar){} siempre. No se si es que quieres eso asi o lo tienes para hacer pruebas. Con la segunda, lo que estas consigiendo es que $pulido valga cero en TODAS las ejecuciones del script, ya que $preciototal todavia no esta definido. Tambien pisas el valor que tenia $pulido al enviar el formulario. Esto conlleva que el if($pulido) nunca se ejecute, porque como bien sabes para PHP 0 = falso.

Solucion: cargarte esa linea y poner el calculo dentro del if ($pulido) como tenias al principio.

Espero baberte sido de ayuda.

Josemi

Aprendiz de mucho, maestro de poco.
  #15 (permalink)  
Antiguo 11/09/2002, 19:02
 
Fecha de Ingreso: agosto-2002
Ubicación: Santiago de Chile
Mensajes: 136
Antigüedad: 15 años, 3 meses
Puntos: 1
Re: no quería mandar este post pero....

tienes razón, le quité la linea &quot;$pulido=xxxxxxx&quot; y funciona perfectamente.
Gracias de nuevo y bien por los php´s.
Marcelo
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:38.