Elomar Adam
Elomar Adam

Reputation: 251

7 fetch_assoc in a while fetch_assoc

I hope you're having a great day. I have a drag and drop system
in my website and basically it's a website for schemes for residents. If you want to make a new
scheme you have a list of pictogrammen (icons) and you drag the icons that represent activities
next to each of the residents. Now the inserting perfectly works but showing the data does not.

This is my tables structure:

1. Schemes:

2. Residents (=bewoners):

3. Activities (=pictogrammen):

Pretty much this is what I need to display the data. As you can see the "Schemes" table is the
main one. Now for me to display the schemes, It will happen via an HTML-table. Let me jump
straight into the code: Rangnr is basically the place where the activity (icon) is

<div id="MainDiv">
  <div id="ListBewoners">
      <table id="ListBewonersUL">                                          
          <?php                                      
          $sql = "SELECT *
                  FROM ActiviteitenSchema A, Bewoners B
                  WHERE A.Bewoner = B.IDBewoner  
                  GROUP BY Bewoner
                  ";

      $sqlrang1 = "SELECT * FROM ActiviteitenSchema A, Pictogrammen P 
                  WHERE P.IDPictogram = A.Activiteit AND Rangnr = 1 
                  AND DatumAangemaakt = $datumAangemaakt";
      $sqlrang2 = "SELECT * FROM ActiviteitenSchema A, Pictogrammen P 
                  WHERE P.IDPictogram = A.Activiteit AND Rangnr = 2 
                  AND DatumAangemaakt = $datumAangemaakt";
      $sqlrang3 = "SELECT * FROM ActiviteitenSchema A, Pictogrammen P 
                  WHERE P.IDPictogram = A.Activiteit AND Rangnr = 3
                  AND DatumAangemaakt = $datumAangemaakt";
      $sqlrang4 = "SELECT * FROM ActiviteitenSchema A, Pictogrammen P 
                  WHERE P.IDPictogram = A.Activiteit AND Rangnr = 4
                  AND DatumAangemaakt = $datumAangemaakt";
      $sqlrang5 = "SELECT * FROM ActiviteitenSchema A, Pictogrammen P 
                  WHERE P.IDPictogram = A.Activiteit AND Rangnr = 5 
                  AND DatumAangemaakt = $datumAangemaakt";
      $sqlrang6 = "SELECT * FROM ActiviteitenSchema A, Pictogrammen P 
                  WHERE P.IDPictogram = A.Activiteit AND Rangnr = 6 
                  AND DatumAangemaakt = $datumAangemaakt";
      $sqlrang7 = "SELECT * FROM ActiviteitenSchema A, Pictogrammen P 
                  WHERE P.IDPictogram = A.Activiteit AND Rangnr = 7 
                  AND DatumAangemaakt = $datumAangemaakt";

      $res = mysqli_query($mysqli, $sql); 
      $resRang1 = mysqli_query($mysqli, $sqlrang1);
      $resRang2 = mysqli_query($mysqli, $sqlrang2);
      $resRang3 = mysqli_query($mysqli, $sqlrang3);
      $resRang4 = mysqli_query($mysqli, $sqlrang4);
      $resRang5 = mysqli_query($mysqli, $sqlrang5);
      $resRang6 = mysqli_query($mysqli, $sqlrang6);
      $resRang7 = mysqli_query($mysqli, $sqlrang7);

        while ($row = mysqli_fetch_assoc($res)){
      ?>
      <tr>
          <td><?php echo $row["IDBewoner"] ?></td>  
          <td><?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row['Foto']) . '" width="90" height="90">'  ?></td>
      <?php                
          $row1 = mysqli_fetch_assoc($resRang1);
          $row2 = mysqli_fetch_assoc($resRang2);
          $row3 = mysqli_fetch_assoc($resRang3);
          $row4 = mysqli_fetch_assoc($resRang4);
          $row5 = mysqli_fetch_assoc($resRang5);
          $row6 = mysqli_fetch_assoc($resRang6);
          $row7 = mysqli_fetch_assoc($resRang7);

          ?>
      <!-- Rang1 Controle --> 
      <?php 
          if(!empty($row1)) {
      ?>
          <td><?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row1['Pictogram']) . '" width="90" height="90">' ?></td>
      <?php 
          } else {
      ?> 
          <td><?php echo "Empty"; ?></td>
      <?php        
          }
      ?>

      <!-- Rang2 Controle -->    
      <?php 
          if(!empty($row2)) {
      ?>
          <td><?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row2['Pictogram']) . '" width="90" height="90">' ?></td>
      <?php
          } else { 
      ?>
          <td><?php echo "Empty2"; ?></td>
      <?php  
          }
      ?>

      <!-- Rang3 Controle -->    
      <?php 
          if(!empty($row3)) {
      ?>
          <td><?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row3['Pictogram']) . '" width="90" height="90">' ?></td>
      <?php
          } else { 
      ?>
          <td><?php echo "Empty3"; ?></td>
      <?php  
          }
      ?>

      <!-- Rang4 Controle -->    
      <?php 
          if(!empty($row4)) {
      ?>
          <td><?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row4['Pictogram']) . '" width="90" height="90">' ?></td>
      <?php
          } else { 
      ?>
          <td><?php echo "Empty4"; ?></td>
      <?php  
          }
      ?>

      <!-- Rang5 Controle -->    
      <?php 
          if(!empty($row5)) {
      ?>
          <td><?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row5['Pictogram']) . '" width="90" height="90">' ?></td>
      <?php
          } else { 
      ?>
          <td><?php echo "Empty5"; ?></td>
      <?php  
          }
      ?>

      <!-- Rang6 Controle -->    
      <?php 
          if(!empty($row6)) {
      ?>
          <td><?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row6['Pictogram']) . '" width="90" height="90">' ?></td>
      <?php
          } else { 
      ?>
          <td><?php echo "Empty6"; ?></td>
      <?php  
          }
      ?>

      <!-- Rang7 Controle -->    
      <?php 
          if(!empty($row7)) {
      ?>
          <td><?php echo '<img src="data:image/jpeg;base64,' . base64_encode($row7['Pictogram']) . '" width="90" height="90">' ?></td>
      <?php
          } else { 
      ?>
          <td><?php echo "Empty7"; ?></td>
      <?php  
          }
      ?>

      </tr>
      <?php                                                   
          }
      ?>

  </table>

  </div>
