Actualizar varios campos y registros de una tabla en mysql en una sola consulta

Bienvenidos a Ver Tutoriales.com en esta ocasión voy a aclarar una duda enviada por Jacky.

En el correo me preguntaba como podía actualizar varios campos en una misma consulta con PHP utilizando Mysql para ahorrarse el tener que enviar diferentes consultas a la base de datos y de esa manera lanzar solo una y optimizar la aplicación.

Antes de nada aclarar, que PHP es un lenguaje y MySQL un servidor de base de datos, por lo que la consulta que vamos a implementar es útil para cualquier lenguaje que ataque a dicha base de datos. Es decir, PHP es la herramienta con la que atacamos a esa base de datos, pero la sentencia SQL es propia del lenguaje de la base de datos, en este caso MySQL.

Una vez hecha la aclaración continuemos con la respuesta, que como veréis es muy sencilla. A diferencia de la  consulta simple que sería de esta manera:

UPDATE tabla SET campo = ‘valor’ WHERE condición

Actualizamos utilizando dos valores de esta otra manera

UPDATE tabla SET campo = ‘valor’, campo2 = ‘valor2′ WHERE condición

Así de sencillo, puedes poner tantos campos como quieras siempre y cuando los tenga la tabla, y la condición que  quieras poner, si es que no quieres actualizar la tabla completa.

Espero que os resuelva la duda a más de uno!

Un saludo!

Te puede interesar:

