Foros del Web » Programando para Internet » PHP »

Problema al eliminar registros

Estas en el tema de Problema al eliminar registros en el foro de PHP en Foros del Web. Hola a todos, tengo un problemilla... No puedo eliminar registros de la base de datos tengo el siguiente codigo que me lista todos los registros ...
  #1 (permalink)  
Antiguo 27/05/2009, 09:52
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Busqueda Problema al eliminar registros

Hola a todos, tengo un problemilla...
No puedo eliminar registros de la base de datos
tengo el siguiente codigo que me lista todos los registros para seleccionar los que quiera eliminar...

echo"<center>";
echo"<center><img src='image002.gif' width='131' height='47' /></center>";
echo"<strong>MASA - Mecánicos Asociados S.A.</strong>";
echo"<br>";
echo"<strong>891102723-8</strong>";
echo"<br><br>";
echo "<form action='eliminar.php' method='post' name='form1'>";
echo "<table border = 2>";
echo "<tr><td><strong><center>Eliminar</center></strong></td><td><center><strong>Cedula</center></strong></td><td><center><strong>Nombre</center></strong></td><td><center><strong>Cargo</center></strong></td><td><center><strong>Contrato</center></strong></td><td><center><strong>Email</center></strong></td><td><center><strong>Visible</center></strong></td><td><center><strong>Activo</center></strong></td>";
$sql="select * from contratos";
$registros = mysql_query($sql);
$c=1;
$cantreg=mysql_num_rows($registros);
while($row2=mysql_fetch_array($registros))
{
$arregcedula[$c-1]=$row2["cedula"];
$nom="chk".$c;
echo "<tr><td><input type='checkbox' name='$nom' value=1></td>";
echo "<td>"; echo $row2["cedula"];
echo "</td>";
echo "<td>"; echo $row2["nombre"];
echo "</td>";
echo "<td>"; echo $row2["cargo"];
echo "</td>";
echo "<td>"; echo $row2["contrato"];
echo "</td>";
echo "<td>"; echo $row2["email"];
echo "</td>";
echo "<td>"; if ($row2['visible']=='1') echo"<img src='check.png' width='25' height='20'/>";
elseif ($row2['visible']=='0'){echo"<img src='nocheck.png' width='25' height='20'/>";}//echo $row2["visible"];
echo "</td>";
echo "<td>"; if ($row2['activo']=='1') echo"<img src='check.png' width='25' height='20'/>";
elseif ($row2['activo']=='0'){echo"<img src='nocheck.png' width='25' height='20'/>";}//echo $row2["activo"];
echo"</td></tr>";
$c++;
}
echo "</table></center><br>
<center><input type=submit name=elim value=Eliminar></center>
</form>";
echo"<center><form name='form1' method='post' action='contratos.php'>";
echo"<input type='submit' name='Submit' value='&lt;&lt; Volver'>";
echo"</form></center>";



el archivo eliminar.php

require_once ("conexion.php");
$link=conectarse();
for($c=1;$c<=$cantreg;$c++)
{
$nom="chk".$c;
if($nom==1)
{
$sql="delete from contratos where cedula='".$arregcedula[$c-1]."'";
mysql_query($sql,$link);
}
}
echo"<center>";
echo"<center><img src='image002.gif' width='131' height='47' /></center>";
echo"<strong>MASA - Mecánicos Asociados S.A.</strong>";
echo"<br>";
echo"<strong>891102723-8</strong>";
echo"<br><br>";
echo"<strong><em>Los datos seleccionados han sido eliminados</strong></em>";
echo"<form name='form1' method='post' action='contratos.php'>";
echo"<input type='submit' name='Submit' value='&lt;&lt; Volver'>";
echo"</form><center>";
?>
  #2 (permalink)  
Antiguo 27/05/2009, 09:54
 
Fecha de Ingreso: octubre-2008
Mensajes: 71
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema al eliminar registros

por que tienes 2 forms s:
__________________
Developer Staff
http://img8.imageshack.us/img8/7852/firmaeun.jpg
  #3 (permalink)  
Antiguo 27/05/2009, 09:58
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Información Respuesta: Problema al eliminar registros

Hola que tal...

Tengo un formulario que es donde tengo para ingresar los campos...
Con funciones de Nuevo - Guardar - Consultar - Eliminar-

Cuando doy clic en el boton eliminar me lleva a que me muestre en un listado los registros que tengo en la base de datos, y ahi me los muestra al inicio de cada fila con un check y selecctiono el que voy a eliminar y ahi me envia al archivo "eliminar.php"
  #4 (permalink)  
Antiguo 27/05/2009, 10:15
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema al eliminar registros

Alguien que me colabore!!!!!!!!!11
  #5 (permalink)  
Antiguo 27/05/2009, 10:26
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: Problema al eliminar registros

antes de colocar tu codigo, utiliza el editor de texto para que muestres bien tu codigo, por que asi nadie va entender que aplicacion realizas.

solo hice una recomendcion.
  #6 (permalink)  
Antiguo 27/05/2009, 10:46
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema al eliminar registros

No se parece que no me esta haciendo el delete
  #7 (permalink)  
