Skip to content

Como modificar con php y mysql, sin afectar TODOS los registros

diciembre 28, 2010

Si  tienes la necesidad de modificar un registro que has consultado anteriormente y que NO se modifiquen todos los registros de la tabla, si no solo aquel que requiere la modificación. Y aún no has encontrado el código correcto para dicha tarea, pues este artículo es tu SOLUCIÓN, léelo completo y práctica en el ejemplo para que aprendas a realizarlo tu mismo. 

La mayoría de las bases de datos requieren tener una rutina de código que les permita actualizar  datos que han sido guardados sin tener que eliminar todo el registro para luego recapturarlo con los datos nuevos, por ejemplo, pensemos en una tienda que requiere actualizar el precio de X producto, SOLO el precio y SOLO de ese producto, entonces ejecutamos una consulta que nos devuelva los datos de ese producto y luego ejecutamos una acción que nos MODIFIQUE solo el registro que deseamos. 

O bien, si en un base de datos de una escuela un alumno se dio de baja temporal, necesitas modificar su status de activo a baja temporal y esto solo aplica para el alumno en cuestión no para todos los alumnos, igual primero ejecutamos una consulta que devuelva esos datos para luego ejecutar una acción que permita ACTUALIZAR ese registro.

Bueno, te explico con un ejemplo:

Primero: Voy a utilizar una base de datos llamada tienda, y esta tiene una tabla llamada productos con los siguientes campos id, nombre, existencia, p_compra, p_venta.

Segundo: Necesitas programar la consulta que devuelve los registros de la tabla agregándole la opción de modificar o eliminar. Para que de un resultado como el que se ve en la siguiente imagen.

El código quedaría como el del archivo que llame “consulta.php” y puedes descargar de aquí.

Tercero: Ahora el código que ejecuta la acción ya sea de modificar  o eliminar el o los registros que necesitas afectar. Aquí te pongo la parte del código que ejecuta la acción:

switch($opcion){

/*generamos la sentencia para la modificación filtrando por el id para que solo cambie ese registro*/

                case ‘modifica’:$sql=”UPDATE productos SET

                                      nombre='”.$_POST[‘nombre’][$indice].”‘,

                                       existencia=”.$_POST[‘existencia’][$indice].”,

                                       p_compra=”.$_POST[‘p_compra’][$indice].”,

                                       p_venta=”.$_POST[‘p_venta’][$indice].”

                                WHERE id=”.$_POST[‘id’][$indice];break;

                case ‘elimina’:$sql=”DELETE FROM productos WHERE id=”.$_POST[‘id’][$indice];break;

                default: echo “<center>NO HAY NADA SELECCIONADO</center>”; break;

}

$result = mysql_query($sql);

Para que veas el código completo puedes descargar el archivo “ejecuta.php desde aquí.

Como siempre tratando de escribir artículos que sean de tu interés, pero sobretodo te sean de UTILIDAD, espero tus comentarios para saber darle rumbo a los próximos artículos, dime que te gustaría aprender o que se te dificulta ahora que quieres aprender a programar en php.

Atte, tu amigo
Salvador López

Anuncios

From → bases de datos, Tips

