Foros del Web » Programando para Internet » PHP »

Update no funciona....

Estas en el tema de Update no funciona.... en el foro de PHP en Foros del Web. Amigos estoy aplicando un archivo editar.php obviamente el cual edita los registros de la base de datos, en realidad los edita pero me deja el ...
  #1 (permalink)  
Antiguo 02/02/2010, 08:08
 
Fecha de Ingreso: enero-2007
Mensajes: 35
Antigüedad: 17 años, 3 meses
Puntos: 2
Update no funciona....

Amigos estoy aplicando un archivo editar.php obviamente el cual edita los registros de la base de datos, en realidad los edita pero me deja el id=0, agradecería mucho me ayudarán en que parte del codigo estoy cometiendo el error....

Código PHP:
Ver original
  1. <?php
  2. include 'includes/config.php';
  3. include 'menu.php';
  4. ?>
  5. <?php
  6. $edit =$_GET["id"];
  7. if ($_POST["action"] == "edit") {
  8. $query = "UPDATE producto SET id_prod='".$id_prod."', nombre_prod='".$nombre_prod."', descripcion_prod='".$descripcion_prod."', img_prod='".$img_prod."', categoria='".$categoria."' WHERE id_prod = '{$_GET['id']}' LIMIT 1";
  9. $result = mysql_query($query) or die(mysql_error());
  10. }  
  11. ?>


Código HTML:
Ver original
  1. <form action="editar.php" method="POST" enctype="multipart/form-data"> 
  2.       <label for="field_1">Nombre Producto</label>
  3.       <input type="text" name="nombre_prod" id="field_1" class="short" value="<?php echo $nombre_prod ?>" />
  4.                     <label for="field_2">Categoría</label>
  5.                
  6.                     <? echo $producto['cat']; ?>
  7.  
  8.                     <label for="field_4">Descripción del Producto</label>
  9.                     <textarea name="descripcion_prod" rows="3" cols="3" id="field_4"><?php echo $descripcion_prod ?></textarea>
  10.                     <em>Help instructions for each form section goes below input field</em>
  11.                     <input name="archivo" type="file" class="casilla" id="archivo" size="35" />
  12.                     <input name="enviar" type="submit" class="boton" id="enviar" value="Grabar" />
  13.                     <input name="id" value="<?php $_GET["id"]; ?>" type="hidden" />
  14.                     <input name="action" type="hidden" value="edit" />
  15.                     </form>



Muchas gracias por todo!!!
  #2 (permalink)  
Antiguo 02/02/2010, 08:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Update no funciona....

pero si el método del formulario es POST, ¿porque utilizas $_GET??

además, te recuerdo que las variables no se imprimen solas...
Código PHP:
<input name="id" value="<?php $_GET["id"]; ?>" type="hidden" />
y ahí te falta mínimo un echo, inclusive estás usando register_globals otro punto negativo mas...

Código PHP:
// MAL
$nombre_prod;

// BIEN
$_POST['nombre_prod']; 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 02/02/2010, 08:53
 
Fecha de Ingreso: enero-2007
Mensajes: 35
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Update no funciona....

OK muchas gracias pateketrueke,. pero no se bien como cambiar los valores para que logre editar me recomiendas usar POST o GET
  #4 (permalink)  
Antiguo 02/02/2010, 09:05
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Update no funciona....

¿De dónde sale el valor de la variable $id_prod? El ID no deberías cambiarlo, por lo tanto, sólo necesitas excluirlo de la lista de campos en el UPDATE ... SET ...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 02/02/2010, 10:24
 
Fecha de Ingreso: enero-2007
Mensajes: 35
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Update no funciona....

Ahi esta el codigo corregido por sus sugerencias, sin embargo aun no logro editar y guardar los registros en la base de datos.===

Código PHP:
Ver original
  1. <?php include 'includes/config.php'; ?>
  2. <?php
  3. $edit =$_GET["id"];
  4. $link=conectar();
  5. if ($_POST["action"] == "edit") {
  6. $query = "UPDATE producto SET id_prod = ".$_POST['id'].", nombre_prod = ".$_POST['nombre_prod'].", descripcion_prod = ".$_POST['descripcion_prod'].", img_prod = ".$_POST['img_prod'].", categoria = ".$_POST['categoria']." WHERE id_prod = " . $_GET["id"];
  7. $result = mysql_query($query) or die(mysql_error());
  8. }
  9. ?>
