0

Necesito que una página se llene con los elementos guardados en una base de datos de forma automática como menciono en el encabezado.

Al momento de generar las consultas me da un error que dice:

"Warning : mysqli_result::fetch_assoc() expects exactly 0 parameters, 1 given in C:\XAMMP\htdocs\artesa\formsArtesa\Catalogodecatalogo.php on line 61"

He revisado y no logro comprender el porqué del problema

Adjunto Tabla de MySQL y código:

CREATE TABLE `producto` (
  `id_pro` int(11) NOT NULL,
  `nombre_pro` varchar(50) COLLATE utf8_spanish_ci NOT NULL,
  `image_pro` varchar(250) COLLATE utf8_spanish_ci NOT NULL,
  `descripcion` varchar(250) COLLATE utf8_spanish_ci NOT NULL,
  `precio` decimal(4,0) NOT NULL,
  `id_user` int(11) NOT NULL,
  `categoria` varchar(50) COLLATE utf8_spanish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

<!DOCTYPE HTML>
<html>
 <head>
  <title>Artesanías de mi pueblo</title>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <link rel="stylesheet" href="assets/css/main.css" />
        <link rel="stylesheet" href="assets/css/estilo-ctdect.css">
        <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
 </head>
 <body>
   <div id="wrapper">
     <header id="header">
      <div class="inner">
        <a href="catalogo.php" class="logo">
         <span class="symbol"><img src="images/shop.svg" alt="" /></span><span class="title">Artesanías de mi pueblo.</span>
        </a>
        <nav>
         <ul>
          <li><a href="#menu">Menú</a></li>
         </ul>
        </nav>
      </div>
     </header>
     <nav id="menu">
      <h2>Menu</h2>
      <ul>
       <li><a href="../formsArtesa/catalogo.php">Inicio</a></li>
       <li><a href="catalogo.php">Categorías</a></li>
       <li><a href="quienessomos.php">¿Quiénes Somos?</a></li>
                            <hr>
                            <h2><?php 
                    session_start();
                    if (isset($_SESSION['username']))
                        echo $_SESSION['username']; 
                    else
                        header("location: ../index.html");
                ?></h2>
                            <li><a href="agregarproducto.php">Agregar un producto</a></li>
                            <li><a href="artesano.php">Configurar Cuenta</a></li>
                            <li><a href="../poo.php">Cerrar Sesión</a></li>
      </ul>
     </nav>
                <?php 
                                    include '../head.php';
                                    $categoria=$_GET['categoria'];
                                    $query = "SELECT * FROM producto WHERE categoria='$categoria'";
                                    $ejecutar = $con->query($query);                         
                                    ?>
     <div id="main">
      <div class="inner">
                            <div class="contenido">
                                <h1>Catálogo de <?php echo $categoria ?></h1>
                                <p>Número de Articulos: </p>
                                <hr>
                                <div class="contenido-articulo">
                                <?php
                                include '../head.php';
                                $query = "SELECT * FROM producto WHERE categoria='$categoria'";
                                $ejecutar = $con->query($query);
                                while($fila = $ejecutar->fetch_assoc($query)){
                                ?>
                                    <div class="articulo">
                                        <img src="<?php echo $fila['image_pro']; ?>">
                                        <h4><?php echo $fila['nombre_pro']; ?></h4>
                                        <a href="producto.php?cod_producto=<?php echo $fila['id_pro'] ?>">Ver más</a>
                                    </div>
                                <?php } ?>
                                <div class="regresar">
                                    <a href="catalogo.php">Regresar a Catálogo</a>
                                </div>
                            </div>
      </div>
     </div>
     <footer id="footer">
      <div class="inner">
       <section>
        <h2>Contáctanos</h2>
        <form method="post" action="#">
         <div class="field half first">
          <input type="text" name="name" id="name" placeholder="Nombre" />
         </div>
         <div class="field half">
          <input type="email" name="email" id="email" placeholder="Email" />
         </div>
         <div class="field">
          <textarea name="message" id="message" placeholder="Mensaje"></textarea>
         </div>
         <ul class="actions">
          <li><input type="submit" value="Enviar" class="special" /></li>
         </ul>
        </form>
       </section>
       <section>
        <h2>Síguenos en </h2>
        <ul class="icons">
         <li><a href="https://twitter.com/artesa_sv" class="icon style2 fa-twitter"><span class="label">Twitter</span></a></li>
         <li><a href="https://www.facebook.com/Artesan%C3%ADas-de-mi-pueblo-1869465476709706/" class="icon style2 fa-facebook"><span class="label">Facebook</span></a></li>
         <li><a href="https://www.instagram.com/artesa_sv/" class="icon style2 fa-instagram"><span class="label">Instagram</span></a></li>
         <li><a href="#" class="icon style2 fa-phone"><span class="label">Phone</span></a></li>
         <li><a href="#" class="icon style2 fa-envelope-o"><span class="label">Email</span></a></li>
        </ul>
       </section>
       <ul class="copyright">
        <li>&copy; Derechos Reservados 2017</li><li>Design: <a href="http://html5up.net">HTML5 UP</a></li>
       </ul>
      </div>
     </footer>

   </div>
            <script src="assets/css/slider.js"></script>
   <script src="assets/js/jquery.min.js"></script>
   <script src="assets/js/skel.min.js"></script>
   <script src="assets/js/util.js"></script>
   <script src="assets/js/ie/respond.min.js"></script>
   <script src="assets/js/main.js"></script>
            <script src="assets/js/jquery.js"></script>
        <script src="assets/js/jquery.superslides.js"></script>
 </body>
</html>
Matias Olivera
  • 1,208
  • 8
  • 19
  • Es eso mismo, si lo traduces al español dice qe fetch_assoc() espera exactamente 0 parametros y le metiste un parametro dentro de la funcion, deberia ser fetch_assoc() y no fetch_assoc($query) – Risa__B Aug 10 '17 at 03:55
  • Muchas gracias! un amigo me dijo que incluyera la consulta, y pues sin ella no me imprime ningún error! – Luis Rivera Aug 10 '17 at 04:02
  • Denada brother, bueno yo solo vi ese error, cualquier otro duda que tengas publicala aqui – Risa__B Aug 10 '17 at 04:03
  • Claro! Gracias y cualquier cosa que veas de más o que falte es bienvenido tu comentario – Luis Rivera Aug 10 '17 at 04:05
  • Aqui en esta linea "producto.php?cod_producto=" te recomiendo que uses url amigables , asi la url podria ser "producto/ echo $fila['id_pro'] ?>" – Risa__B Aug 10 '17 at 04:15
  • OK, muchas gracias!! – Luis Rivera Aug 10 '17 at 04:38
  • Este código presenta vulnerabilidades graves de seguridad y no debería ser utilizado en un entorno de producción. 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). Además, también lee sobre XSS: [¿qué es y cómo evitarlo?](https://es.stackoverflow.com/q/53591/250) – Alvaro Montoro Aug 10 '17 at 13:14
  • Siii es cierto lo que dice @Alvaro Montoro tambien, deberias usar en los $_GET , el real_escape_string y tambien deberias usar consultas parametrizadas para evitar inyecciones sql – Risa__B Aug 10 '17 at 18:46
  • @AlvaroMontoro no es un proyecto laboral, es de escuela y por mi nivel no creo necesitar tanta seguridad! – Luis Rivera Aug 11 '17 at 02:41
  • @Risa__B vale, pero ya logré solucionarlo, muchas gracias!!! – Luis Rivera Aug 11 '17 at 02:41
  • 1
    No hay de que ! @Luis Rivera y aunque sea un proyecto escolar creo que deberias apranderlo, por si en un futuro quisieras hacer un proyecto tu mismo, ya tendrias ese conocimiento. – Risa__B Aug 11 '17 at 02:52

1 Answers1

2

Es eso mismo, si lo traduces al español dice que fetch_assoc() espera exactamente 0 parámetros y le metiste un parámetro dentro de la función.

Debería ser fetch_assoc() y no fetch_assoc($query).

Alvaro Montoro
  • 48,157
  • 26
  • 100
  • 179
Risa__B
  • 495
  • 3
  • 6