Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Update con POO y AJAX

Estas en el tema de Update con POO y AJAX en el foro de PHP en Foros del Web. Hola Gente, Saludos! Estoy con un problema desde ayer, no puedo actualizar los registros y no se porque. El alta y la eliminación la realizo ...
  #1 (permalink)  
Antiguo 12/12/2016, 09:51
 
Fecha de Ingreso: febrero-2012
Ubicación: Cancun
Mensajes: 79
Antigüedad: 12 años, 1 mes
Puntos: 0
Update con POO y AJAX

Hola Gente, Saludos!

Estoy con un problema desde ayer, no puedo actualizar los registros y no se porque. El alta y la eliminación la realizo con éxito, pero no así la actualización. (Clic en editar no hace nada!) Lo que si, no pude traer la variable mediante post en el delete, la tuve que traer como request, y honestamente no se porque.



Index:

Código HTML:
Ver original
  1. <script src="funciones-ajax.js" type="text/javascript"></script>  
  2. </head>
  3.  
  4.     <div id="formulario">
  5.  
  6.       Codigo <br/><input id="codigo" type="text" /><br/><br/>
  7.       Producto <br/><input id="producto" type="text" /><br/><br/>
  8.       Descripcion <br/><input id="descripcion" type="text" /><br/><br/>      
  9.       Precio <br/><input id="precio" type="text" /><br/><br/>                  
  10.       <input type="button" onclick="altaDatos();" value="Enviar"/>
  11.  
  12.     </div>
  13.  
  14.     <div id='resultado'></div>
  15.     <script type="text/javascript">mostrarDatos();</script>

clase, productos.php

Código PHP:
producto.php

[PHP]<?php
class Producto{
    private 
$db;
    public function 
__construct(){
        
$this->db = new Database();
        }
    
    public function 
__destruct(){
        
$this->db=null;
        }
    
    public function 
getproductos(){
        return 
$this->db->query("select * from productos order by codigo desc");
        }
    
    public function 
insertproductos($codigo,$producto,$descripcion,$precio){
        
$this->db->query("insert into productos (codigo, producto, descripcion, precio) values ($codigo, '$producto', '$descripcion', $precio)");
        } 

    public function 
updateproductos($codigo,$producto,$descripcion,$precio){
        
$this->db->query("update productos set codigo = $codigo, producto = $producto, descripcion = $descripcion, precio = $precio where codigo = $codigo");
        } 

    public function 
eliminarproductos($codigo){
        
$this->db->query("delete from productos where codigo = $codigo");
        }
    
        
    }
?>
[/PHP]

funciones-ajax.js