Código HTML:
Ver original
  1. <form action="editar.php" method="POST" enctype="multipart/form-data">
  2. <label for="field_1">Nombre Producto</label>
  3.   <input type="text" name="nombre_prod" id="field_1" class="short" value="<?php echo $nombre_prod ?>" />
  4. <label for="field_2">Categoría</label>
  5. <? echo $producto['cat'];  ?>
  6. <label for="field_4">Descripción del Producto</label>
  7. <textarea name="descripcion_prod" rows="3" cols="3" id="field_4"><?php echo $descripcion_prod ?></textarea>
  8.  <input name="archivo" type="file" class="casilla" id="archivo" size="35" />
  9. <input name="enviar" type="submit" class="boton" id="enviar" value="Grabar" />
  10. <input name="action" type="hidden" value="edit" />
  11. <input name="id" value="<?php $_GET["id"]; ?>" type="hidden" />
  12. </form>

De hecho ahora me arroja el error


Código MySQL:
Ver original
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' nombre_prod = LU XXXX, descripcion_prod = A World Trade Center brings together ' at line 1

Cual es el error en la consulta SQL
  #6 (permalink)  
Antiguo 02/02/2010, 10:26
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Update no funciona....

Los valores de texto en consultas sql van entre comillas simples -_-
  #7 (permalink)  
Antiguo 02/02/2010, 10:30
Avatar de rfadgrmm  
Fecha de Ingreso: junio-2009
Mensajes: 74
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Update no funciona....

Hola Luxo,

No olvides usar las comillas simples para los campos del tipo texto y/o fecha/hora en tu sentencia SQL para que funcione el UPDATE...

Saludos...
  #8 (permalink)  
Antiguo 02/02/2010, 11:42
 
Fecha de Ingreso: enero-2007
Mensajes: 35
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Update no funciona....

Gracias darkasecas y rfadgrmm, aqui esta el codigo como lo señalaron sin embargo no se en donde tengo el error d verdad me esta complicando la cosa busco el erro y no lo encuento... MySQL me indica que tengo " adicional pero no la veo.

Código MySQL:
Ver original
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''nombre_prod' = LU XXXX NO , 'descripcion_prod' = A World Trade Center' at line 1

Código PHP:
Ver original
  1. <?php include 'includes/config.php'; ?>
  2. <?php
  3. $edit =$_GET["id"];
  4. $link=conectar();
  5. if ($_POST["action"] == "edit") {
  6. $query = "UPDATE producto SET 'nombre_prod' = ".$_POST['nombre_prod'].", 'descripcion_prod' = ".$_POST['descripcion_prod'].", 'img_prod' = ".$_POST['img_prod'].", 'categoria' = ".$_POST['categoria']." WHERE 'id_prod' = $edit";
  7. $result = mysql_query($query) or die(mysql_error());
  8. }
  9. ?>

Gracias a todos como siempe...
  #9 (permalink)  
Antiguo 02/02/2010, 11:48
Avatar de rfadgrmm  
Fecha de Ingreso: junio-2009
Mensajes: 74
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Update no funciona....

Lo que sucede luxo es que a cada nombre del campo le estás indicando con comillas simples, sólo las comillas se usan para indicar los valores a ingresar del tipo texto y/o fecha/hora, quitándole esas comillas de más en cada nombre del campo y asignándole al valor, la sentencia SQL puede funcionar...

Código PHP:
Ver original
  1. "UPDATE producto SET nombre_prod = '".$_POST['nombre_prod']."', descripcion_prod = '".$_POST['descripcion_prod']."', ..."

Revisa cada nombre de campo para retirar esas comillas simples, y recuerda que los datos en un campo de texto y/o fecha/hora van siempre entre comillas simples...

Saludos...
  #10 (permalink)  
Antiguo 02/02/2010, 12:00
 
Fecha de Ingreso: enero-2007
Mensajes: 35
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Update no funciona....

Gracias rfadgrmm, lo estoy verificando...
  #11 (permalink)  
Antiguo 02/02/2010, 12:06
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Update no funciona....

Hola Luxo

Cambia tu codigo por este.

Código PHP:
<?
if (isset($_POST['action']) && $_POST['action'] == 'edit')
{
    
$id_prod $_POST['id'];
    
$nombre_prod $_POST['nombre_prod'];
    
$descripcion_prod $_POST['descripcion_prod'];
    
$img_prod $_POST['img_prod'];
    
$categoria $_POST['categoria'];
    
$query "UPDATE producto SET id_prod='id', nombre_prod='nombre_prod', descripcion_prod='descripcion_prod', img_prod='img_prod', categoria='categoria' WHERE id_prod='$id'";
    
$result mysql_query($query) or die(mysql_error());

    echo 
"<div align=center>Producto Actualizado</div>";
    else
    echo 
"<div align=center>Producto No Actualizado</div>";
}

