Foros del Web » Programando para Internet » PHP »

dudas con Mysql

Estas en el tema de dudas con Mysql en el foro de PHP en Foros del Web. Tengo una lista en php donde al seleccionar un nombre, este se debe borrar de la base de datos. Ahora bien, el codigo no da ...
  #1 (permalink)  
Antiguo 17/09/2006, 06:41
 
Fecha de Ingreso: septiembre-2006
Mensajes: 48
Antigüedad: 17 años, 7 meses
Puntos: 0
dudas con Mysql

Tengo una lista en php donde al seleccionar un nombre, este se debe borrar de la base de datos.
Ahora bien, el codigo no da ningun error, pero al entrar en phpmyadmin veo que el registro no fue borrado.
Que es lo que pasa?
Por las dudas aca les envio los dos códigos:

borrar1.php
<HTML>
<HEAD>
<HTML>
<HEAD>
<TITLE>Borrar1.php</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Borrar un registro</h1>
<br>
<?
//Conexion con la base
$conexion = mysql_connect("localhost", "root","");
//selección de la base de datos con la que vamos a trabajar
mysql_select_db("base_datos",$conexion);
echo '<FORM METHOD="POST" ACTION="borrar2.php">Nombre<br>';
//Creamos la sentencia SQL y la ejecutamos
$sSQL="Select nombre From prueba Order By nombre";
$result=mysql_query($sSQL);
echo '<select name="nombre">';
//Mostramos los registros en forma de menú desplegable
while ($row=mysql_fetch_array($result))
{echo '<option>'.$row["nombre"];}
mysql_free_result($result)
?>
</select>
<br>
<INPUT TYPE="SUBMIT" value="Borrar">
</FORM>
</div>
</BODY>
</HTML>

borrar2.php
<HEAD>
<TITLE>Borrar2.php</TITLE>
</HEAD>
<BODY>
<?
$nombre=$_POST['nombre'];
//Conexion con la base
$conexion=mysql_connect("localhost","root","");
//selección de la base de datos con la que vamos a trabajar
mysql_select_db("base_datos",$conexion);
//Creamos la sentencia SQL y la ejecutamos
$sSQL="Delete From prueba Where nombre='$nombre;'";
$result=mysql_query($sSQL);
if($result)
{
echo "borrado";
}
else
{
echo "error";
}
?>
<h1><div align="center">Registro Borrado</div></h1>
</BODY>
</HTML>
  #2 (permalink)  
Antiguo 17/09/2006, 07:08
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
El error lo veo en el marcado del SELECT. Más concretamente en los OPTION. Pones <option> a secas sin ningún valor, entonces al servidor envías cadena vacía en lugar del nombre que quieres enviar. Esto lo haces cambiando la línea de los option así:

{echo '<option'.$row["nombre"].'>'.$row["nombre"];}

Y $_POST['nombre'] en el script 2 ahora sí tiene el valor escogido.
  #3 (permalink)  
Antiguo 17/09/2006, 07:53
 
Fecha de Ingreso: septiembre-2006
Mensajes: 48
Antigüedad: 17 años, 7 meses
Puntos: 0
al poner lo que me dijiste no me carga la base de datos.
Estoy cada vez mas confundido
  #4 (permalink)  
Antiguo 17/09/2006, 07:58
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
¿Qué quieres decir con no me carga la BD? ¿Puedes poner el nuevo código cambiado?
  #5 (permalink)  
Antiguo 17/09/2006, 08:09
 
Fecha de Ingreso: septiembre-2006
Mensajes: 48
Antigüedad: 17 años, 7 meses
Puntos: 0
Lo que quiero decir es que no me carga la base de datos en la lista desplegable.
borrar1.php
<HTML>
<HEAD>
<HTML>
<HEAD>
<TITLE>Borrar1.php</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Borrar un registro</h1>
<br>
<?
//Conexion con la base
$conexion = mysql_connect("localhost", "root","");
//selección de la base de datos con la que vamos a trabajar
mysql_select_db("base_datos",$conexion);
echo '<FORM METHOD="POST" ACTION="borrar2.php">Nombre<br>';
//Creamos la sentencia SQL y la ejecutamos
$sSQL="Select nombre From prueba Order By nombre";
$result=mysql_query($sSQL);
echo '<select name="nombre">';
//Mostramos los registros en forma de menú desplegable
while ($row=mysql_fetch_array($result))
{echo '<option'.$row["nombre"].'>'.$row["nombre"];}
mysql_free_result($result)
?>
</select>
<br>
<INPUT TYPE="SUBMIT" value="Borrar">
</FORM>
</div>
</BODY>
</HTML>

<HEAD>
<TITLE>Borrar2.php</TITLE>
</HEAD>
<BODY>
<?
$nombre=$_POST['nombre'];
//Conexion con la base
$conexion=mysql_connect("localhost","root","");
//selección de la base de datos con la que vamos a trabajar
mysql_select_db("base_datos",$conexion);
//Creamos la sentencia SQL y la ejecutamos
$sSQL="Delete From prueba Where nombre='$nombre;'";
$result=mysql_query($sSQL);
if($result)
{
echo "borrado";
}
else
{
echo "error";
}
?>
<h1><div align="center">Registro Borrado</div></h1>
</BODY>
</HTML>
  #6 (permalink)  
Antiguo 17/09/2006, 08:19
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
Ups..

Perdón, me dejé de poner el value en el option, la línea es:

{echo "<option value=\"".$row["nombre"]."\">".$row["nombre"];}

Los Select envían el valor del option seleccionado al servidor, definible con value:

<option value="valor que se envia">Valor que ve el usuario</option>

Ahora sí debería funcionar.
  #7 (permalink)  
Antiguo 17/09/2006, 15:13
 
Fecha de Ingreso: septiembre-2006
Mensajes: 48
Antigüedad: 17 años, 7 meses
Puntos: 0
Podes creer que sigue sin funcionar.
No da errores pero no logro borrar el registro de la base de datos, al entrar al phpmyadmin el registro sigue estando ahi
  #8 (permalink)  
Antiguo 17/09/2006, 17:08
Avatar de pichonservis
(Desactivado)
 
Fecha de Ingreso: junio-2006
Ubicación: Peru / Chimbote
Mensajes: 364
Antigüedad: 17 años, 10 meses
Puntos: 1
bueno amigo...siempre le puse lo mismo..peor ami me resulta bien

base_datos ... no veo errores....amigo...
  #9 (permalink)  
Antiguo 17/09/2006, 18:11
 
Fecha de Ingreso: septiembre-2006
Mensajes: 48
Antigüedad: 17 años, 7 meses
Puntos: 0
Y se puede saber el motivo por el que no lo borra de la base de datos?
Habra que configurar algo en el phpmyadmin?
Lo peor de todo es que me deja insertar un registro, pero no eliminarlo
  #10 (permalink)  
Antiguo 17/09/2006, 18:17
 
Fecha de Ingreso: septiembre-2006
Mensajes: 48
Antigüedad: 17 años, 7 meses
Puntos: 0
me faltara configurar algo en el PHPMyAdmin?
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:32.