Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: jalbtercero en 4 Marzo 2016, 20:00 pm



Título: Quitar elementos mysql
Publicado por: jalbtercero en 4 Marzo 2016, 20:00 pm
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
  1. <?php
  2. ?>
  3. <?php
  4. if (isset($_SESSION["usuario"])) {
  5.  
  6. } else {
  7. echo '<script language="javascript">location.href="log.html"</script>';
  8. }
  9. ?>
  10. <html>
  11. <head>
  12. <meta charset="utf-8">
  13. <style>
  14. table {
  15. width: 100%;
  16. border-collapse: collapse;
  17. }
  18.  
  19. table, td, th {
  20. border: 1px solid black;
  21. padding: 5px;
  22.  
  23. }
  24.  
  25. th {
  26.        background-color: #4CAF50;
  27.        color: white;
  28. text-align: left;
  29. }
  30. </style>
  31. </head>
  32. <body>
  33. <?php
  34. require("connect_db2.php");
  35. function mostrarDatos($resultados) {
  36. if($resultados !=NULL){
  37. echo '
  38. <tr>
  39. <td>'.$resultados['nombre'].'</td>
  40. <td>'.$resultados['descripcion'].'</td>
  41. <td><a href="'.$resultados['archivo'].'"><img src="icono2.png"></a></td>
  42. </tr>
  43. ';
  44. } else {
  45.  
  46. echo "<br/>No hay mas datos<br/>";
  47. }
  48. }
  49.  
  50.  
  51. $result = mysqli_query($link,"SELECT * FROM archivos");
  52. echo "<table>
  53. <tr>
  54. <th>Nombre</th>
  55. <th>Descripcion</th>
  56. <th>Archivo</th>
  57. </tr>";
  58. while($fila = mysqli_fetch_array($result)) {
  59. mostrarDatos($fila);
  60. }
  61. mysqli_close($link);
  62. ?>
  63. </body>
  64. </html>
  65.  


Título: Re: Quitar elementos mysql
Publicado por: basickdagger en 4 Marzo 2016, 21:00 pm
usa un delete...

por ejemplo

Código
  1. <td>'.$resultados['nombre'].'</td>
  2. <td>'.$resultados['descripcion'].'</td>
  3. <td><a href="eliminar.php?id='.$resultados['id'].'"><img src="icono2.png"></a></td>
  4.  
  5. y en eliminar.php
  6. con get
  7.  
  8. DELETE FROM mi tabla
  9. WHERE id = $_GET['id']
  10.  
  11.  




Título: Re: Quitar elementos mysql
Publicado por: jalbtercero en 5 Marzo 2016, 01:11 am
usa un delete...

por ejemplo

Código
  1. <td>'.$resultados['nombre'].'</td>
  2. <td>'.$resultados['descripcion'].'</td>
  3. <td><a href="eliminar.php?id='.$resultados['id'].'"><img src="icono2.png"></a></td>
  4.  
  5. y en eliminar.php
  6. con get
  7.  
  8. DELETE FROM mi tabla
  9. WHERE id = $_GET['id']
  10.  
  11.  




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


Título: Re: Quitar elementos mysql
Publicado por: xiruko en 5 Marzo 2016, 06:23 am
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
  1. function mostrarDatos($resultados) {
  2.    if($resultados != NULL){
  3.        $borrar_html = "";
  4.        if ($_SESSION['usuario_id'] == $resultados['usuario_id']) {
  5.            $borrar_html =
  6.                "<form action='' method='post'>
  7.                    <input type='hidden' name='archivo_id' value='{$resultados['id']}'>
  8.                    <button type='submit' name='borrar_archivo' value='1'>
  9.                 </form>";
  10.        }
  11.        echo
  12.            "<tr>
  13.        <td>{$resultados['nombre']}</td>
  14.        <td>{$resultados['descripcion']}</td>
  15.        <td>
  16.                    <a href='{$resultados['archivo']}'><img src='icono2.png'></a>
  17.                    $borrar_html
  18.                </td>
  19.    </tr>";
  20.    } else {
  21.        echo "<br/>No hay mas datos<br/>";
  22. }

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
  1. if (isset($_POST['borrar_archivo'])) {
  2.    $query = "DELETE FROM archivos WHERE `id` = '{$_POST['archivo_id']}'";
  3.    if (mysqli_query($link, $query)) {
  4.        echo "<p>Archivo borrado correctamente!</p>";
  5.    }
  6. }

Saludos!


Título: Re: Quitar elementos mysql
Publicado por: jalbtercero en 5 Marzo 2016, 21:07 pm
ahora me da este error a que es debido?  mysqli_query() expects parameter 1 to be mysqli, null given


Título: Re: Quitar elementos mysql
Publicado por: #!drvy en 6 Marzo 2016, 17:53 pm
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