</div>

As a result, this how the data looks like: Displaying the data using the above code

But the problem is, this is how I inserted them (sorry a little css problem): Excuse me about the design

The problem: The inserted data are perfectly good inserted and I've checked them in the database, but displaying
them is not working as it should be. Is there a better way of fetching the table 8 times? Because
Apparently my code doesn't really work.

Upvotes: 1

Views: 1155

Answers (1)

Ricardo Souza
Ricardo Souza

Reputation: 16456

First of all, as some comments pointed, you can grab the data in one query and loop through it.

All you need to mantain the order of when they where inserted is use an ORDER BY clause:

SELECT P.Pictogram, A.Rangnr
FROM ActiviteitenSchema A
INNER JOIN Pictogrammen P ON P.IDPictogram = A.Activiteit
WHERE DatumAangemaakt = $datumAangemaakt
ORDER BY A.Rangnr ASC

This way you can write the result in a loop:

while ($row = mysqli_fetch_assoc($res)) {
    if(!is_null($row["Pictogram"])) {
        ?>
        <td><img src="data:image/jpeg;base64,<?php echo base64_encode($row['Pictogram']) ?>" width="90" height="90"></td>
       <?php 
    } else {
        ?> 
        <td>Empty <?php echo $row["Rangnr"] ?></td>
        <?php        
    }
}

Upvotes: 1

Related Questions