Quitar elementos mysql

Iniciado por jalbtercero, 4 Marzo 2016, 20:00 PM

0 Miembros y 1 Visitante están viendo este tema.

jalbtercero

Haber para que quede claro lo que quier lograr: tengo una tabla via php-mysql que muestra tres campos: nombre,descripcion,archivo en este ultmo hay un link subido por un usuario. Me gustaria hacer que el usuario que haya subido dicho archivo le aparezca al lado un boton para poder eliminar este contenido, el nombre,descripcion y llink de archivo, vamos toda la fila: mi codigo de la tabla:

Código (php) [Seleccionar]

<?php
session_start
();
?>

<?php
if (isset($_SESSION["usuario"])) {

} else {
echo '<script language="javascript">location.href="log.html"</script>';
}
?>

<html>
<head>
<meta charset="utf-8">
<style>
table {
width: 100%;
border-collapse: collapse;
}

table, td, th {
border: 1px solid black;
padding: 5px;

}

th {
        background-color: #4CAF50;
        color: white;
text-align: left;
}
</style>
</head>
<body>
<?php
require("connect_db2.php");
function 
mostrarDatos($resultados) {
if($resultados !=NULL){
echo '
<tr>
<td>'
.$resultados['nombre'].'</td>
<td>'
.$resultados['descripcion'].'</td>
<td><a href="'
.$resultados['archivo'].'"><img src="icono2.png"></a></td>
</tr>
'
;
} else {

echo "<br/>No hay mas datos<br/>";
}
}


$result mysqli_query($link,"SELECT * FROM archivos");
echo 
"<table>
<tr>
<th>Nombre</th>
<th>Descripcion</th>
<th>Archivo</th>
</tr>"
;
while(
$fila mysqli_fetch_array($result)) {
mostrarDatos($fila);
}
mysqli_free_result($result);
mysqli_close($link);
?>

</body>
</html>

basickdagger

usa un delete...

por ejemplo

Código (php) [Seleccionar]

<td>'.$resultados['nombre'].'</td>
<td>'.$resultados['descripcion'].'</td>
<td><a href="eliminar.php?id='.$resultados['id'].'"><img src="icono2.png"></a></td>

y en eliminar.php
con get

DELETE FROM mi tabla
WHERE id = $_GET['id']





jalbtercero

Cita de: basickdagger en  4 Marzo 2016, 21:00 PM
usa un delete...

por ejemplo

Código (php) [Seleccionar]

<td>'.$resultados['nombre'].'</td>
<td>'.$resultados['descripcion'].'</td>
<td><a href="eliminar.php?id='.$resultados['id'].'"><img src="icono2.png"></a></td>

y en eliminar.php
con get

DELETE FROM mi tabla
WHERE id = $_GET['id']






Ya pero lo que yo quiero hacer es que ese elemento solo se pueda borra si el el campo de nombre el el mismo que el usuario que lo ha subido

xiruko

Hola,

Es díficil ayudarte sin conocer más detalles sobre cómo lo tienes implementado.

Tienes algo que te indique qué usuario ha subido el archivo?
Qué guardas en $_SESSION?

Una manera bastante lógica sería que tuvieras tu tabla de usuarios con una columna llamada por ejemplo "id", que fuera la llave primaria y única de la tabla.

Luego en la tabla de archivos, una columna llamada por ejemplo "usuario_id", que tuviera el identificador único del usuario que subió el archivo. Además, cada archivo debería tener también un identificador único, llamado por ejemplo "id".

Finalmente, en $_SESSION estaría bien que guardaras, entre varias cosas, el identificador único del usuario.

Con todo esto, simplemente pintas el botón si el ID del usuario es el mismo que subió el archivo, y sino no lo pintas. Por ejemplo:

Código (php) [Seleccionar]
function mostrarDatos($resultados) {
    if($resultados != NULL){
        $borrar_html = "";
        if ($_SESSION['usuario_id'] == $resultados['usuario_id']) {
            $borrar_html =
                "<form action='' method='post'>
                    <input type='hidden' name='archivo_id' value='{$resultados['id']}'>
                    <button type='submit' name='borrar_archivo' value='1'>
                 </form>";
        }
        echo
            "<tr>
        <td>{$resultados['nombre']}</td>
        <td>{$resultados['descripcion']}</td>
        <td>
                    <a href='{$resultados['archivo']}'><img src='icono2.png'></a>
                    $borrar_html
                </td>
    </tr>";
    } else {
        echo "<br/>No hay mas datos<br/>";
}


Y ya solo quedaría el código para borrar el archivo. Tendrías que ponerlo al principio de la página y sería algo como esto:

Código (php) [Seleccionar]
if (isset($_POST['borrar_archivo'])) {
    $query = "DELETE FROM archivos WHERE `id` = '{$_POST['archivo_id']}'";
    if (mysqli_query($link, $query)) {
        echo "<p>Archivo borrado correctamente!</p>";
    }
}


Saludos!

jalbtercero

#4
ahora me da este error a que es debido?  mysqli_query() expects parameter 1 to be mysqli, null given

#!drvy

Te da ese error porque no le pasas ningún objeto de MySQLI.. asegurate de abrir la conexión con la misma variable en la misma pagina (o en su defecto en una pagina a la que hagas include).

Saludos