Foros del Web » Programando para Internet » PHP »

Ayuda con FAQ de Cluster para borrar registros

Estas en el tema de Ayuda con FAQ de Cluster para borrar registros en el foro de PHP en Foros del Web. Buenas, a Cluster si puede ser. he estado mirando en las faqs el codigo que pusistes para eliminar registros multiples. he ejecutado tu script, pero ...
  #1 (permalink)  
Antiguo 10/12/2005, 08:04
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Ayuda con FAQ de Cluster para borrar registros

Buenas, a Cluster si puede ser. he estado mirando en las faqs el codigo que pusistes para eliminar registros multiples. he ejecutado tu script, pero no me borra los registros, y no se que hago mal.

el formulario.php me muestra los registros, aunque solo me muestra el nombre, no el id(es eso normal?)

te pongo mi codigo, a ver si puedes ayudarme:

formulario.php
Código:
<?
include("conexion.php");
// Realizar la conexión a la BD .. Seleccionar la BD a usar. 

// Ejecutar la consulta para obtener los datos de la BD. 
$resultado=mysql_query("SELECT * FROM productos"); 

// Se inicial el formulario 
echo "<form action=\"procesar.php\" method=\"post\"> \n"; 

// Extraemos y componemos los checbox dinámicos de los datos de nuestra tabla de la BD. 
while ($row = mysql_fetch_array($resultado)){ 
  echo "<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['idproducto']."\">".$row['nombre']."<br>"; 
} 

// Cerramos el formulario y ponemos nuestro botón de Submit. 
echo "<input type=\"submit\" name=\"Submit\" value=\"Enviar\">"; 
echo "</form>"; 
?>
procesar.php
Código:
<? 
include("conexion.php");
// Generamos una lista de los ID's (campo value= ..) que tenemos en nuestro array. 
$lista=implode(',',$_POST['seleccion']); 

// Y lo aplicamos al SQL correspondiente y ejecutamos la consulta. 
$query=mysql_query("DELETE FROM productos WHERE idproducto IN(".$lista.")"); 
if($query){
echo "Registro borrado correctamente";
}

?>

y no me da el mensaje, ni me borra los archivos. que hago mal? se supone que en el formulario deberian aparecer el id y el nombre, no? pq solo me muestra el nombre...

a ver si podeis echarme un cable

salu2
  #2 (permalink)  
Antiguo 12/12/2005, 08:07
Avatar de alexjnm  
Fecha de Ingreso: octubre-2004
Ubicación: cuba
Mensajes: 218
Antigüedad: 19 años, 5 meses
Puntos: 1
jhola mira prueba con este codigo en tu pagina de los checkbox

Código PHP:
<?
include("conexion.php");
// Realizar la conexión a la BD .. Seleccionar la BD a usar. 
// Ejecutar la consulta para obtener los datos de la BD. 
$resultado=mysql_query("SELECT * FROM productos"); 

// Se inicial el formulario 
echo "<form action=\"procesar.php\" method=\"post\"> \n"

// Extraemos y componemos los checbox dinámicos de los datos de nuestra tabla de la BD. 
while ($row mysql_fetch_array($resultado)){ 
  echo 
"<input type=checkbox name=seleccion[] value=$row['idproducto'] />$row['nombre']; 


// Cerramos el formulario y ponemos nuestro botón de Submit. 
echo "
<input type="submit\" name=\"Submit\" value=\"Enviar\">"
echo 
"</form>"
?>
en la pagina que vora los regitros donde dise $_POST['seleccion']
pon $HTTP_POST_VARS['seleccion']

saludos alex
__________________
__________________________________________________ _________
A beses el camino mas largo es la solución mas eficaz :)
  #3 (permalink)  
Antiguo 12/12/2005, 09:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
el formulario.php me muestra los registros, aunque solo me muestra el nombre, no el id(es eso normal?)

El "id" no lo veras ahí por qué es un "value" para tu checkbox .. eso sólo lo veras si ves el código HTML generado por ese script (en tu navegador-> ver código fuente). De hecho deberías revisar si los valores son los esperados (de esos "ID's").

Y para corroborar que efectivamente seleccionastes N checkbox y cuales son .. haz un echo a $lista:



Un saludo,
  #4 (permalink)  
Antiguo 12/12/2005, 10:24
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
gracias Cluster.

pues tienes razón con lo del value. he hecho el echo del lista, y me devuelve los id seleccionados, de la siguiente forma:

2456,2123....

la cosa está en que no me hace el borrar ...

$query=mysql_query("DELETE FROM productos WHERE idproducto IN(".$lista.")");
if($query){
echo "Registro borrado correctamente";
}

no me hace el query, no me lo borra de la bd...

que está pasando?

salu2
  #5 (permalink)  
Antiguo 12/12/2005, 10:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Revisa si tienes problemas de SQL o de ejecución:
Código PHP:
mysql_query("DELETE FROM productos WHERE idproducto IN(".$lista.")") or die (mysql_errror()); 
Un saludo,
  #6 (permalink)  
Antiguo 12/12/2005, 11:00
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
hola de nuevo Cluster, está 'medio' solucionado. al hacer el mysql_error, he detectado de que como el tipo de id producto estaba compuesto por MOL-1542, me faltaba ponerle unas comillas (no era un numerico, tb habia caracteres.)

el tema ahora es que si le doy a borrar uno lo borra, pero si selecciona más de uno no. pq sucede esto?

salu2 y gracias!
  #7 (permalink)  
Antiguo 12/12/2005, 12:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero que código usas al final? ..

Estas haciendo?:
Código PHP:
mysql_query("DELETE FROM productos WHERE idproducto IN('".$lista."')") or die (mysql_errror()); 
Por qué eso no es correcto .. fijate en el SQL que genereas .. si tienes problemas, no uses mysql_query("sentencia SQL") .. usalo en una variable $sql="DELETE ..."; para que puedas hacerle un echo y ver si es correcto lo que usas.

La sentencia "IN()" de Mysql (SQL) define "lista de valores" .. si tus valores no son numéricos tendras que "entrecomillarlos" uno a uno:

No lo he probado .. tal vez con esto sobra:
Código PHP:
$lista=implode("','",$_POST['seleccion']); 
Revisalo.

Un saludo,
  #8 (permalink)  
Antiguo 12/12/2005, 13:01
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
buenas Cluster, ahora mismo te estaba escribiendo la respuesta!!

he probado de hacer un bucle for each, de la seiguiente manera:

$sql="SELECT * FROM inmofree";

$result= mysql_query($sql);
$productos = isset($_POST['seleccion']) ? $_POST['seleccion'] : array();
foreach ( $productos as $id_producto ) {
$sql2 = "DELETE FROM productos WHERE idproducto = '$id_producto'";
$result2=mysql_query($sql2);
}

y me ha funcionado!!

igualmente ahora pruebo lo tuyo tambien.

salu2, y muchas gracias!!!
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 08:48.