Código Javascript:
Ver original
  1. // JavaScript Document
  2. function objetoAjax(){
  3.     var xmlhttp=false;
  4.     try {
  5.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  6.     } catch (e) {
  7.         try {
  8.            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  9.         } catch (E) {
  10.             xmlhttp = false;
  11.         }
  12.     }
  13.  
  14.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  15.         xmlhttp = new XMLHttpRequest();
  16.     }
  17.     return xmlhttp;
  18. }
  19.  
  20. function mostrarDatos(){
  21.     //donde se mostrará el resultado de los productos
  22.     divResultado = document.getElementById('resultado');
  23.    
  24.     //instanciamos el objetoAjax
  25.     ajax=objetoAjax();
  26.     //usamos el medoto POST
  27.     //archivo que realizará la operacion consulta.php
  28.     ajax.open("POST", "consulta.php",true);
  29.     ajax.onreadystatechange=handler_usuario;
  30.     ajax.send()
  31.        
  32.     function handler_usuario() {
  33.         if (ajax.readyState==4) {
  34.             //mostrar resultados de la consulta a la tabla de productos
  35.             divResultado.innerHTML = ajax.responseText;
  36.         }
  37.     }  
  38. }
  39.  
  40.  
  41.  
  42. function altaDatos(){
  43.     //obtengo los valores de los campos de input del formulario
  44.     codigo = document.getElementById('codigo').value;
  45.     producto = document.getElementById('producto').value;
  46.     descripcion = document.getElementById('descripcion').value;
  47.     precio = document.getElementById('precio').value;
  48.    
  49.     //instanciamos el objetoAjax
  50.     ajax=objetoAjax();
  51.     //usamos el medoto POST
  52.     //archivo que realizará la operacion alta.php
  53.     ajax.open("POST", "alta.php",true);
  54.     ajax.onreadystatechange=handler_usuario;
  55.    
  56.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  57.     //enviando los valores
  58.     ajax.send("codigo="+codigo+"&producto="+producto+"&descripcion="+descripcion+"&precio="+precio)
  59.  
  60.         function handler_usuario() {
  61.         if (ajax.readyState==4) {
  62.             //blanqueo los campos del formulario
  63.             document.getElementById('codigo').value='';
  64.             document.getElementById('producto').value='';
  65.             document.getElementById('descripcion').value='';
  66.             document.getElementById('precio').value='';
  67.  
  68.             //actualizo el listado de productos para mostrar el ultimo insertado
  69.             mostrarDatos();
  70.         }
  71.     }
  72. }
  73.  
  74.  
  75.  
  76. function modificarDatos(){
  77.     //obtengo los valores de los campos de input del formulario
  78.     codigo = document.modificar.codigo.value;
  79.     producto = document.modificar.producto.value;
  80.     descripcion = document.modificar.descripcion.value;
  81.     precio = document.modificar.precio.value;
  82.    
  83.     //instanciamos el objetoAjax
  84.     ajax=objetoAjax();
  85.     //usamos el medoto POST
  86.     //archivo que realizará la operacion alta.php
  87.     ajax.open("POST", "modificar2.php",true);
  88.     ajax.onreadystatechange=handler_usuario;
  89.    
  90.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  91.     //enviando los valores
  92.     ajax.send("codigo="+codigo+"&producto="+producto+"&descripcion="+descripcion+"&precio="+precio)
  93.  
  94.     function handler_usuario() {
  95.         if (ajax.readyState==4) {
  96.             //blanqueo los campos del formulario
  97.             document.getElementById('codigo').value='';
  98.             document.getElementById('producto').value='';
  99.             document.getElementById('descripcion').value='';
  100.             document.getElementById('precio').value='';
  101.  
  102.             //actualizo el listado de productos para mostrar el ultimo insertado
  103.             mostrarDatos();
  104.         }
  105.     }
  106. }  
  107.  
  108.  
  109.  
  110. function eliminarDatos(){
  111.     //obtengo los valores de los campos de input del formulario
  112.     codigo = document.getElementById('codigo').value;
  113.    
  114.     //instanciamos el objetoAjax
  115.     ajax=objetoAjax();
  116.     //usamos el medoto POST
  117.     //archivo que realizará la operacion alta.php
  118.     ajax.open("POST", "eliminar.php",true);
  119.     ajax.onreadystatechange=handler_usuario;
  120.    
  121.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  122.     //enviando los valores
  123.     ajax.send("codigo="+codigo)
  124.    
  125.     function handler_usuario() {
  126.         if (ajax.readyState==4) {
  127.             //blanqueo los campos del formulario
  128.             document.getElementById('codigo').value='';
  129.  
  130.             //actualizo el listado de productos para mostrar el ultimo insertado
  131.             mostrarDatos();
  132.         }
  133.     }  
  134. }

alta.php

Código PHP:
<?php
require ('core/core.php');

    
$producto = new Producto();
    
$productos $producto->insertproductos($_POST['codigo'],$_POST['producto'],$_POST['descripcion'],$_POST['precio']);
    

?>
consulta.php

Código PHP:
<?php

require ('core/core.php');
echo 
'<table width="700" border=1>';
echo 
'<tr>
        <td>Codigo</td>
        <td>Producto</td>
        <td>Descripcion</td>
        <td>Precio</td>
      </tr>'
;    
    
$producto = new Producto();
    
$productos $producto->getproductos();
    foreach (
$productos as $unproducto){
          echo 
'<tr>
            <td>'
.$unproducto['codigo'].'</td>
            <td>'
.$unproducto['producto'].'</td>
            <td>'
.$unproducto['descripcion'].'</td>
            <td>'
.$unproducto['precio'].'</td>
            <td><a href="modificar.php?codigo='
$unproducto['codigo'].'">Editar</a></td>
            <td><a href="eliminar.php?codigo='
$unproducto['codigo'].'">Eliminar</a></td>            

          </tr>'
;
    }
    echo 
'</table>';

    

?>
eliminar.php

Código PHP:
<?php
require ('core/core.php');

    
$producto = new Producto();
    
$productos $producto->eliminarproductos($_REQUEST['codigo']);
    

?>
modificar.php

Código PHP:
<script src="funciones-ajax.js" type="text/javascript"></script>   
</head>
<body>

<?php
$codigo 
'';
$codigo $_GET["codigo"];

$mysql=new mysqli("localhost","root","","carro_compras");

$registro=$mysql->query("select codigo, producto, descripcion, precio from productos where codigo='$codigo'") or
      die(
$mysql->error);

     if (
$reg=$registro->fetch_array()){


?>

<div id="modificar">

         Codigo <br/><input id="codigo" type="text" value="<?php echo $reg['codigo']; ?>"><br/><br/>
         Producto <br/><input id="producto" type="text" value="<?php echo $reg['producto']; ?>"><br/><br/> 
         Descripcion <br/><input id="descripcion" type="text" value="<?php echo $reg['descripcion']; ?>"><br/><br/>      
         Precio <br/><input id="precio" type="text" value="<?php echo $reg['precio']; ?>"><br/><br/>                  
      <input type="button" onclick="modificarDatos();" value="Enviar"/>

</div>

  <?php
    
}      
    else{

      echo 
'No existe un artículo con dicho código';
  }
    
    