45 comentarios

  • retwert commented on 22 junio, 2011 Reply

    NO SIRVE, a ver si pones bien el título, ¿varios registros a la vez? ¿sabes lo que son los registros en una tabla?

  • yomerenguez commented on 11 octubre, 2011 Reply

    No sirve, el título es engañoso.
    lo que se sugiere con él es actualizar varios registro con una sola sentencia

    • VideoTutoriales commented on 11 octubre, 2011 Reply

      Yomerenguez, si realizas la siguiente consulta:

      UPDATE artículos SET iva = ’18’, dto = ‘5’ WHERE familia = “colchones”

      Actualizará todos los registros de la tabla artículos con el iva al 18 y el dto con un 5 donde el campo familia sea igual a colchones, es decir, Actualizar varios campos y registros de una tabla en mysql en una sola consulta es lo que hace la linea de MySQL anterior.

      Sino ha resuelto la duda que ibas buscando puedes preguntar y gustosamente te daremos solución.

      Un saludo!

  • sdgsdg commented on 19 octubre, 2011 Reply

    y como carajos actualizo 58 registros de 1 sola columna?

  • VideoTutoriales commented on 20 octubre, 2011 Reply

    La consulta anterior
    UPDATE artículos SET iva = ’18′ WHERE familia = “colchones”

    Actualizaría 1, 58 o 1000 registros siempre y cuando cumpla la condición de que la familia = “colchones”

    Si solo tiene una columna, puedes modificar el where para que sea sobre esa columna u omitirla para que modifique todos los registros, es decir:

    Pongamos que tenemos la columna “jaula” y en ella guardamos diferentes animales, gatos, perros y ratones. y queremos que todos los perros sean loros pues sería algo así:

    UPDATE animales SET jaula = ’loro′ WHERE jaula = ‘perro';

    En este ejemplo, animales es la tabla, suponemos que tenemos solo la columna jaula y que contiene un string que guarda una especie de animal, entre ellos perro que a partir de la consulta anterior se modificará a loro.

    Espero que esté más claro tr.

    Un saludo!

  • Javier Garcia commented on 11 mayo, 2012 Reply

    Que idiotes, varios registros, no varios CAMPOS! que titulo tan mal puesto

    • VideoTutoriales commented on 12 mayo, 2012 Reply

      Quizás debieras de repasar términos:

      Un registro es un conjunto de campos que contienen los datos que pertenecen a una misma repetición de entidad.

      Si lo que buscas es modificar el nombre del campo o columna, o si quieres añadir nuevos campos, también estaría correcto utilizar el término.

      Un saludo!

  • avispa commented on 3 junio, 2012 Reply

    Animo, el javier garcia no tiene ni @#~€ idea, muchas gracias por los tutoriales

    • VideoTutoriales commented on 4 junio, 2012 Reply

      Gracias Avispa

      Seguiremos formando, así que invitado estás a compartir también tus conocimientos! :)

  • alfred commented on 20 junio, 2012 Reply

    pregunta, similar a la anterior , como se puede actualizar distintos campos si la condicion para cada campo es diferente,

    ejemplo
    tabla registros

    id nombre
    1 cualquiera
    2 otro diferente
    3 distinto a los otros dos

    se desea actualizar los nombres, se puede hacer en un solo update?

    • VideoTutoriales commented on 20 junio, 2012 Reply

      Si hablamos de diferentes condiciones, como es comprensible, cada WHERE actuará sobre su condición (esto para la clausula UPDATE, DELETE y SELECT) y actualizará todos los campos que cumplan esa condición. Condición que puede incluir varias condiciones por supuesto.

      En el caso que expones, se podrían modificar TODOS los nombres sin condición (actualizaría todos los registros) o los que cumplieran el WHERE.

      Actualmente no conozco ninguna sentencia que realice lo que estás indicando (al menos en mysql). Si quieres actualizar diferentes registros con diferentes condiciones, tendrás que ejecutar una sentencia para cada actualización.

      Os dejo la documentación de MySQL que es el gestor que utilizo:
      http://dev.mysql.com/doc/refman/5.0/es/update.html

      Si existe en otro lo desconozco, pero si alguien lo sabe, creo que más de uno estaría interesado.

  • Daniel commented on 25 julio, 2012 Reply

    en un inventario como actualizo un registro y rebajo la existencia al mismo tiempo, es posible en mysql ??

    • VideoTutoriales commented on 25 julio, 2012 Reply

      Es posible actualizar varios campos de un registro, solo hay que añadir una operación de decremento a uno de ellos.

      UPDATE tabla SET campo = ‘valor’, campo2 = campo2 – 1 WHERE condición

  • carlos commented on 16 octubre, 2012 Reply

    Pregunta: tengo una base de datos para una caja de ahorro la cual debo actualizar mensualmente el campo del acumulado ( que parte de la multiplicacion del sueldo del empleado por los meses). el mismo sera diferente para cada afiliado(Por supuesto no todos ganan igual) puedo sumar y sustituir el valor en los campos tomando en cuenta que no todos los afiliados tienen el mismo aporte a la caja de ahorro e logrado actualizar pero el valor que me toma es el mismo para todos los registros de los campos. trabajo con PHP espero entiendas, gracias de antemano.

    • VideoTutoriales commented on 16 octubre, 2012 Reply

      Me gustaría ayudarte, pero no termino de comprender lo que quieres hacer, expón mejor los campos que tienes en la tabla y lo que quieres lograr.

      Un saludo!

  • Eduardo commented on 23 noviembre, 2012 Reply

    bonito el codigo, pero como me sirve para editar a mi gusto un registro de bases de datos por pantalla/pagina web de usuario? ahi veo que solo permite editarlos por medio de codigo, y no de usuario como se requiere en verdad, osea que el codigo no cumple las exigencias requeridas para el titulo del post, porque no da muestra de donde podria editar el usuario, solo el programador.

    • VideoTutoriales commented on 25 noviembre, 2012 Reply

      Creo que la crítica está basada en el desconocimiento.

      ¿Qué es lo que quieres hacer? Las modificaciones han de ser atacadas desde código, otra cosa es que le pidas los datos entrantes a un usuario (lo normal de una aplicación) y luego realices la modificación desde código.

      La magia no existe en el mundo lógico :)

  • Mariza commented on 29 noviembre, 2012 Reply

    Como actualizar los campos de una tabla dependiendo de dos parametros seleccionados de un combo box

  • VideoTutoriales commented on 29 noviembre, 2012 Reply

    Hola Mariza, tal y como expones solo tienes que controlar o por combo.listindex o combo.text y según tengas montar la SQL que ataque a la base de datos.

    Un saludo!

  • Mariza commented on 29 noviembre, 2012 Reply

    Al seleccionar el combo me carga en una grilla los datos que tengo almacenados en la base de datos, a estos los modifico y quiero guardar los cambios, como logro hacerlo si los datos que escojo del combox son dos parámetros unidos y que al cargar la tabla debo validar que guarde sobre los valores de este parametro, después de haberlos convertido en int y char (Ej: 2012 – Agencia)

  • VideoTutoriales commented on 29 noviembre, 2012 Reply

    Si los has unido, tendrás que separarlos, si sabes que están separados por un guión “-” podrás utilizar split

    http://www.vertutoriales.com/index.php/split-en-visual-basic-6-vb6-y-explode-en-php/

    Una vez tengas el array ya solo se trata de actualizarlos con update

  • Maritza commented on 29 noviembre, 2012 Reply

    * Parametro:
    @AñoAgencia =
    SELECT añoAgencia=convert(char(4),a.año) + ‘ – ‘ + b.Agencia_Nombre
    from Opita.dbo.AñoAgencia_Calendario a
    inner join Opita.Nomina.Agencia b on a.agencia=b.Agencia_Codigo
    and a.Laboral_Pago=’L’ and a.diligenciado=0
    group by año,Agencia_Nombre

    (@AñoAgencia char(30))

    * Convert:
    declare @Año int
    declare @Agencia int
    set @Año = convert(int,substring(@AñoAgencia,1,4))
    set @Agencia = (select agencia from opita.dbo.AñoAgencia_Calendario
    where nombreAgencia=substring(@AñoAgencia,8,(len(@AñoAgencia)-7)))

    * Campos De La Tabla:
    @Año,@Agencia,Mes,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,Nombre,Fecha_Creacion

    ¿Como Guardo La Actualizacion Que Se Le Hace En Un Datagridview A Los Campos d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31,Nombre,Fecha_Creacion Cuando Sea Seleccionado el parametro @AñoAgencia = ‘2012 – Agencia’ de un combo box.

    • VideoTutoriales commented on 29 noviembre, 2012 Reply

      A ver si lo he entendido bien

      Al seleccionar “2012 – Agencia” se actualizan los campos en un datagrid, estos se pueden modificar y quieres que se guarden al pulsar por ejemplo un botón de guardar o en el momento de modificarlo (da igual el evento donde lanzar la operación de guardado) Si es así, solo tendrás que realizar un update de la siguiente manera:

      Extraemos primero los datos de año y agencia para insertarlos en la consulta de actualización:

      iAño = left$(añoagencia, 4) //para extraer el año
      sAgencia = mid$(añoagencia, 7) // para extraer la agencia

      UPDATE tabla set d1 = grid1, d2 = grid2, … where Agencia = ” + sAgencia + ” and Año = “+ iAno

      A ver si es lo que necesitas. Un saludo!

  • Maritza commented on 29 noviembre, 2012 Reply

    Si, es eso, Pero No Me Funciona En Visual Studio 2010, Con Lenguaje De Programación Visual Basic.

    Gracias Por La Ayuda

    • VideoTutoriales commented on 30 noviembre, 2012 Reply

      ¿Qué no te funciona exactamente?

      Te recomiendo que hagas un punto de ruptura antes de realizar la operación y traces linea por linea con el debugger para ver lo que hace la apli y localizar el problema.

      Un saludo!

  • Maritza commented on 30 noviembre, 2012 Reply

    Dim ActualizarCalendarioLaboral As String = “Exec Opita.Nomina.Proc_UpdateCalendario @AñoAgencia='” & Me.añoAgencia.ToString & “‘ ”

    Dim daActualizarCalendario As New SqlDataAdapter(ActualizarCalendarioLaboral, conexion)
    Dim dsActualizarCalendario As New DataSet
    daActualizarCalendario.Fill(dsActualizarCalendario)

    Dim ActualizarCalendario As String = “UPDATE Opita.Nomina.CalendarioLaboral SET d1 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(3).Value.ToString() & “‘ , d2 ='” & Me.DGV_CalendarioLaboral.Rows(i).Cells(4).Value.ToString() & “‘ , d3 ='” & Me.DGV_CalendarioLaboral.Rows(i).Cells(5).Value.ToString() & “‘ , d4 ='” & Me.DGV_CalendarioLaboral.Rows(i).Cells(6).Value.ToString() & “‘ , d5 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(7).Value.ToString() & “‘ , d6 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(8).Value.ToString() & “‘ , d7 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(9).Value.ToString() & “‘ , d8 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(10).Value.ToString() & “‘ , d9 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(11).Value.ToString() & “‘ , d10 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(12).Value.ToString() & “‘ , d11 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(13).Value.ToString() & “‘ , d12 ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(14).Value.ToString() & “‘ , d13 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(15).Value.ToString() & “‘ , d14 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(16).Value.ToString() & “‘ , d15 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(17).Value.ToString() & “‘ , d16 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(18).Value.ToString() & “‘ , d17 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(19).Value.ToString() & “‘ , d18 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(20).Value.ToString() & “‘ , d19 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(21).Value.ToString() & “‘ , d20 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(22).Value.ToString() & “‘ , d21 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(23).Value.ToString() & “‘ , d22 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(24).Value.ToString() & “‘ , d23 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(25).Value.ToString() & “‘ , d24 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(26).Value.ToString() & “‘ , d25 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(27).Value.ToString() & “‘ , d26 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(28).Value.ToString() & “‘ , d27 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(29).Value.ToString() & “‘ , d28 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(30).Value.ToString() & “‘ , d29 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(31).Value.ToString() & “‘, d30 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(32).Value.ToString() & “‘, d31 = ‘” & Me.DGV_CalendarioLaboral.Rows(i).Cells(33).Value.ToString() & “‘, Nombre = ‘” & Form2.codoperador & “‘, Fecha_Creacion = GetDate() ) FROM Opita.Nomina.TmpCalendarioLaboral WHERE Año = @Año And Agencia = @Agencia”
    ‘ ListaCalendario.Add(ActualizarCalendario)

    • VideoTutoriales commented on 30 noviembre, 2012 Reply

      mmmm ¿y el problema? :D

      Hay demasiado código para no saber el error que te da :)

  • Maritza commented on 30 noviembre, 2012 Reply

    Jajaja, Q pena contigo!!!

    Pues Que No Me Actualiza

    :(

    • VideoTutoriales commented on 30 noviembre, 2012 Reply

      ¿Has probado a trazar y ver exactamente la SQL que lanzas?

      Con Visual Studio puedes detener el programa en esa linea y ver exactamente la SQL que va a atacar la base de datos. Posiblemente no está realizando bien el Where o no lleva los parámetros que crees que llevan.

  • Maritza commented on 30 noviembre, 2012 Reply

    System.Data.SqlClient.SqlException was caught
    Class=15
    ErrorCode=-2146232060
    LineNumber=1
    Message=Sintaxis incorrecta cerca de ‘L’.
    Falta o está vació un nombre de objeto o columna. Compruebe que todas las columnas de las instrucciones SELECT INTO tienen un nombre. Para otras instrucciones, busque si hay nombres de alias vacíos. No se permiten los alias definidos como “” o []. Agregue un nombre o un espacio como nombre de alias.
    Comilla no cerrada después de la cadena de caracteres ”.
    Number=102
    Procedure=””
    Server=PASANTEUH-2-PC\PRUEBAS
    Source=.Net SqlClient Data Provider
    State=1
    StackTrace:
    en System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
    en System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
    en System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
    en System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
    en System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
    en System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
    en System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
    en Opita.CalendarioLaboral.EjecutarTransaccion(ArrayList ListaSentencias) en D:\COONFIE\IngRicardo\Opita\simulador de credito\CalendarioLaboral.vb:línea 224
    InnerException:

    • VideoTutoriales commented on 1 diciembre, 2012 Reply

      Está claro que el problema está la consulta SQL, pero la estructura está aparentemente bien, prueba una cosa:
      – Crea un punto de interrupción del programa justo donde se asigna la cadena ActualizarCalendario
      – Asigna la cadena y saca el valor de ActualizarCalendario y lo pegas por aquí para que veamos que envías a la base de datos.

      Sino sabes crear el punto de interrupción: Vete al editor de código, pincha con el ratón en el margen izquierdo de la linea donde está la asignación (debe de aparecer un punto)

      Sino lo consigues:
      – Crea una caja de texto
      – Una vez asignada la variable ActualizarCalendario, asignala a la caja de texto.
      – Copia lo que hay en la caja de texto y pegalo por aquí.

      Necesito ver lo que se envía a la base de datos.

  • Maritza commented on 3 diciembre, 2012 Reply

    EN EL PRIMER CICLO:
    “UPDATE Opita.Nomina.CalendarioLaboral SET Mes = ‘Enero ‘ , d1 = ‘P’ , d2 =’L’ , d3 =’L’ , d4 =’L’ , d5 = ‘L’ , d6 = ‘L’ , d7 = ‘L’ , d8 = ‘L’ , d9 = ‘L’ , d10 = ‘L’ , d11 = ‘L’ , d12 = ‘L’ , d13 = ‘L’ , d14 = ‘L’ , d15 = ‘L’ , d16 = ‘L’ , d17 = ‘L’ , d18 = ‘L’ , d19 = ‘L’ , d20 = ‘L’ , d21 = ‘L’ , d22 = ‘L’ , d23 = ‘L’ , d24 = ‘L’ , d25 = ‘L’ , d26 = ‘L’ , d27 = ‘L’ , d28 = ‘L’ , d29 = ‘L’, d30 = ‘L’, d31 = ‘L’, Nombre = ”, Fecha_Creacion = GetDate() WHERE @AñoAgencia=’2012 – AGENCIA LA PLATA'”

  • Maritza commented on 3 diciembre, 2012 Reply

    SEGUNDO CICLO:
    “UPDATE Opita.Nomina.CalendarioLaboral SET Mes = ‘Febrero ‘ , d1 = ‘L’ , d2 =’L’ , d3 =’L’ , d4 =’L’ , d5 = ‘L’ , d6 = ‘L’ , d7 = ‘L’ , d8 = ‘L’ , d9 = ‘L’ , d10 = ‘L’ , d11 = ‘L’ , d12 = ‘L’ , d13 = ‘L’ , d14 = ‘L’ , d15 = ‘L’ , d16 = ‘L’ , d17 = ‘L’ , d18 = ‘L’ , d19 = ‘L’ , d20 = ‘L’ , d21 = ‘L’ , d22 = ‘L’ , d23 = ‘L’ , d24 = ‘L’ , d25 = ‘L’ , d26 = ‘L’ , d27 = ‘L’ , d28 = ‘L’ , d29 = ‘L’, d30 = ‘L’, d31 = ‘L’, Nombre = ”, Fecha_Creacion = GetDate() WHERE @AñoAgencia=’2012 – AGENCIA LA PLATA'”

  • Maritza commented on 3 diciembre, 2012 Reply

    Y ASÍ SUCESIVAMENTE HASTA EL MES DE DICIEMBRE Y TOMANDO LOS VALORES EDITADOS. PERO NO ME ACTUALIZA O GUARDA EN LA TABLA DE LA BASE DE DATOS.

  • Maritza commented on 3 diciembre, 2012 Reply

    ERROR:
    Debe declarar la variable escalar “@AñoAgencia”.

    • VideoTutoriales commented on 3 diciembre, 2012 Reply

      La respuesta está dada más arriba
      iAño = left$(añoagencia, 4) //para extraer el año
      sAgencia = mid$(añoagencia, 7) // para extraer la agencia

      UPDATE tabla set d1 = grid1, d2 = grid2, … where Agencia = ” + sAgencia + ” and Año = “+ iAno

      El problema es que estás utilizando una variable de tipo numérico y estás realizando la where con una cadena entera
      @AñoAgencia=’2012 – AGENCIA LA PLATA’

      Tienes que separar el where con dos variables como está explicado, y pos supuesto utilizar el nombre del campo de año y agencia, @AñoAgencia te da el error por que no existirá en la tabla y menos con @ :)

  • Maritza commented on 3 diciembre, 2012 Reply

    ERROR EN LEFT$:

    Error 3 ‘Public Property Left As Integer’ has no parameters and its return type cannot be indexed.

    • VideoTutoriales commented on 4 diciembre, 2012 Reply

      Maritza… ¿conoces las funciones de cadena? ¿Sabes cortar una cadena comenzando desde la izquierda o desde un punto hasta otro?

      El código que te he pasado es un ejemplo de como hacerlo, en mi caso estoy utilizando vb aunque muchos comparten el método left y mid, son muy comunes, no sé que lenguaje estás utilizando, pero busca dentro del tuyo propio a realizar esa operación.

      Lo que estás haciendo es tomar la cadena “2000 – Agencia” y separarla en año = 2000 y agencia = “Agencia” para poder realizar el WHERE en la base de datos!

      Como te digo, la solución está dada, si quieres puedes averiguarlo, si copias y pegas directamente es normal que no te funcione, investiga un poco y no esperes que te lo programen otros, si es eso lo que buscas, creo que tendrías que estudiar otra cosa :D

  • Roberto commented on 12 diciembre, 2012 Reply

    Hola, me pidieron que cambiara un campo de texto por un select,para que los usuarios de la web pudieran escoger entre dos opciones, buscando en el codigo medi cuenta de que el valor de ese campo lo daba una variable,la cual lo recogia de una tabla de una base de datos, porlo que aun despues de cambiar para que en vez de verse solo como un simple campo de texto se viera como un select con sus dos respectivas opciones el unico valor que carga es el que la variable recoge por defecto desde la base de datos, realmente no se mucho de php, aqui les pongo como esta el codigo original

    public function ocd_list( )
    {
    $type_m = $this->db->GetSetting( “title”, 0 );
    $st = $this->GetGP( “st”, “” );
    $message = “”;
    if ( $st == “ok” )
    {
    $message = “Thank you. The settings were successfully updated”;
    }
    if ( $st == “no” )
    {
    $message = “Sorry. Fill in all the fields please”;
    }
    switch ( $type_m )
    {
    case 1 :
    $this->mainTemplate = “./templates/title.tpl”;
    $this->pageTitle = “title Settings”;
    $this->pageHeader = “title Settings”;
    $valor = $this->db->GetOne( “Select valor From `”.$this->object.”` Where matrix_id=’2′ “, 0 );
    $valor = “”;

    $this->data = array(
    “MAIN_ACTION” => $this->pageUrl,
    “MAIN_HEADER” => $this->pageHeader,
    “MAIN_MESSAGE” => $message,
    “EG” => $valor
    );
    break;
    //entre estos dos va otro pedazo pero no tiene nada que ver con lo que quiero //hacer.
    public function ocd_update_title( )
    {
    $valor =””;

    $valor = $this->GetValidGP( “valor”, “Valor”, VALIDATE_NUMERIC_POSITIVE );
    if ( 0 errors[‘err_count’] )
    {
    $this->Redirect( $this->pageUrl.”?st=no” );
    }
    else
    {
    $this->db->ExecuteSql( “Update `”.$this->object.”` Set valor='{$valor}’ Where matrix_id=2″ );
    $this->Redirect( $this->pageUrl.”?st=ok” );
    }
    }
    ese es el original,ahora para que salga en vez de un textfield el select solo cambie el $valor= por $valor=las opciones
    se ve como quiero pero al dar clic en submit me dice que debo rellenar todos los campos, este error lo desactive desactivando:
    // $valor = $this->GetValidGP( “valor”, “Valor”, VALIDATE_NUMERIC_POSITIVE );
    pero de todas formasaunque no de error solo envia el valor que esta en la base de datos, a la cual accedi e inserte otro con el mismo nombre de campo solo que le di matrix_id=’3′, y probe poner
    $valor = $this->db->GetOne( “Select valor From `”.$this->object.”` Where matrix_id=’2′ And matrix_id=’3′ “, 0 );
    y
    $this->db->ExecuteSql( “Update `”.$this->object.”` Set valor='{$valor}’ Where matrix_id=’2′ And matrix_id=’3′ ” );
    creo que es en esta ultima parte donde no estoy correcto pues lo que necesito es que en dependencia de la opcion escogida en el select se haga select y update al campo correspondiente a el valor escogido por el usuario, realmente que necesito ideas para ver como resuelvo esto, de antemano gracias…..

    • VideoTutoriales commented on 13 diciembre, 2012 Reply

      Veamos si entendí bien, tienes una tabla con N valores y tienes que cargarlos en un ¿ < select > < /select > ?

      Y luego dependiendo del valor que seleccionen en el select realice una operación u otra?

      Si es así, un select lo rellenas así:

      < select name="subseccion" id="subseccion">< ? php
      $consulta = mysql_query("SELECT * FROM secciones ORDER BY id");
      while ($registro = mysql_fetch_array($consulta))
      {
      ?>< ? php
      }
      ? >
      < /select>

      En este caso estamos viendo diferentes secciones.

      Me faltaría la otra parte, pero me gustaría que explicaras un poco mejor qué es lo que necesitas, en vez de poner tanto código :)

  • Fabian commented on 17 octubre, 2014 Reply

    Que tal gente, les hago una pregunta, en SQL Server 2005, tengo una tabla ALUMNOS con un campo USR que puede tener los valores ‘N’ o ‘S’ y quiero cambiar todos los ‘S’ a ‘N’ , entonces hago:

    UPDATE ALUMNOS
    SET USR = ‘N’
    WHERE USR = ‘S’

    y me da el error
    Mens 512, Nivel 16, Estado 1, Procedimiento BajaAlumno, Línea 23
    La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, , >= o cuando se utiliza como expresión.
    Se terminó la instrucción.

    Será alguna restricción? Desde ya muchas gracias

    • videotutoriales commented on 18 octubre, 2014 Reply

      Pues nunca me había pasado tal caso, pero como van todos los valores a N, lo más fácil es omitir la condicional WHERE, de manera que quedaría:

      UPDATE alumnos SET usr = ‘N';

      Aunque como comentas, debería de dejarte añadir el WHERE con el usr = ‘S’. Pero no sabría darte ninguna solución en este momento. Si ves que no encuentras opciones, coméntamelo y te ayudo a buscar alguna otra solución!

      Un saludo!

  • gustavo commented on 27 noviembre, 2014 Reply

    hola estoy teniendo problemas con la bd de mi web , quisiera que cuando llegue una fecha por ejemplo cuando sea el dia 29 de cada mes se me actualicen los registros automaticamente,pero no me doy cuenta de como hacerlo y hace bastante que vengo renegando con esto,desde ya muchas gracias

    • videotutoriales commented on 27 noviembre, 2014 Reply

      Buenas Gustavo

      El problema entiendo que no tiene que ver con la base de datos en sí, sino con montar un pequeño script que lance esa consulta en la fecha que le indiques.

      Si utilizas linux, podrás utilizar cron, si utilizas Windows podrás utilizar las tareas programadas.

      Si explicas más en profundidad lo que necesitas quizás te pueda echar una mano.
      Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>