Antiguo 27/05/2009, 11:02
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema al eliminar registros

$sql="select * from contratos";
$registros = mysql_query($sql);
$c=1;
$cantreg=mysql_num_rows($registros);
while($row2=mysql_fetch_array($registros))
{
$arregcedula[$c-1]=$row2["cedula"];
$nom="chk".$c;
echo "<tr><td><input type='checkbox' name='$nom' value=1></td>";
echo "<td>"; echo $row2["cedula"];
echo "</td>";
echo "<td>"; echo $row2["nombre"];
echo "</td>";
echo "<td>"; echo $row2["cargo"];
echo "</td>";
echo "<td>"; echo $row2["contrato"];
echo "</td>";
echo "<td>"; echo $row2["email"];
echo "</td>";
echo "<td>"; if ($row2['visible']=='1') echo"<img src='check.png' width='25' height='20'/>";
elseif ($row2['visible']=='0'){echo"<img src='nocheck.png' width='25' height='20'/>";}//echo $row2["visible"];
echo "</td>";
echo "<td>"; if ($row2['activo']=='1') echo"<img src='check.png' width='25' height='20'/>";
elseif ($row2['activo']=='0'){echo"<img src='nocheck.png' width='25' height='20'/>";}//echo $row2["activo"];
echo"</td></tr>";
$c++;
  #8 (permalink)  
Antiguo 27/05/2009, 14:28
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema al eliminar registros

Hola saludo a todos requiero de su valiosa ayuda, para solucionar este problema..
  #9 (permalink)  
Antiguo 27/05/2009, 14:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Problema al eliminar registros

Escribe la estructura de la base de datos, luego escribe el codigo de nuevo pero usa [ PHP ] [ / PHP ] sin los espacios internos cuando escribas el codigo de PHP para poder verlo bien
  #10 (permalink)  
Antiguo 27/05/2009, 14:56
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema al eliminar registros

La estructura de la base de datos

Field Type Collation Null Key Default Extra Privileges Comment
-------- ----------- ----------------- ------ ------ ------- ------ ------------------------------- -------
cedula varchar(20) latin1_swedish_ci NO PRI select,insert,update,references
nombre varchar(50) latin1_swedish_ci YES (NULL) select,insert,update,references
cargo varchar(50) latin1_swedish_ci YES (NULL) select,insert,update,references
contrato varchar(35) latin1_swedish_ci YES (NULL) select,insert,update,references
email varchar(40) latin1_swedish_ci YES (NULL) select,insert,update,references
visible varchar(5) latin1_swedish_ci YES (NULL) select,insert,update,references
activo varchar(5) latin1_swedish_ci YES (NULL) select,insert,update,references
  #11 (permalink)  
Antiguo 27/05/2009, 14:59
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema al eliminar registros

El codigo que me lista los registros:

while($row2=mysql_fetch_array($registros))
{
$arregcedula[$c-1]=$row2["cedula"];
$nom="chk".$c;
echo "<tr><td><input type='checkbox' name='$nom' value=1></td>";
echo "<td>"; echo $row2["cedula"];
echo "</td>";
echo "<td>"; echo $row2["nombre"];
echo "</td>";
echo "<td>"; echo $row2["cargo"];
echo "</td>";
echo "<td>"; echo $row2["contrato"];
echo "</td>";
echo "<td>"; echo $row2["email"];
echo "</td>";
echo "<td>"; if ($row2['visible']=='1') echo"<img src='check.png' width='25' height='20'/>";
elseif ($row2['visible']=='0'){echo"<img src='nocheck.png' width='25' height='20'/>";}//echo $row2["visible"];
echo "</td>";
echo "<td>"; if ($row2['activo']=='1') echo"<img src='check.png' width='25' height='20'/>";
elseif ($row2['activo']=='0'){echo"<img src='nocheck.png' width='25' height='20'/>";}//echo $row2["activo"];
echo"</td></tr>";
$c++;
}
echo "</table></center><br>
<center><input type=submit name=elim value=Eliminar></center>
</form>";
echo"<center><form name='form1' method='post' action='contratos.php'>";
echo"<input type='submit' name='Submit' value='&lt;&lt; Volver'>";
echo"</form></center>";


el archivo eliminar.php

require_once ("conexion.php");
$link=conectarse();
for($c=1;$c<=$cantreg;$c++)
{
$nom="chk".$c;
if($$nom==1)
{
$sql="delete from contratos where cedula='".$arregcedula[$c-1]."'";
mysql_query($sql,$link);
}
}
  #12 (permalink)  
Antiguo 27/05/2009, 15:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al eliminar registros

obviamente algo esta mal....

Código PHP:
$nom="chk".$c;
if($
$nom==1// ... 
primero, no uses variables globales... procura hacerlo así

Código PHP:
$nom="chk".$c;
if(isset(
$_POST[$nom])) // ... 
espero comprendas, suerte!


--
PDTA: la forma en la que lo haces no es para nada la mejor.... la forma ideal se explica en el siguiente tema...

http://www.forosdelweb.com/f18/aport...uladas-662159/

lee el tema con mucha atención, sobre todo lo del reporte
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 28/05/2009, 07:09
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema al eliminar registros

Si ahi puede estar el error... cambie el codigo... asi

for($c=1;$c<=$cantreg;$c++)
{
$nom="chk".$c;
if(isset($_POST[$nom==1]))
//if($$nom==1)
{
$sql="delete from contratos where cedula='".$arregcedula[$c-1]."'";
mysql_query($sql,$link);
}
}

pero sigue igual no me elimina el o los registros
  #14 (permalink)  
Antiguo 28/05/2009, 07:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al eliminar registros

pon atención!

tu código no tiene sentido... para nada
Código PHP:
// MAL
if(isset($_POST[$nom==1]))

// BIEN
if(isset($_POST[$nom]) && ($_POST[$nom]==1)) 
observa bien la sintaxis correcta (así tal cual lo puse antes, no mas)

por cierto, para asegurarte de que entra al if() y además, depurara algún error has lo siguiente (no copies-y-pegues, lee y analiza)
Código PHP:
echo $sql;
mysql_query($sql,$link) or die(mysql_error()); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 28/05/2009, 07:22
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Información Respuesta: Problema al eliminar registros

Hola, mira que nada, no me sale ningun error... el codigo esta bien... no se que pasa....

require_once ("conexion.php");
$link=conectarse();
for($c=1;$c<=$cantreg;$c++)
{
$nom="chk".$c;
if(isset($_POST[$nom]) && ($_POST[$nom]==1))
//if($$nom==1)
{
$sql="delete from contratos where cedula='".$arregcedula[$c-1]."'";
mysql_query($sql,$link);
}
}
  #16 (permalink)  
Antiguo 28/05/2009, 07:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al eliminar registros

pero, hiciste lo del or die(mysql_error()) ¿??

bueno, de todos modos intenta esto justo al comienzo del script que recibe los datos...
Código PHP:
var_dump($_POST); 
y veamos que arroja!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 28/05/2009, 07:36
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Problema al eliminar registros

me muestra lo siguiente...

array(2) { ["chk255"]=> string(1) "1" ["elim"]=> string(8) "Eliminar" }
  #18 (permalink)  
Antiguo 28/05/2009, 07:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al eliminar registros

bueno, ahí esta tu "chk255"

ahora, analiza como obtenerlo a través del ciclo...

Código PHP:
// la mejor manera de hacerlo era con foreach()
foreach($_POST['name_dinamico'] as $key => $value)
{
  
$sql "DELETE FROM contratos WHERE cedula = '$value'";
  
mysql_query($sql$link) or die(mysql_error());

por eso hubieras leído el primer enlace que te coloque, es mucho mas sencillo de lo que planeas....

así generarías los checkbox sin contratiempos!
Código PHP:
echo '<input type="checkbox" name="name_dinamico[]" value="' $row2['cedula'] . '"/>'

pero bueno, sigue así... seguro tardas mas, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #19 (permalink)  
Antiguo 28/05/2009, 10:21
 
Fecha de Ingreso: enero-2009
Mensajes: 197
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema al eliminar registros

Hola que tal, nada, ya agregue las sentencias pero sigue sin borrarme el registro que quiero..
  #20 (permalink)  
Antiguo 28/05/2009, 14:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al eliminar registros

mira, no se lo que pretendes pero ya le diste mucha vuelta al asunto, y en verdad es muy sencillo!!!

para que todo funcione, primero debes enviar los checkbox.... fíjate bien como debe ser el código (usando name dinámico)

Código PHP:
// debes hacerlo asi...
echo '<tr><td><input type="checkbox" name="chk[]" value="' $row2["cedula"] . '"></td>'
si lo haces bien, irá bien.....

Código PHP:
require_once ("conexion.php");
$link=conectarse();

var_dump($_POST);
var_dump($cantreg);        // y esto ¿de donde lo sacas??
var_dump($arregcedula); // de verdad existe??

// si las ultimas dos variables no existen, obvio... ¡¡no va a hacer nada!!!
// por lo tanto el for() esta mal...
/*for($c=1;$c<=$cantreg;$c++)
{
  $nom="chk".$c;
  if (isset($_POST[$nom]))
  {
    $sql="delete from contratos where cedula='".$arregcedula[$c-1]."'";
    mysql_query($sql,$link);
  }
}*/


// entonces, usamos el name dinamico chk[] ¿si lo notaste??
// y no son necesarias mas variables que la del POST ... listo!
foreach ($_POST['chk'] as $cedula)
{
  echo 
"Borrar cedula: $cedula <br />";
  
$sql "DELETE FROM contratos WHERE cedula='$cedula'";
  
mysql_query($sql$link) or die(mysql_error());


NOTA que ya todo esta dicho, tienes toda la información necesaria, enlaces, y ejemplos de código que debes estudiar y analizar a fondo, con calma....

si algo no te sale o no entiendes, vuelve a leer el tema de arriba a abajo... y de nuevo, hasta que lo pilles!


--
PDTA: por favor, no me envíes mas mensajes, recuerda que el foro es para tratar los problemas... no mi perfil
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 13:03.