Foros del Web » Programando para Internet » PHP »

Actualizar BD a partir de tabla php

Estas en el tema de Actualizar BD a partir de tabla php en el foro de PHP en Foros del Web. Hola a todos, sin tanta vuelta esta es mi inquietud pues no entiendo porque no me actualiza mi BD con este codigo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 10/09/2014, 12:13
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Pregunta Actualizar BD a partir de tabla php

Hola a todos, sin tanta vuelta esta es mi inquietud pues no entiendo porque no me actualiza mi BD con este codigo:

Código PHP:
Ver original
  1. if($btn=="Actualizar"){
  2.     $noproyecto = $_POST['txtnoproy'];
  3.     foreach($_POST['txtnopro'] as $key => $nopro)
  4. {
  5.  
  6.     $cantidad = $_POST['txtcotiz'][$key];
  7.     $obs = $_POST['txtobscotiz'][$key];
  8.        
  9.        
  10.         $sql="update cotizaciones set idproducto=$nopro, cantidad=$cantidad, observaciones=$obs where noproyecto='$noproyecto'";
  11.        
  12.         $cs=mysql_query($sql,$cn);
  13.         echo "<script> alert('Se actualizo la cotizacion correctamente');
  14.         window.location='ingresoproyectos.php';</script>";

los texts que se nombran en el codigo anterior se encuentran en una consulta que realizo y con la que se supone se puede manipular para actualizar posteriormente. esta es la consulta:

Código PHP:
Ver original
  1. <?php
  2. $sql="
  3. SELECT cotizaciones.nocotizacion, cotizaciones.idproducto, cotizaciones.cantidad, cotizaciones.observaciones
  4. FROM cotizaciones
  5. INNER JOIN pedidos
  6. WHERE cotizaciones.noproyecto = '".$proy."'
  7. GROUP BY cotizaciones.idproducto
  8. ORDER BY cotizaciones.noproyecto DESC";
  9.         $cs=mysql_query($sql,$cn);
  10.         echo"<center>
  11. <table border='4' bordercolor='#0099FF' bgcolor='#FFFFFF'>
  12. <tr>
  13. <td><font color='navy'><strong>Desc. del Producto</strong></font></td>
  14. <td><font color='navy'><strong>Cantidad<br>Cotizada</strong></font></td>
  15. <td><font color='navy'><strong>Observaciones</strong></font></td>
  16. </tr>";
  17.         while($resul=mysql_fetch_array($cs)){
  18.             $var=$resul[0];
  19.             $var1=$resul[1];
  20.             $var2=$resul[2];
  21.             $var3=$resul[3];
  22.            
  23.            
  24.             echo "<tr>
  25. <td><input name='txtnopro[]' type='text'  value='$var1' size='48'/></td>
  26. <td><input name='txtcotiz[]' type='text'  value='$var2' size='5'/>
  27. <td><textarea name='txtobscotiz[]' type='text' size='15'>$var3</textarea></td>
  28.  
  29. </tr>";
  30.             }
  31.            
  32.             echo "</table>
  33. </center>";
  34. ?>

y txtnoproy esta en el encabezado de la consulta donde se encuentra el codigo del proyecto...

no se porque no puede actualizar... que pude hacer mal?, gracias por su colaboracion de antemano.
  #2 (permalink)  
Antiguo 10/09/2014, 18:18
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Actualizar BD a partir de tabla php

Revisa la línea 10 del código. Si las observaciones son string, enciérralas en comillas así:

Código PHP:
Ver original
  1. $sql="update cotizaciones set idproducto=$nopro, cantidad=$cantidad, observaciones='$obs' where noproyecto='$noproyecto'";

Puede ser eso.
  #3 (permalink)  
Antiguo 11/09/2014, 06:36
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Actualizar BD a partir de tabla php

Hola Rodrigo, tu aporte ayudo siginifcativamente pues ya esta haciendo algo el codigo más no realiza su trabajo completamente, pues por ejemplo en la tabla que trae los datos consultados que se suponen que debo actualizar, hay dos filas... cuando edito una y le doy clic a actualizar si actualiza pero a los dos registros! dejando como resultado un mismo registro duplicado, asi esta mi codigo ahora... creo que en cuanto a como ordenar la sentencia de consulta es de lo que depende el funcionamiento, que dices?:

Código PHP:
Ver original
  1. if($btn=="Actualizar"){
  2.    
  3.     foreach($_POST['txtnopro'] as $key => $nopro)
  4. {
  5.  
  6.     $cantidad = $_POST['txtcotiz'][$key];
  7.     $obs = $_POST['txtobscotiz'][$key];
  8.     $noproyecto = $_POST['txtnoproy'][$key];
  9.        
  10.         $sql="update cotizaciones set idproducto='$nopro', cantidad=$cantidad, observaciones='$obs' where noproyecto='$noproyecto'";
  11.         $cs=mysql_query($sql,$cn);
  12.         }
  13.         echo "<script> alert('Se actualizo la cotizacion correctamente');
  14.         window.location='ingresoproyectos.php';</script>";
  15.         }

Y gracias de nuevo pues fue acertado tu aporte! :D
  #4 (permalink)  
Antiguo 11/09/2014, 06:55
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Actualizar BD a partir de tabla php

Revisa la línea 8. No conozco tu tabla ni tu formulario, pero ¿cuál vale: "txtnopro" o "txtnoproy"? ¿O son distintas?

$noproyecto = $_POST['txtnoproy'][$key]; (¿sobra una "y"?)
  #5 (permalink)  
Antiguo 11/09/2014, 07:52
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Actualizar BD a partir de tabla php

Son distintas, mira este es el codigo completo del formulario:

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. ?>
  4. <?php include("seguridad.php");
  5. ?>
  6.  
  7. <!DOCTYPE html>
  8. <html>
  9. <head><meta http-equiv="Content-Type" content="text/html; charset=big5">
  10. <title>Cotizaci&oacute;n</title>
  11.  
  12. <LINK href="body.css" rel="stylesheet" type="text/css">
  13. </head>
  14. <body>
  15. <header>
  16. <h2><center>
  17.   <font color="navy">Editar Cotizaci&oacute;n</font>
  18. </center></h2>
  19. </header>
  20. <br>
  21. <?php
  22. $var="";
  23. $var1="";
  24. $var2="";
  25. $var3="";
  26.  
  27. $sql="select max(nopedido) from pedidos";
  28. $consult = mysql_query($sql);  
  29. $r = mysql_fetch_array($consult);
  30.  
  31.  
  32. if(isset($_POST["btn1"])){
  33.     $btn=$_POST["btn1"];
  34.     $bus=$_POST["txtbus"];
  35.     if($btn=="Buscar"){
  36.        
  37.         $sql="select * from contenidopedido where nopedido='$bus'";
  38.         $cs=mysql_query($sql,$cn);
  39.         while($resul=mysql_fetch_array($cs)){
  40.             $var=$resul[0];
  41.             $var1=$resul[1];
  42.             $var2=$resul[2];
  43.             $var3=$resul[3];
  44.             $var4=$resul[4];
  45.             $var5=$resul[5];
  46.             $var6=$resul[6];
  47.            
  48.            
  49.            
  50.             }
  51.            
  52.            
  53.         }
  54.        
  55.         if($btn=="Agregar"){
  56.        
  57.  $nopedido = $_POST['txtnopedido'];
  58.  $noproy = $_POST['txtnoproy'];
  59.  $user = $_POST['txtuser'];
  60.  $fecha = $_POST['txtfecha'];
  61. foreach($_POST['txtnopro'] as $key => $nopro)
  62. {
  63.  
  64.     $cantidad = $_POST['txtcantidad'][$key];
  65.     $obs = $_POST['txtobs'][$key];
  66.        
  67.        
  68.        
  69.         $sql="insert into contenidopedido values ($nopedido,'$nopro','$cantidad','$obs','$noproy','$user','$fecha')";
  70.        
  71.         $cs=mysql_query($sql,$cn);
  72.        
  73.        
  74. }
  75. echo "<script> alert('Se inserto correctamente el pedido');
  76. window.location='compras.php';</script>";
  77.         }
  78.        
  79.         if($btn=="Actualizar"){
  80.    
  81.     foreach($_POST['txtnoproy'] as $key => $noproyecto){
  82.         $cantidad = $_POST['txtcotiz'][$key];
  83.         $obs = $_POST['txtobscotiz'][$key];
  84.         $nopro = $_POST['txtnopro'][$key];
  85.        
  86.         $sql="update cotizaciones set idproducto='$nopro', cantidad=$cantidad, observaciones='$obs' where noproyecto='$noproyecto'";
  87.         $cs=mysql_query($sql,$cn);
  88.         }
  89.         echo "<script> alert('Se actualizo la cotizacion correctamente');
  90.         window.location='ingresoproyectos.php';</script>";
  91.         }
  92.         if($btn=="Eliminar"){
  93.         $noproyecto = $_POST["txtnoproy"];
  94.            
  95.         $sql="delete from cotizaciones where noproyecto='$noproyecto'";
  96.        
  97.         $cs=mysql_query($sql,$cn);
  98.         echo "<script> alert('Se elimnino la cotizacion correctamente');
  99.         window.location='ingresoproyectos.php';</script>";
  100.         }
  101.     }
  102.  
  103. ?>
  104. <?php
  105. $proy=$_GET['proy'];
  106. ?>
  107. <form name="fe" action="" method="post">
  108. <center>
  109. <!--<strong>No pedido:</strong>-->
  110. <?php
  111. $sql="select max(nopedido) from pedidos";
  112. $consult = mysql_query($sql);  
  113. $r = mysql_fetch_array($consult);
  114.  
  115.  
  116. ?>
  117. <input name="txtnopedido" type="hidden"  value="<?php echo $r[0]?>" size="1"/>
  118. <tr>
  119. <td width="117"><strong>Fecha: </strong><input name="txtfecha" type="text"  value=<?php echo date('m/d/Y'); ?> size="7" readonly/></td>
  120. <td width="117"><strong>Proyecto: </strong></strong><input name="txtnoproy[]" type="text"  value=<?php echo $proy?> size="10" readonly/>
  121. <td width="143"><strong>Solicitado por: </strong><input name="txtuser" type="text"  value=<? echo $_SESSION['usuarioactual']; ?> size="8" readonly/></td><br><br>
  122. <?php
  123. $sql="
  124. SELECT cotizaciones.nocotizacion, cotizaciones.idproducto, cotizaciones.cantidad, cotizaciones.observaciones
  125. FROM cotizaciones
  126. INNER JOIN pedidos
  127. WHERE cotizaciones.noproyecto = '".$proy."'
  128. GROUP BY cotizaciones.idproducto
  129. ORDER BY cotizaciones.noproyecto DESC";
  130.         $cs=mysql_query($sql,$cn);
  131.         echo"<center>
  132. <table border='4' bordercolor='#0099FF' bgcolor='#FFFFFF'>
  133. <tr>
  134. <td><font color='navy'><strong>Desc. del Producto</strong></font></td>
  135. <td><font color='navy'><strong>Cantidad<br>Cotizada</strong></font></td>
  136. <td><font color='navy'><strong>Observaciones</strong></font></td>
  137. </tr>";
  138.         while($resul=mysql_fetch_array($cs)){
  139.             $var=$resul[0];
  140.             $var1=$resul[1];
  141.             $var2=$resul[2];
  142.             $var3=$resul[3];
  143.            
  144.            
  145.             echo "<tr>
  146. <td><input name='txtnopro[]' type='text'  value='$var1' size='48'/></td>
  147. <td><input name='txtcotiz[]' type='text'  value='$var2' size='5'/>
  148. <td><textarea name='txtobscotiz[]' type='text' size='15'>$var3</textarea></td>
  149.  
  150. </tr>";
  151.             }
  152.            
  153.             echo "</table>
  154. </center>";
  155. ?>
  156. <!--
  157. <table border="4" align="center" bordercolor="#0099FF" bgcolor="#FFFFFF">
  158.  
  159. <td><strong>Productos</strong></td>
  160. <td><input name="txtnopro" type="text"  value="<?php echo $var1?>" size="6"/></td>
  161. </tr>
  162. <tr>
  163. <td><strong>Cantidad</strong></td>
  164. <td><input name="txtcantidad" type="text"  value="<?php echo $var2?>" size="6"/></td>
  165. </tr>
  166. <tr>
  167. <td><strong>Observaciones</strong></td>
  168. <td><textarea name="txtobs" cols="6" id="txtobs"><?php echo $var3?></textarea></td>
  169. </tr>
  170. <tr>
  171. -->
  172. <table width="200" border="4" align="center" bordercolor="#0099FF" bgcolor="#FFFFFF">
  173. <tr align="center"><td colspan="2"><input type="submit" name="btn1"value="Eliminar"><input type="submit" name="btn1"value="Actualizar"></td>
  174.   <tr>
  175.     <th scope="col"><a href="ingresoproyectos.php"><img src="regresar.PNG" width="68" height="26"></a></th>
  176.     <th scope="col"><a href="logout.php"><img src="sesion.PNG" width="97" height="24"></a></th>
  177.   </tr>
  178. </table>
  179. <tr>
  180. <tr><br />
  181. </form>
  182. <br />

mi tabla se llama cotizaciones y tiene los siguientes campos:

idproducto (varchar50), cantidad (int 20), observaciones (varchar 50) y noproyecto (varchar 50). txtnopro esta relacionado con idproducto y txtnoproy con el noproyecto.

no mires el boton agregar que ese es codigo viejo que no funciona y que no he limpiado pendiente de poder actualizar los datso traidos al formulario... gracias por tu tiempo :D
  #6 (permalink)  
Antiguo 11/09/2014, 08:26
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Actualizar BD a partir de tabla php

Entonces puede ser que te estés equivocando al usar la misma clave para productos y proyectos.

Código PHP:
Ver original
  1. $noproyecto = $_POST['txtnoproy'][$key];
Aquí la variable $key viene como enumerador de una lista de productos, y tú la estás pasando para identificar un proyecto, creo.

¿No será así?:
Código PHP:
Ver original
  1. $noproyecto = $_POST['txtnoproy'];
  #7 (permalink)  
Antiguo 11/09/2014, 10:26
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Actualizar BD a partir de tabla php

Sí... trato que cuando lea solo lo haga con los productos de ese proyecto pues obviamente en la base de datos hay más aunque no creo que influya pues en la consulta que hago para luego editar ya estan explicitos los productos de X proyecto, pero yo siento que el error va por ahí como dices tu...
Código PHP:
Ver original
  1. if($btn=="Actualizar"){
  2.     $noproyecto = $_POST['txtnoproy'];
  3.     foreach($_POST['txtnopro'] as $key => $nopro){
  4.         $cantidad = $_POST['txtcotiz'][$key];
  5.         $obs = $_POST['txtobscotiz'][$key];
  6.        
  7.        
  8.         $sql="update cotizaciones set idproducto='$nopro', cantidad=$cantidad, observaciones='$obs' where noproyecto='$noproyecto'";
  9.         $cs=mysql_query($sql,$cn);
  10.         }
  11.         echo "<script> alert('Se actualizo la cotizacion correctamente');
  12.         window.location='ingresoproyectos.php';</script>";
  13.         }

hice este cambio basandome en lo que me dijiste hace rato y nada y lo repeti por tu sugerencia cuidadosamente y no dio. ahora no pasa absolutamente nada, a diferencia que antes actualizaba aunque lo hacia en todos los registros de la BD... :/
  #8 (permalink)  
Antiguo 11/09/2014, 10:36
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Actualizar BD a partir de tabla php

¿Has mirado los valores que llegan por post?

Código PHP:
Ver original
  1. print_r($_POST);  //al principio de la página
  #9 (permalink)  
Antiguo 11/09/2014, 12:24
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Actualizar BD a partir de tabla php

si, dice array(), y consultando por mi lado, creo que esa forma de codigo no funcionara al 100% pues no se esta especificando la fila y columna del dato... osea por vectores / matrices, más aunque no domino ese tema, entiendo un poco su dinamica de personalizar la posicion de los datos en un conjunto... que dices al respecto?
  #10 (permalink)  
Antiguo 11/09/2014, 15:58
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Actualizar BD a partir de tabla php

Array() significa que no llegó ningún dato desde el formulario.
Debería decir algo como

Código PHP:
Ver original
  1. (
  2.     [txtnoproy] => algo
  3.     [txtnoproy] => Array
  4.         (
  5.             [0] => otro
  6.             [1] => uno
  7.             [2] => más
  8.         )
  9. )
  #11 (permalink)  
Antiguo 12/09/2014, 07:38
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Actualizar BD a partir de tabla php

y sin resultado como ese, no es posible ver lo de actualizar via matriz o vector?
  #12 (permalink)  
Antiguo 12/09/2014, 08:03
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Actualizar BD a partir de tabla php

No, lo que significa es que la página que tiene el formulario no se está comunicando con la página que guarda en la base de datos.
Revisa que en la página con el formulario haya un <form> bien armado y que indique correctamente a dónde se están enviando los datos. Algo como

<form action="actualizar.php" mothod="post">
(aquí pones la tabla e incluyes los campos, p.ej.:
<input name='txtnopro[]' type='text' value='$var1' size='48'/>
etc.etc.etc...
</form>
  #13 (permalink)  
Antiguo 15/09/2014, 07:16
Avatar de Jlopez2014  
Fecha de Ingreso: julio-2014
Ubicación: Barranquilla
Mensajes: 154
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Actualizar BD a partir de tabla php

Hola de nuevo, y entiendo a lo que te refieres, más mi página trabaja directamente con la BD, los datos que llegan y mandan son directos... por eso no hay un form que llame un PHP en especifico... ahora, consultando un poco la solución según para esto es trabajar con vectores como te decía, pues ellos determinan una posición fija para cada campo no haciendolos así redundantes entre filas y columnas, yo quiero es ver como aplicar esto a la consulta y seguidamente a la actualización... Gracias y feliz día!

Etiquetas: consulta-mysql, php+base+de+datos
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 07:02.