$mysql->close();



  
?>
modificar2.php

Código PHP:
<?php
require ('core/core.php');

    
$producto = new Producto();
    
$productos $producto->updateproductos($_POST['codigo'],$_POST['producto'],$_POST['descripcion'],$_POST['precio']);


?>
  #2 (permalink)  
Antiguo 12/12/2016, 10:06
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Update con POO y AJAX

Hola agustinpak,

A simple vista, lo que está muy claro es que no puedes recibir la variable por POST porque la estás enviando por GET:

Código PHP:
Ver original
  1. <a href="eliminar.php?codigo='. $unproducto['codigo'].'">Eliminar</a>

Ahora no puede analizarlo con más detenimiento, pero puede que sea solo eso...
  #3 (permalink)  
Antiguo 12/12/2016, 10:08
 
Fecha de Ingreso: febrero-2012
Ubicación: Cancun
Mensajes: 79
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Update con POO y AJAX

Gracias por responder Ruben!

Si, seguro que es así. Pero me estoy dando cuenta que para eliminar la fila apunto directamente a la consulta, y no a la función como quiero. Debería de poner un boton onclick supongo pero ya lo intente y no me sale.

Asi como lo hago con el alta, es lo que intento hacer con la actualización y eliminación.

Gracias!
  #4 (permalink)  
Antiguo 12/12/2016, 13:43
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Update con POO y AJAX

Hola agustinpak,

Cierto, y no te olvides de añadirle una confirmación para evitar posibles errores.

Es posible que la el llamar a la función no te salga porque la función le estás mandando por POST:

Cita:
Iniciado por agustinpak Ver Mensaje
Código Javascript:
Ver original
  1. // JavaScript Document
  2. function eliminarDatos(){
  3.     //obtengo los valores de los campos de input del formulario
  4.     codigo = document.getElementById('codigo').value;
  5.    
  6.     //instanciamos el objetoAjax
  7.     ajax=objetoAjax();
  8.     //usamos el medoto POST
  9.     //archivo que realizará la operacion alta.php
  10.     ajax.open("POST", "eliminar.php",true); //<------------------------------------
  11.     ajax.onreadystatechange=handler_usuario;
  12.    
  13.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  14.     //enviando los valores
  15.     ajax.send("codigo="+codigo)
  16.    
  17.     function handler_usuario() {
  18.         if (ajax.readyState==4) {
  19.             //blanqueo los campos del formulario
  20.             document.getElementById('codigo').value='';
  21.  
  22.             //actualizo el listado de productos para mostrar el ultimo insertado
  23.             mostrarDatos();
  24.         }
  25.     }    
  26. }
  #5 (permalink)  
Antiguo 12/12/2016, 23:56
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 4 meses
Puntos: 91
Respuesta: Update con POO y AJAX

Para actualizar, recuerda que el texto lleva comillas, los numeros no ;)
Código PHP:
Ver original
  1. public function updateproductos($codigo,$producto,$descripcion,$precio){
  2.         $this->db->query("update productos set codigo = $codigo, producto = $producto, descripcion = $descripcion, precio = $precio where codigo = $codigo");
  3.         }

Prueba poniendole comillas y me cuentas ;)
Código PHP:
Ver original
  1. public function updateproductos($codigo,$producto,$descripcion,$precio){
  2.         $this->db->query("update productos set codigo = $codigo, producto = '$producto', descripcion = '$descripcion', precio = '$precio' where codigo = $codigo");
  3.         }
  #6 (permalink)  
Antiguo 16/01/2017, 19:12
 
Fecha de Ingreso: febrero-2012
Ubicación: Cancun
Mensajes: 79
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Update con POO y AJAX

Gracias y mil disculpas por no contestar! En su momento lo solucione, junto a sus indicaciones. Gracias y disculpas nuevamente.

Saludos!!
  #7 (permalink)  
Antiguo 17/01/2017, 12:05
 
Fecha de Ingreso: febrero-2011
Mensajes: 85
Antigüedad: 13 años, 1 mes
Puntos: 3
Respuesta: Update con POO y AJAX

Buenas tardes una pregunta

Por que solo evaluas :

readyState==4

Yo en mi caso evaluo también:

status==200

Saludos cordiales

Etiquetas: ajax, formulario, html, mysql, poo, registro, select, tabla, update, variable
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 15:23.