es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible obtener datos de otras tablas dentro de un bucle foreach después de cierta cantidad de resultados en PHP?

Estoy deseando saber si es posible. Lo que quiero es, supongamos, tener una tabla1 con 10 filas y tener otras dos tablas con 2 filas cada una. Ahora, mi bucle foreach está obteniendo 10 filas de la tabla1, pero después de cada 2 filas quiero mostrar una fila de la tabla2 y después de la 4ª fila quiero mostrar una fila de la tabla3. ¿Cómo puedo lograr esto?

Por favor, vea la imagen adjunta.
enter image description here

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, puedes usar una variable de contador que se incrementa en cada ejecución del bucle. Dentro del bucle, puedes usar el operador módulo para verificar si el contador es divisible por 2 o por 4. Si es divisible por 2, puedes obtener y mostrar una fila de la tabla_2. Si es divisible por 4, puedes obtener y mostrar una fila de la tabla_3. Aquí tienes un ejemplo de código para ilustrar esto:

    <?php
    // Conectar a la base de datos
    $servername = "localhost";
    $username = "usuario";
    $password = "contraseña";
    $dbname = "miDB";
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Consulta para obtener datos de la tabla_1
    $sql = "SELECT * FROM table_1";
    $result = $conn->query($sql);
    
    // Variable de contador
    $i = 0;
    
    // Recorrer cada fila de la tabla_1
    while($row = $result->fetch_assoc()) {
      // Mostrar fila de la tabla_1
      echo $row['nombre_de_columna'];
    
      // Verificar si el contador es divisible por 2
      if ($i % 2 == 0) {
        // Consulta para obtener datos de la tabla_2
        $sql2 = "SELECT * FROM table_2 LIMIT 1";
        $result2 = $conn->query($sql2);
    
        // Mostrar fila de la tabla_2
        $row2 = $result2->fetch_assoc();
        echo $row2['nombre_de_columna'];
      }
    
      // Verificar si el contador es divisible por 4
      if ($i % 4 == 0) {
        // Consulta para obtener datos de la tabla_3
        $sql3 = "SELECT * FROM table_3 LIMIT 1";
        $result3 = $conn->query($sql3);
    
        // Mostrar fila de la tabla_3
        $row3 = $result3->fetch_assoc();
        echo $row3['nombre_de_columna'];
      }
    
      // Incrementar la variable del contador
      $i++;
    }
    
    // Cerrar la conexión a la base de datos
    $conn->close();
    ?>
    

    En este ejemplo, nos conectamos a la base de datos y obtenemos datos de la tabla_1 usando un bucle while. Dentro del bucle, primero mostramos la fila de la tabla_1. Luego, verificamos si el contador es divisible por 2 o por 4 y obtenemos y mostramos filas de la tabla_2 y tabla_3 según corresponda. Finalmente, incrementamos la variable del contador y continuamos con la siguiente iteración del bucle. Al final, cerramos la conexión a la base de datos.

Comments are closed.