No puedo borrar un registro de la base de datos en PHP

S

Buenas
Intento borrar un registro de la base de datos en PHP y no puedo.Tal cual esta el código ahora muestra la pantalla en blanco y no muestra ningún error. Tampoco muestra el echo que he puesto. Si quito el id isset y hago un echo "$cond" si que me muestra el codigo pero sigue sin eliminar el registro.

Ayuda! gracias de antemano

Fichero productos.php
<?php
require('conexion.txt');
session_start();

$result=mysqli_query($link,"select * from productos");
echo "<table>";
echo "<tr> <td>ID</td><td>Nombre</td> </tr>";

echo "Añadir nuevo producto: <a href='anadir.php'> Añadir nuevo producto</a>";

while ($row=mysqli_fetch_array($result)){
echo "<tr><td>".$row['idProducto']."</td><td>".$row['nombre']."</td><td> <a href='modificar.php?cod=".$row['idProducto']."'> M <a> <a href='borrar.php?
cod=".$row['idProducto']."'> B <a><a href='consultar.php?cod=".$row['idProducto']."'> C <a><td></tr>";
}

echo "</table>"

?>

Fichero borrar.php
<?php
require('conexion.txt');
session_start();

//si quitamos el if isset muestra en mensaje pero no elimina de la bd
if (isset($SESSION['usuario'])){
$cod=$
REQUEST['cod'];

$cond="delete from productos where idProductos='$cod'";

$result= mysqli_query($link,$cond);
echo "Se ha borrado el registro";
}
?>

yarviT0
#1SoySara:

$cond="delete from productos where idProductos='$cod'";

has probado a usar idProductos LIKE '$cod'

1 respuesta
S

#2 Sí. Sigue sin mostrar nada por pantalla es como si no leyera nada. si quito el if isset y hago un echo a $cond si que me muestra por pantalla el valor de $cod y el mensaje de registro borrado, aunque sigue sin borrar el registro..

Edit: He conseguido que borre pero quitando el if isset. No se si este era necesario.

<?php
require('conexion.txt');
session_start();

$cod=$_REQUEST['cod'];
$cond="delete from productos where idProducto='$cod'";
$result= mysqli_query($link,$cond);
echo "Se ha borrado el registro";
?>

De todas formas quiero hacerlo funcionar con el if isset. ¿Alguna ayuda?

yarviT0

pero has comprobado que tienes algo en $_SESSION?

1 respuesta
S

#4 ¿Como lo compruebo? Se que son cosas básicas, pero acabo de empezar con php..

1 respuesta
alexsanro

#5 Imprime por ejemplo esa variable haz:

print_r($_SESSION);

Eso te traerá toda las variables guardadas en la sesión.

1 respuesta
Wasd

Primero, para descartar errores de base, borra el registro manualmente en mysql, no vaya a ser que tengas una FK que te impida borrarlo.
Segundo, activa los errores de PHP.
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Tercero, si con echo no ves nada, prueba con var_dump($variable); die;
Imprímete la query final justo antes de pasarla por el mysqli_query() a ver si es todo correcto.

Por último, a corto/medio plazo echale un vistazo al X debug, que para estos casos te puede ayudar bastante (te permite ir ejecutando el código linea por linea viendo qué pasa con cada variable/instrucción, entre otras cosas)

1 respuesta
S

#6 #7

El problema es que no tengo la sesión abierta la variable $session esta vacía. Por eso no entra en el if.
¿Porque no tiene valor la variable?

Este es el código que utilizado para iniciar sesión:

<?php
session_start();	
if (isset($_session['usuario'])){
	echo "bienvenido".$_session['usuario']."<br>";
	echo "<a href='salir.php'> Cerrar sesión </a><br>";
}else{?>
<form action='seguridad.php'>
	Nombre <input type='text' name='nom'><br>
	Contraseña <input type='text' name='pass'><br>
	<input type='submit' name='Enviar' value='ENVIAR'>
</form>

<?php
}
?>
1 respuesta
yarviT0

#8 dale un vistazo
http://php.net/manual/es/function.session-start.php
session_start();

echo 'Bienvenido a la página #1';

$SESSION['color'] = 'verde';
$
SESSION['animal'] = 'gato';
$_SESSION['instante'] = time();

En algún sitio tendrás que darles valores a Session

1 respuesta
S

#9 ¿El valor de la variable no lo coge de la base de datos cuando comprueba en el ultimo fichero que he pasado que el usuario y contraseña coincide con alguno de los registros de la BD?
Si pongo como fija una variable de sesión solo podre entrar con esa sesión y eso no me interesa. Quiero entrar con cualquier usuario registrado en la BD

yarviT0

no veo en ningún lado que establezcas los valores de sesión con los datos de tu bd

2 respuestas
S

#11 Ah ya te entiendo, voy a ello.

S

#11
Ya le he dado valor pero me sigue sin coger la variable.Este es el nuevo archivo añadido.

<?php
session_start();
require("conexion.txt");
$nomb=$_REQUEST['nom'];
$password=$_REQUEST['pass'];

$consulta= "select * from clientes where nombre='$nomb' and pwd='$password'";

$result=mysqli_query($link,$consulta);

if ($row=mysqli_fetch_array($result)) {
	$_session['usuario']=$nomb;
	echo "Usuario correcto <br>";
	echo "<a href='productos.php'> Continuar</a>";
	echo "<a href='salir.php'> Cerrar sesion </a>";
}else{
	echo "El usuario no existe en la base de datos";
	echo "<a href='formulario.php'> Volver iniciar sesión </a>";
}
?>
1 respuesta
yarviT0

#13 no recuerdo mucho de php pero prueba a usar $_SESSION (mayúsculas); has comprobado que metes un valor verdad?.

PD esa consulta a pelo con pwd='$password'"; es inseguridad pura:
https://www.w3schools.com/sql/sql_injection.asp

Merkury

Renombra conexion.txt a .php anda y quitale las ' a $cod que es un integer.

Usuarios habituales