18 comentarios
  1. ibra permalink

    ME PODEIS AYUDAR CON ESTO POR FAVOR.

    foreach ($_POST[‘seleccion’] as $indice => $valor){
    //Vamos a verificar si trae la opcion de eliminar o modificar
    $opcion = substr ($_POST[‘seleccion’][$indice],0,-1); //extraemos la parte de la cadena que elimina y/o modifica
    switch($opcion){
    //generamos la sentencia para la modificación filtrando por el id para que solo cambie ese registro
    case ‘modifica’:$sql=”UPDATE productos SET
    id='”.$_POST[‘id’][$indice].”‘,
    nom=”.$_POST[‘nom’][$indice].”,
    descripcio=”.$_POST[‘descripcio’][$indice].”,
    categoria=”.$_POST[‘categoria’][$indice].”
    preu=”.$_POST[‘preu’][$indice].”
    imatge=”.$_POST[‘imatge’][$indice].”
    WHERE id=”.$_POST[‘id’][$indice];

    break;
    case ‘elimina’:$sql=”DELETE FROM productes WHERE id=”.$_POST[‘id’][$indice];break;
    default: echo “NO HAY NADA SELECCIONADO”; break;
    }
    $sql = “SELECT * FROM productes”;
    $resultado = mysql_query($sql);
    if (! $resultado ){die (“ERROR AL EJECUTAR LA CONSULTA “.$_POST[‘seleccion’].”:”.mysql_error());}
    else{
    echo “FELICIDADES SENTENCIA EJECUTADA CORRECTAMENTE
    Volver al panel“;
    }
    }
    ?>

    RESULTADO:
    NO HAY NADA SELECCIONADO
    FELICIDADES SENTENCIA EJECUTADA CORRECTAMENTE

  2. Para resolver el problema en la cual solo permite modificar los primeros 9 registros:

    foreach ($_POST[‘seleccion’] as $indice => $valor){
    if(strlen($valor)== 9){
    $opcion = substr ($_POST[‘seleccion’][$indice],0,-1);
    }else if(strlen($valor)== 10){
    $opcion = substr ($_POST[‘seleccion’][$indice],0,-2);
    }else if(strlen($valor)== 11){
    $opcion = substr ($_POST[‘seleccion’][$indice],0,-3);
    }

    /*El detalle esta en la extraccion del tipo de operacion [modificar o eliminar]*/

    switch($opcion){
    case ‘modifica’: ….

    //Espero que les sirva o puede que sea demasiado tarde.

  3. James permalink

    Como pudiera insertar nuevos registros a la base de datos usando este mismo formato??

  4. Franciszek permalink

    A pesar que tiene 2 años publicado Voy a dar una solución al problema que nos generò a todos por igual este código, que por cierto está excelente solo que falto un ‘, en las variables del archivo ejecuta.php para que funcione bueno a mi me lo soluciono nada mas hacer eso…

    Esto es parte del codigo original que está posteado donde vi la pequeña falla:

    nombre=’”.$_POST[‘nombre’][$indice].”‘,
    existencia=”.$_POST[‘existencia’][$indice].”,

    Si se fijan, nombre=’ , aqui tiene una ‘ comilla al principio y al final, los demás no la tienen al principio y al final, sin querer se le pasó a nuestro amigo, pero de resto todo el código funciona a la perfección al corregir la falta de estas comillas, para solucionarlo mas rapido: Copien la primera linea osea esta: nombre=’”.$_POST[‘nombre’][$indice].”‘, que es la que esta buena varias veces, y van remplazando las variables por las que usan y ya, el sistema corre bien…

    Ahora posteo mi problema:

    El problema que tengo que de la 6ta linea en adelante al marcar o modificar la base de datos y darle a cualquiera de la opcion “modificar o eliminar” me dice: “NO HAY NADA SELECCIONADO, UNIDEFINED VARIABLE SQL,

    ERROR AL EJECUTAR LA CONSULTA Array:Query was empty

    pero las primeras 5 me lo hace sin problemas, cualquier cosa que le haga modificar o eleiminar cualquier campo, pero el resto de los campos de la tabla a modificar me marca este error.

    Ya me partí la cabeza analizando quien de los dos archivos tiene la culpa y no di con la falla…

    Si alguien es tan amable y postear aqui donde tengo el erroro en donde esta , para yo corregirlo seria de mucha ayuda ya que es mi programa de tesis de graduacion y esta casi listo, este es uno de los pocos detalles que tiene.

    Si alguien es tan amable se lo agardeceré. igual al moderador si lo logra leer…

    Gracias, y te felicito por el codigo no tienes ideas en cuantos casos como este me ha ayudado tu codigo y de paso es el mejor que he conseguido hasta ahora, por su simplicidad, funcionamiento, es sencillamente excelente… gracias por el aporte…

  5. cecilia Martinez permalink

    Hola chicos tengo un problema con unos codigos de modificar… los revise mil veces pero no me sale… me podrian dar un email o contacto para yo poder mandarles mi problema y poder saber cual es mi error.. mil gracias

  6. JesuBaez permalink

    Buenas noches programarenphp:

    Tengo el mismo problema que casi todos aqui “ERROR AL EJECUTAR LA CONSULTA Array:Query was empty” y “NO HAY NADA SELECCIONADO”.

    por lo que veo esto me ocurre cuando voy a tratar de modificar o eliminar cualquier registro que sea su id mayor a 9.

    Ejecuta::
    $valor){
    //Vamos a verificar si trae la opcion de eliminar o modificar
    $opcion = substr ($_POST[‘seleccion’][$indice],0,-1); //extraemos la parte de la cadena que elimina y/o modifica
    switch($opcion){
    //generamos la sentencia para la modificación filtrando por el id para que solo cambie ese registro
    case ‘modifica’:$sql=”UPDATE productos SET
    nombre='”.$_POST[‘nombre’][$indice].”‘,
    existencia=”.$_POST[‘existencia’][$indice].”,
    p_compra=”.$_POST[‘p_compra’][$indice].”,
    p_venta=”.$_POST[‘p_venta’][$indice].”
    WHERE id=”.$_POST[‘id’][$indice];break;
    case ‘elimina’:$sql=”DELETE FROM productos WHERE id=”.$_POST[‘id’][$indice];break;
    default: echo “NO HAY NADA SELECCIONADO”; break;
    }
    echo “Variable sql: “.$ ;
    $resultado = mysql_query($sql);
    if (! $resultado ){die (“ERROR AL EJECUTAR LA CONSULTA “.$_POST[‘seleccion’].”:”.mysql_error());}
    else{
    echo “FELICIDADES SENTENCIA EJECUTADA CORRECTAMENTE
    Volver al panel“;
    }
    }
    ?>

    Consulta::::

    <?php
    /* https://programarenphp.wordpress.com
    primero creamos nuestra conexion tanto con el
    mysql, como con la base de datos, recuerda que
    el nombre del host, del user y del pass los
    debes de cambiar por los de tu configuración*/

    $con = mysql_connect("localhost","root","");
    if (! $con){die ("ERROR EN LA CONEXION CON MYSQL: ".mysql_error());}

    $base = mysql_select_db ("test",$con);
    if(! $base){die ("ERROR AL CONECTAR CON LA BASE DE DATOS: ".mysql_error());}

    /********************************************/
    /* Luego vamos a obtener todos los datos que esten contenidos
    en la tabla con una consulta */
    $sql = "SELECT * FROM productos";

    $resultado = mysql_query($sql);
    /*ahora creamos la tabla en html para mostrar los resultados
    agregandole un par de botones de radio */
    echo "
    MODIFICAR Y/O ELIMINAR

    IdNombreExistenciaPrecio CompraPrecio VentaModificarEliminar”;
    $i = 0 ; //iniciamos nuestro cont en cero
    /*el siguiente bucle nos permite obtener la informacion obtenida
    de la ejecución de la sentencia de sql */
    while ($row = mysql_fetch_row($resultado)){
    echo “”.$row[0].”



    “;$i++;
    }
    echo “”;
    ?>

  7. Karina permalink

    hola! tu ejemplo me gusto mucho y lo inteten ejecutar pero me sale este error
    NO HAY NADA SELECCIONADO

    Notice: Undefined variable: sql in ejecuta.php on line 33
    Variable sql:
    Notice: Undefined variable: sql in ejecuta.php on line 34
    ERROR AL EJECUTAR LA CONSULTA Array:Query was empty

    yo lo ejecuto directamente desde consulta y selecciono un registro a ver si lo borra y es lo que sale podrias ayudarme a solucionar el problema, que crees que pueda se el problema???

  8. moises permalink

    a mi también me aparece el mismo error mencionado mas arriva:
    Variable sql: ERROR AL EJECUTAR LA CONSULTA Array:Query was empty
    voy a ver si es que lo puedo arreglar ya que se ve interesante… saludos.

  9. brendithaa permalink

    hola
    a mi me sale este erro

    NO HAY NADA SELECCIONADO
    Variable sql: ERROR AL EJECUTAR LA CONSULTA Array:Query was empty

    es todo lo que me dice

    • Necesito saber si le hiciste alguna modificación al código original, o bien, asegurate de seleccionar algún registro antes de dar click en el botón de aceptar. Dame un poco mas de información y con mucho gusto te ayudo a resolver el problema

  10. herbert permalink

    PORQUE

    • Hola Herbert, con mucho gusto te ayudo, pero necesitaría ver el código con el que quieres modificar. Si gustas mándame el código al e-mail que esta en contáctenos y la consulta y en un lapso por lo regular no mayor a 72horas te contesto, sale.

  11. herbert permalink

    pero cuando lee varias páginas sólo se pueden modificar algunas filas y lo demás no lo modifica. ???

  12. pittuk permalink

    saludos amigo muy útil pero el link de ejecuta.php esta roto, podrías enviármelo al correo o corregir la dirección, gracias por tu ayuda

    • pittuk permalink

      disculpa no había revisado q el tienda.rar contenía los dos archivos, pero ahora tengo un problema, disculpa la insistencia pero soy nuevo en esto del php y tu articulo me pareció bastante sencillo, fíjate el error q me da ejecuta.php:

      NO HAY NADA SELECCIONADO

      Notice: Undefined variable: sql in ejecuta.php on line 33
      Variable sql:
      Notice: Undefined variable: sql in ejecuta.php on line 34
      ERROR AL EJECUTAR LA CONSULTA Array:Query was empty

      en mi codigo esto es lo q hay en la linea 33 y 34:
      echo “Variable sql: “.$sql;
      $resultado = mysql_query($sql);

      gracias de ante mano

      • Hola pittuk, la variable “$sql” debe contener la consulta de lo que quieres realizar en esa base de datos, por ejemplo, si vas a consultar todos los registros de una tabla llamada productos, debería verse el código así;

        $sql = “SELECT * FROM productos”;

        porque el error que dice hay en la linea 33 es que no esta definida la variable “$sql”, es decir no tiene asignado nada. Luego el error de linea 34 es porque no hay sentencia de SQL que ejecutar, si ves es el mismo error.

        Ahora si abres directamente en el explorador el archivo de “ejecuta.php” no va a funcionar porque este debe ser llamado por el archivo “consulta.php” que contiene un formulario y es el que le envía los datos con los que va a trabajar “ejecuta.php”, es decir, abre “consulta.php” en el explorador, seleccionas el que quieres modificar y/o eliminar das click en el botón y te va a mandar al archivo “ejecuta.php”. Espero haberme explicado….

  13. Joel permalink

    Hola que tal Salvador, disculpa por haber tardado mucho en responderte, te agradesco mucho al verme respondido la duda y al parecer ya me diste una solucion al problema que tenia, muchas gracias.Y que pases un feliz año nuevo. : )

    • Sipi este articulo lo realice esperando darte respuesta, espero y encuentres la solución que buscas e igualmente feliz año nuevo para ti y tu familia.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: