Foros del Web » Programando para Internet » PHP »

Acerca de Where en PHP

Estas en el tema de Acerca de Where en PHP en el foro de PHP en Foros del Web. Hola amigos se me presenta la siguiente problematica. tengo una pagina php con varios regitros los cualses se extraen de una tabla hay una opcion ...
  #1 (permalink)  
Antiguo 03/08/2006, 07:51
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
Acerca de Where en PHP

Hola amigos se me presenta la siguiente problematica.
tengo una pagina php con varios regitros los cualses se extraen de una tabla
hay una opcion que es borrar, el sistema entra a la accion sin ningun problema
el problema esta al momento de borrar los datos si yo selecciono uno y lo borro, borra otro que no estaba seleccionado, yo pienso que puede se por mi consulta sql

mysql_query("DELETE FROM $sql_tabla WHERE $id_borrar=$id") or die(mysql_error());

no se si estara bien favor de decir si la consulta presenta algun error

salludos
  #2 (permalink)  
Antiguo 03/08/2006, 07:58
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
pues si.. es por eso:

Código PHP:
$sql="DELETE FROM sql_tabla WHERE id_borrar='".$id"'";
mysql_query($sql) or die(mysql_error()); 
el nombre de la tabla y de los campos no se pone con el $, l oque no se es porque te los borra y no te da error..
__________________
ALOZORRO v5.0 (ahora en .es)
  #3 (permalink)  
Antiguo 03/08/2006, 08:05
Avatar de Chudux  
Fecha de Ingreso: marzo-2006
Mensajes: 247
Antigüedad: 18 años, 1 mes
Puntos: 3
Hola Gracias por tu respuesta, ahora la tabla yo se la aseigno a esa variable anteriormente lo habi echo asi y no tenia mayor problema te presento mi codigo mas detallado esta toda la accion borrar


if ($_GET['accion']=="borrar"){
$usuarios_consulta = mysql_query("SELECT id FROM $sql_tabla") or die(mysql_error());
$ide= mysql_fetch_array($usuarios_consulta);
$total_registros = mysql_num_rows ($usuarios_consulta);
mysql_free_result($usuarios_consulta);

if ($total_registros == 0){
header ("Location: $pag?error=0");
exit;
}

$id_borrar=$ide[id];
mysql_query("DELETE FROM $sql_tabla WHERE $id_borrar=$id") or die(mysql_error());
mysql_close();

header ("Location: $pag");
exit;
}

ahora esa variable $id que se muestra esta dentro de el link qeu hace la accion borrar

saludos
  #4 (permalink)  
Antiguo 03/08/2006, 08:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Una aclaración .. el "WHERE" que haces mención no es de PHP .. es de "SQL" (lenguaje estructurado de consultas) própio del motor de BBDD que uses.. NO de PHP.

Sobre tu problema ..

Tendrías que hacer la consulta SQL para ver si existe el ID a borrar tipo:

Código PHP:
$usuarios_consulta mysql_query("SELECT id FROM $sql_tabla WHERE id='".$id."'") or die(mysql_error()); 
Y si obtienes 0 registros .. o diferente de 1 (se supone que no se debe repetir ese ID de registro!!), entonces .. borras ese registro por ese ID.

Código PHP:
if ($total_registros != 1){
header ("Location: $pag?error=0");
exit;


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 03/08/2006, 08:16
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
Repasando:

Código PHP:
if ($_GET['accion']=="borrar")
{
//aqui tienes que pasarle una condicion para que te seleccione en concreto lo que vas a borrar, apra ver antes si existe, porque si haces un select id te lo muestra todo y siempre te borrara un registro, aunque no sea el que quieres borrar.
$sql"SELECT id FROM sql_tabla [where loquesea] ";
$usuarios_consulta mysql_query($sql) or die(mysql_error());
$idemysql_fetch_array($usuarios_consulta);
$total_registros mysql_num_rows ($usuarios_consulta);
mysql_free_result($usuarios_consulta);

if (
$total_registros == 0)
{
header ("Location: $pag?error=0");
exit;
}

$id_borrar=$ide['id'];
$sql="DELETE FROM sql_tabla WHERE id_borrar='".$id."'"
mysql_query($sql) or die(mysql_error()); 
mysql_close();

header ("Location: $pag");
exit;

__________________
ALOZORRO v5.0 (ahora en .es)
  #6 (permalink)  
Antiguo 03/08/2006, 22:28
 
Fecha de Ingreso: julio-2006
Mensajes: 8
Antigüedad: 17 años, 8 meses
Puntos: 0
Hola Chudux, he vsito tu codigo y creo que el error fundamental se encuentra en donde estas dando el valor a la variable $ide, ya que le estas diciendo que sera el fetch_array de la consulta que ejecutaste, recuerda que al decirle fetch_array estas jalando los campos en forma de arreglo, o algo asi, bueno realmente veo que no le estas definiendo nada a esa variable ya que te esta devolviendo todos los registros que se encuentran en la columna id de tu tabla, asi que eso es totalmente ambiguo, por que mejor no intentas pasarle el parametro por GET que identifique el id que quieres borrar y lo sustituyes, alli te va un ejemplo: (pero primero en donde esta el problema en tu codigo)

if ($_GET['accion']=="borrar"){
$usuarios_consulta = mysql_query("SELECT id FROM $sql_tabla") or die(mysql_error());
$ide= mysql_fetch_array($usuarios_consulta); // Aqui esta una parte del error que le estas dicendo? pues jala el resultado de la consulta, y como consultaste la columna id de tu tabla X, te esta jalando todos los registros que estan en dicha columna
$total_registros = mysql_num_rows ($usuarios_consulta);
mysql_free_result($usuarios_consulta);

if ($total_registros == 0){
header ("Location: $pag?error=0");
exit;
}

$id_borrar=$ide[id];//Aqui esta la otra parte, que le estas diciendo, a la variable $id_borrar le estas asignando un valor ambiguo ya que el resultado del fetch_array solo te esta diciendo array, por lo tanto en la consulta que borra no borra lo que tu quieres
mysql_query("DELETE FROM $sql_tabla WHERE $id_borrar=$id") or die(mysql_error());
mysql_close();

header ("Location: $pag");
exit;
}

Este es un pequeño ejemplo, quizas muy simple pero te puede servir:
<?

if(isset($_GET[id]))
$id_borrar=$_GET[id];//obviamente el id lo vas a obtener de un formulario donde selecciones el registro o algo asi.

echo $id_borrar;//corroboramos que es el id llave que querias pasar, esto es redundante , pero es mejor ir por las piedritas

$consulta=mysql_query("select * from tablax where id like '$id_borrar'",$conexion);// ya sabes que conexion es la variable que te ayuda a conectarte con la base
while($res=mysql_fetch_row($consulta))
{
aqui puedes pintar una tabla en donde te muestre los datos que se van a borrar
}

$consulta_borra=("DELETE from tablax where id like '$id_borrar'",$conexion);

if($consulta_borra)//esto solo con el fin de comprobar si si se borraron,
{
echo "Datos borrados exitosamente";
}
else
{
echo "Ocurrio un error intentelo de nuevo";
}
?>


Verifica este codigo, la verdad lo escribi aqui mismo asi que no lo corri y puede tener errores pero es para que te des una idea, espero que te ayude.

Última edición por elrmagician; 03/08/2006 a las 22:36
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 01:12.