?>

Y tu formulario por este


Código HTML:
<form action="editar.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="id" value="<? echo $id; ?>">
<input type="hidden" name="action" value="edit">

Nombre Producto
<input type="text" name="nombre_prod" id="field_1" class="short" value="<?php echo $nombre_prod ?>" /> <br> 
Categoría <? echo $producto['cat']; ?><br> 
Descripción del Producto<br> 
<textarea name="descripcion_prod" rows="3" cols="3" id="field_4"><?php echo $descripcion_prod ?></textarea><br> 
<input name="archivo" type="file" class="casilla" id="archivo" size="35" /><br> 
<input name="enviar" type="submit" class="boton" id="enviar" value="Grabar" />
</form> 

Me dices como te fue
  #12 (permalink)  
Antiguo 03/02/2010, 10:30
 
Fecha de Ingreso: enero-2007
Mensajes: 35
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Update no funciona....

Pilucho gracias por tu gran ejemplo.... el problema que tengo ahora que me sobreescribe la categoria dejandola en 0.... por lo tanto oluego no aparece en la lista de productos.....

Nota: modifique un tanto tu ejemplo debido a que contenia un error.... esta editando bien .. gracias...

el codigo es:

Código PHP:
Ver original
  1. <?php include 'includes/config.php'; ?>
  2. <?
  3. if (isset($_POST['action']) && $_POST['action'] == 'edit')
  4. {
  5.     $id_prod = $_POST['id'];
  6.     $nombre_prod = $_POST['nombre_prod'];
  7.     $descripcion_prod = $_POST['descripcion_prod'];
  8.     $img_prod = $_POST['img_prod'];
  9.     $categoria = $_POST['categoria'];
  10.     $query = "UPDATE producto SET nombre_prod='$nombre_prod', descripcion_prod='$descripcion_prod', img_prod='$img_prod', categoria='$categoria' WHERE id_prod='$id'";
  11.     $result = mysql_query($query) or die(mysql_error());
  12.  
  13.     echo "<div align=center>Producto Actualizado</div>";
  14.  
  15. }
  16. else {    echo "<div align=center>Producto No Actualizado</div>";
  17. }
  18.  
  19. ?>
  20.  
  21. <?php
  22. if ( !empty($_GET['id']) ) {
  23. $query = "SELECT id_prod, nombre_prod, descripcion_prod, img_prod, categoria FROM producto WHERE id_prod = {$_GET['id']} limit 1";
  24. $response = mysql_query($query, $con);
  25. //$row = mysql_fetch_assoc($response);
  26.  
  27. while ($row = mysql_fetch_array($response))                
  28.     {
  29.         $id_prod=$row[0];
  30.         $nombre_prod= $row[1];
  31.         $descripcion_prod= $row[2];
  32.         $img_prod= $row[3];
  33.         $categoria= $row[4];
  34.     }
  35.  
  36. }
  37. ?>
Código HTML:
Ver original
  1. <div id="page-content" class="clearfix">
  2.            
  3.             <h1><?php echo "$nombre_prod" ?></h1>
  4.             <?php
  5.                             $cat=$_GET["id"];
  6.                             $result = mysql_query("SELECT id_cat,cat_nombre FROM categoria") or die("Could not connect: " . mysql_error());  
  7.                             $combo = "<select name=categoria>\n";
  8.                             while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
  9.                             {
  10.                                 $combo .= " <option value='".$row['id_cat'];
  11.                                 $combo .= "'>".$row['cat_nombre']."</option>\n";
  12.                     }
  13.                                 $combo .= "</select>\n";
  14.                    
  15.                     ?>
  16.             <h2>Edición de producto<span> <?php echo "$nombre_prod" ?></span> de Categoría </h2>
  17.             <div class="inner-box clearfix">
  18.            
  19.                 <?php include 'sidebar.php'; ?>
  20.            
  21.                 <div id="form-block">
  22.                     <form action="editar.php" method="POST" enctype="multipart/form-data">
  23.                     <input type="hidden" name="id" value="<? echo $id; ?>">
  24.                     <input type="hidden" name="action" value="edit">
  25.                    
  26.                     Nombre Producto
  27.                     <input type="text" name="nombre_prod" id="field_1" class="short" value="<?php echo $nombre_prod ?>" /> <br>
  28.                     Categoría
  29.                    
  30.                    
  31.                     <?php echo $combo; ?>
  32.                    
  33.                    
  34.                    
  35.                    
  36.                    
  37.                     Descripción del Producto<br>
  38.                     <textarea name="descripcion_prod" rows="3" cols="3" id="field_4"><?php echo $descripcion_prod ?></textarea><br>
  39.                     <input name="archivo" type="file" class="casilla" id="archivo" size="35" /><br>
  40.                     <input name="enviar" type="submit" class="boton" id="enviar" value="Grabar" />
  41.                     </form>
  42.  
  43.                 </div>
  44.            
  45.             </div>
  46.  
  47.            
  48.            
  49.                
  50.         </div>

