Foros del Web » Programando para Internet » PHP »

Array de elementos desde PHP a mySQL

Estas en el tema de Array de elementos desde PHP a mySQL en el foro de PHP en Foros del Web. Buenas, tengo un listado de productos que cada uno de ellos tienen un checkbox que se puede marcar y al pulsar en un botón se ...
  #1 (permalink)  
Antiguo 08/01/2013, 12:54
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Array de elementos desde PHP a mySQL

Buenas, tengo un listado de productos que cada uno de ellos tienen un checkbox que se puede marcar y al pulsar en un botón se eliminan todos los productos marcados.

Pues bien, sé como puedo hacer desde PHP que por cada elemento que contiene el array de los checkbox al enviarse pues llame a una instrcción DELETE en mySQL, pero claro, si son 100 elementos pues son 100 llamadas a la tabla para borrar.

Mi pregunta es: ¿Hay alguna manera de pasar el Array a mySQL desde un procedimiento almacenado y que todo se gestione desde la base de datos?
  #2 (permalink)  
Antiguo 08/01/2013, 13:09
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: Array de elementos desde PHP a mySQL

Puedes usar una única consulta para eliminar todos los id seleccionados:
Código MySQL:
Ver original
  1. DELETE FROM tabla
  2. WHERE id IN (1, 2, 3, 4...)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 09/01/2013, 02:03
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Array de elementos desde PHP a mySQL

Sí, si hasta ahí llego pero mi consulta es que cómo le hago entender a mySQL que le envío un array para que lo trate. Me refiero a la hora de definir el parámetro que le paso... uso varchar y automáticamente convierte los valores en una cadena legible por la sentencia SQL? No se si me explico jeje.

P.D. Gracias por responder.
  #4 (permalink)  
Antiguo 09/01/2013, 05:46
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: Array de elementos desde PHP a mySQL

El array debes tratarlo el lenguaje de programación que usas (PHP en este caso) para formar la consulta de la forma que te indiqué. Por ejemplo, puedes usar implode:
http://php.net/implode

Paso tu tema a la sección de PHP.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 09/01/2013, 09:04
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Array de elementos desde PHP a mySQL

La consulta la hago en un procedimiento almacenado enviando los registros que quiero eliminar, no en el código PHP por eso puse esta consulta en el foro de mySQL... el caso es que envío la cadena que se forma usando implode (en este caso sale 23,24,25,80,81) y la recibo en el procedimiento almacenado mediante una variable varchar. Lo que quiero es meter esa variable en la consulta pero no me borra o sólo me borra 1... esto es lo que pongo y no me funciona:


Código MySQL:
Ver original
  1. CREATE DEFINER = 'root'@'localhost' PROCEDURE borraregistro
  2. (
  3.   IN idreg varchar(1000)
  4. )
  5. DELETE FROM productos WHERE idProducto IN (idreg);

Última edición por suudobal; 09/01/2013 a las 09:37
  #6 (permalink)  
Antiguo 09/01/2013, 09:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Array de elementos desde PHP a mySQL

En tu caso, la forma correcta de lograrlo es usando sentencias preparadas.
El parámetro de entrada debería ser una cadena de texto con el formato "1, 2, 3, 4, 5, 6", por ejemplo, que luego se agrega a una sentencia dentro de una variable de cadena en el SP.
Con esa variable se define una sentencia preparada que se debe ejecutar.

Esa sería la opcion correcta. Pero también podrías intentar usar en el WHERE la función FIND_IN_SET(), de MySQL.

Algo como:
Código MySQL:
Ver original
  1. DELETE FROM productos
  2. WHERE FIND_IN_SET(CAST(idProducto AS CHAR), variableDeCadena)>0;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 09/01/2013, 13:01
 
Fecha de Ingreso: septiembre-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 1
Respuesta: Array de elementos desde PHP a mySQL

Perfecto, como siempre gnzsoloyo, usando FIND_IN_SET(). Gracias

Etiquetas: elementos, mysql, sql, tabla
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 02:19.