Como quitar una fila con delete desde un formulario con php y mysql?
Hola de nuevo por el foro,
En esta ocasión planteo quitar una fila de una tabla, cuyo dato no está relacionado con otros.
Os dejo el código que tengo que siempre viene bien y os adelanto el problema que surge.
El código pretende borrar datos de phpmyadmin, lo cual he conseguido, pero al volver a insertar el mismo dato (para asegurarme que va bien) a través del panel phpmyadmin y volver a quitarlo, me da un error.
He hecho un echo de la variable que he seleccionado, en el mismo código, para comprobar si funciona ó no, y me aparece un error.
Lo que me aparece en el navegador es:
Notice: Undefined variable: nombre in C:\xampp\htdocs\EJERCICIO_mysql\formborrar.php on line 27
El dato ha sido borrado satisfactoriamente
Yo creo que quizás el error viene porque ha cambiado el índice en el array, y quizás ya no sea 6, pero he probado con otro índice y no funciona.
No sé.....
<?php
if(!isset($_POST['submit'])) {
?>
<form method="POST" action="formborrar.php" class="form">
<fieldset class="fieldset">
<legend class="legend">BORRAR DATOS</legend>
<table>
<tr>
<td style="font-weight:bold;">¿Quiere borrar alguna asignatura?</td>
<td>
<select type="text" name="nombre">
<option value="<?php $nombre[0];?>">php</option>
<option value="<?php $nombre[1];?>">css</option>
<option value="<?php $nombre[2];?>">html</option>
<option value="<?php $nombre[3];?>">Javascript</option>
<option value="<?php $nombre[4];?>">html5</option>
<option value="<?php $nombre[5];?>">css3</option>
<option value="<?php $nombre[6];?>">Dreamweaver</option>
</select>
</td>
</tr>
</table><br><br>
<input type="submit" name="submit" value="Borrar"/>
</fieldset>
</form>
</body>
</html>
<?php
}
else {
echo '<html>';
echo '<head>';
//echo '<meta http-equiv="Refresh" content="5; URL=http://localhost/EJERCICIO_mysql/ejercicio_mysql.php">';
echo '<meta charset="UTF-8"/>';
echo '<link type="text/css" rel="stylesheet" href="stylo_ejerciciomysql.css" media="screen" />';
echo '<title>formulario del ejercicio mysql</title>';
echo '</head>';
echo '<body style="font-family: verdana,arial, sans-serif; font-size: 10pt;">';
//PARA OBTENER LOS DATOS SI HAY ENVIO
// ESTABLECER CONEXION CON LA BASE DE DATOS Y RECUPERAR LAS VARIABLES DEL FORMULARIO
$nombre=$_POST["nombre"];
include('conexion_mysql.php');
// BORRAR REGISTROS Y EVALUACION DE LA RESPUESTA DE LA BBDD
echo $_POST["nombre"];
$borrar="DELETE FROM asignaturas WHERE nombre='{$nombre[6]}'";
$borrador=mysql_query($borrar,$link) or die;
$my_error=mysql_error($link);
if(!empty($my_error)){
echo "Ha habido un error al borrar los valores". $my_error;
}
else {
echo '<p class="parrafoformulario">El dato ha sido borrado satisfactoriamente';
include('desconexion(b)_mysql.php');
}
}
?>
</body>
</html>
Gracias por vuestras respuestas
JuaRoAl
Yo creo que el error está aquí:
$borrar="DELETE FROM asignaturas WHERE nombre='{$nombre[6]}'";
Prueba con:
$borrar="DELETE FROM asignaturas WHERE nombre='{$nombre}'";
Ya me dices.
excel
Wuola JuaRoAl
Buen intento.....pero....no funciona.
He cambiado también los values por números, ahora no me aparece el error de notice... y en el echo me sale el número del value pero lo realmente importante que es que desaparezca de phpmyadmin, no lo hace.
Sigo intentándolo. En cualquier caso, gracias por tu aportación.
Un saludo,
Segol
excel
Buenos días,
Problema solucionado!!
Os cuento cómo...simplemente he quitado los values de los option del formulario, y ya se borra el dato de phpmyadmin.
Un saludo,
Segol
JuaRoAl
Hola,
me alegro que te funcione. Justo venía a preguntarte que me explicases esos values que no termino de entender xD
Un saludo!
excel
Hola de nuevo,
Si JuaRoAl, realmente los values poca cosa hacían...
Pero para dejarlo listo de veras he utilizado un bucle while y así no tengo que poner uno a uno todos los option.
Os dejo el código
<?php
include('conexion_mysql.php');
$asignaturas=mysql_query("SELECT asignaturas.nombre as asig FROM asignaturas",$link);
if($asignaturas===false) die(mysql_error());
while($row=mysql_fetch_assoc($asignaturas)) {
echo '<option>'.$row["asig"].'</option>';
}
?>
JuaRoAl
Yo lo suelo poner así:
<select name="idioma">
<option value="">Seleccionar</option>
<?php while($idioma=mysql_fetch_assoc($lista_idiomas)): ?>
<option value="<?php echo $idioma["id"]; ?>"><?php echo $idioma["nombre"]; ?></option>
<?php endwhile; ?>
</select>
excel
Tomo nota de tu código JuaRoAl
Gracias
orallo
Buenas,
Solo una sugerencia desde la experiencia... En base de datos nunca borres nada nunca.
Añadele un campo a la tabla y haz lo que se llama un "borrado logico." Que consiste en poner un booleano en cada fila que quieres borrar y cuando haces el select para leer los datos, simplemente añade la condicion "WHERE BORRADO <> 1"
Es mejor poder desborrar que perder la informacion para siempre...
Saludos,
-Orallo