Que error tendré o bien .. com opuedo asocial la categoria... al producto... son dos tablas una categoria y otra productos en la cual esta asociado el campo categoria al campo id de la tabla categorias.
  #13 (permalink)  
Antiguo 03/02/2010, 14:06
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Update no funciona....

Hola Luxo

Prueba de esta forma.

Código PHP:
<?php include 'includes/config.php'?>
<?
if (isset($_POST['action']))    $action $_POST['action'];
if (isset(
$_POST['id']))        $id = (int)$_POST['id'];
if (isset(
$_GET['id']))            $id = (int)$_GET['id'];
if (isset(
$_POST['id_cat']))    $id_cat = (int)$_POST['id_cat'];
if (isset(
$_GET['id_cat']))        $id_cat = (int)$_GET['id_cat'];

if (isset(
$_POST['action']) && $_POST['action'] == 'edit')
{
    
$id_prod $_POST['id'];
    
$nombre_prod $_POST['nombre_prod'];
    
$descripcion_prod $_POST['descripcion_prod'];
    
$img_prod $_POST['img_prod'];
    
$categoria $_POST['categoria'];
    
$query "UPDATE producto SET nombre_prod='$nombre_prod', descripcion_prod='$descripcion_prod', img_prod='$img_prod', categoria='$categoria' WHERE id_prod='$id'";
    
$result mysql_query($query) or die(mysql_error());
 
    echo 
"<div align=center>Producto Actualizado</div>";
 
}
else {    echo 
"<div align=center>Producto No Actualizado</div>";
}
 
?> 
 
<?php
if ( !empty($_GET['id']) ) {
$query "SELECT id_prod, nombre_prod, descripcion_prod, img_prod, categoria FROM producto WHERE id_prod = {$_GET['id']} limit 1";
$response mysql_query($query$con);
//$row = mysql_fetch_assoc($response);
 
while ($row mysql_fetch_array($response))                 
    {
        
$id_prod=$row[0];
        
$nombre_prod$row[1];
        
$descripcion_prod$row[2];
        
$img_prod$row[3];
        
$categoria$row[4];
    }
 
}
?>
Codigo HTML

Código PHP:
<div id="page-content" class="clearfix">
            
            <h1><?php echo "$nombre_prod" ?></h1>
            <?php
                            
if (isset($_GET['id']))    $id $_GET['id'];
                            
// $cat=$_GET["id"];
                            
$result mysql_query("SELECT id_cat,cat_nombre FROM categoria") or die("Could not connect: " mysql_error());  
                            
$combo "<select name=categoria>\n";
                            while (
$row mysql_fetch_array($resultMYSQL_ASSOC)) 
                            {
                                
$combo .= " <option value='".$row['id_cat'];
                                
$combo .= "'>".$row['cat_nombre']."</option>\n";
                    }
                                
$combo .= "</select>\n";
                    
                    
?> 
            <h2>Edición de producto<span> <?php echo "$nombre_prod" ?></span> de Categoría </h2>
            <div class="inner-box clearfix">
            
                <?php include 'sidebar.php'?>
            
                <div id="form-block">
                    <form action="editar.php" method="POST" enctype="multipart/form-data">
                    <input type="hidden" name="id" value="<? echo $id?>">
                    <input type="hidden" name="action" value="edit">
                    
                    Nombre Producto
                    <input type="text" name="nombre_prod" id="field_1" class="short" value="<?php echo $nombre_prod ?>" /> <br> 
                    Categoría 
                    
                    
                    <?php echo $combo?> 
                    
                    
                    
                    
                    
                    Descripción del Producto<br> 
                    <textarea name="descripcion_prod" rows="3" cols="3" id="field_4"><?php echo $descripcion_prod ?></textarea><br> 
                    <input name="archivo" type="file" class="casilla" id="archivo" size="35" /><br> 
                    <input name="enviar" type="submit" class="boton" id="enviar" value="Grabar" />
                    </form>
 
                </div>
            
            </div>
 
            
            
                
        </div>
Me dices como te fue

Etiquetas: update
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 11:06.