1

Este es el error que me aparece:

Notice: Undefined index: valoracion in C:\xampp\htdocs\FAVORITOS\eliminarfavorito.php on line 14

Mi código:

<?php

session_start();

$conexion = new sqlite3('favoritos.db');

$usuario = $_SESSION['usuario'];
$contrasena = $_SESSION['contrasena'];

$titulo = $_GET['titulo'];
$direccion = $_GET['direccion'];
$categoria = $_GET['categoria'];
$comentario = $_GET['comentario'];
$valoracion = $_GET['valoracion'];

$consulta = "DELETE FROM favoritos WHERE usuario='".$usuario."' AND contrasena='".$contrasena."' AND titulo='".$titulo."' AND direccion='".$direccion."' AND categoria='".$categoria."' AND comentario='".$comentario."' AND valoracion='".$valoracion."'";

$resultado = $conexion->exec($consulta);

$conexion->close();

?>

ESTA ES LA OTRA PARTE DONDE INSERTE LA COLUMNA ELIMINAR:

<?php

session_start();
echo "Tu usuario es: ".$_SESSION['usuario'],"<br />","Tu contraseña es: ",$_SESSION['contrasena'];

//Crear conexion
$conexion = new sqlite3('favoritos.db');

//Establecer una consulta
$consulta = "SELECT * FROM favoritos WHERE usuario='Criss' AND contrasena='Criss';";

//Ejecutar la consulta
$resultado = $conexion->query($consulta);

//Imprimir la consulta
echo "
<table border=1 width=100%>
<tr>
    <td>Titulo</td>
    <td>Direccion</td>
    <td>Categoria</td>
    <td>Comentario</td>
    <td>Valoracion</td>
    <td></td>
    <td></td>
</tr>
";

while ($fila = $resultado->fetchArray()){
    echo "<tr><td>".$fila['titulo']."</td><td>".$fila['direccion']."</td><td>".$fila['categoria']."</td><td>".$fila['comentario']."</td><td>".$fila['valoracion']."</td><td><a href='eliminarfavorito.php?titulo=".$fila['titulo']."&direccion=".$fila['direccion']."&categoria=".$fila['categoria']."&comentario=".$fila['comentario']."&valoracion".$fila['valoracion']."'>Eliminar</a></td><td><a href='formularioactualizar.php?titulo=".$fila['titulo']."&direccion=".$fila['direccion']."&categoria=".$fila['categoria']."&comentario=".$fila['comentario']."&valoracion".$fila['valoracion']."'>Actualizar</a></td></tr>";
}

//Añadir un registro
echo "
<tr>
    <form action='crearfavorito.php' method='POST'>
    <td><input type='text' name='titulo'></td>
    <td><input type='text' name='direccion'></td>
    <td><select name='categoria'>
        <option value='salud'>Salud</option>
        <option value='trabajo'>Trabajo</option>
        <option value='hobby'>Hobby</option>
        <option value='personal'>Personal</option>
        <option value='otros'>Otros</option>
    </td>
    <td><input type='text' name='comentario'></td>
    <td><input type='text' name='valoracion'></td>
    <td><input type='submit'></td><td></td>
</tr>
";

echo "</table>";

//Cerramos la consulta
$conexion->close();

?>
Francisco Romero
  • 16,194
  • 5
  • 30
  • 61
Criss
  • 29
  • 9
  • 1
    Lee sobre [inyección SQL](https://es.stackoverflow.com/q/10518/250) y [cómo evitarla en PHP](https://es.stackoverflow.com/q/18232/250). Y no uses tu código en producción o puedes tener graves problemas. Por ejemplo, si un usuario dice que su nombre es `' OR 1=1;--` borrará toda la tabla completa y no sólo el registro que quieres. – Alvaro Montoro Jul 31 '17 at 14:35

3 Answers3

0

Esto te pasa porque a veces dejas vacía esta variable :

$valoracion = $_GET['valoracion'];//el get es null

Si debe tener siempre algún valor para que no te genere errores podrías hacer lo siguiente:

$valoracion = ($_GET['valoracion']!=null)? $_GET['valoracion'] : "";

Lucas D.A.W.
  • 2,334
  • 1
  • 9
  • 31
0

Es que estas usando el metodo POST para enviar el form, asi que si quieres usar get, tienes que ponerle el metodo get al formulario

echo "
<tr>
    <form action='crearfavorito.php' method='GET'>
    <td><input type='text' name='titulo'></td>
    <td><input type='text' name='direccion'></td>
    <td><select name='categoria'>
        <option value='salud'>Salud</option>
        <option value='trabajo'>Trabajo</option>
        <option value='hobby'>Hobby</option>
        <option value='personal'>Personal</option>
        <option value='otros'>Otros</option>
    </td>
    <td><input type='text' name='comentario'></td>
    <td><input type='text' name='valoracion'></td>
    <td><input type='submit'></td><td></td>
</tr>
;
Risa__B
  • 495
  • 3
  • 6
0

El problema que esta suciendo en que no inicializas la variable que envias en la url:

echo "<tr><td>".$fila['titulo']."</td><td>".$fila['direccion']."</td><td>".$fila['categoria']."</td><td>".$fila['comentario']."</td><td>".$fila['valoracion']."</td><td><a href='eliminarfavorito.php?titulo=".$fila['titulo']."&direccion=".$fila['direccion']."&categoria=".$fila['categoria']."&comentario=".$fila['comentario']."&valoracion".$fila['valoracion']."'>Eliminar</a></td><td><a href='formularioactualizar.php?titulo=".$fila['titulo']."&direccion=".$fila['direccion']."&categoria=".$fila['categoria']."&comentario=".$fila['comentario']."&valoracion".$fila['valoracion']."'>Actualizar</a></td></tr>";

Lo que debes hacer es poner un igual.

&valoracion=".$fila['valoracion']."'>Actualizar</a></td></tr>"
J. Castro
  • 2,477
  • 7
  • 18
  • 31
  • Muchas pero muchas gracias :D acabo de solucionarlo no me di cuenta de ese error te lo agradezco :3 ^^ – Criss Jul 31 '17 at 14:57