Gerrit
Gerrit

Reputation: 59

How to get SQL data to PHP array

I kinda messed up the title, but i will try to explain my problem. i have a html page called leden.html and have a PHP script on it which gets data from my database and creates a table on the html page. Now the part where i get stuck is showing if a member is online and if someone is online the $sql1= "ja" else $sql1= "nee", but i messed up somewhere because when two people are online, the last person who came online shows online and the first dude goes back to "nee". Here is the code, i think something goes wrong at the array part.

    <?php
    $conn = mysqli_connect("******", "******", "******", "******");
     // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql = "SELECT id, username, email FROM register";
    $sessie_username = "SELECT username FROM sessie";   
    $result = $conn->query($sql);
    $result1 = $conn->query($sessie_username);
    $row1 = $result1->fetch_assoc();
    $nameninsessie = array($row1["username"]);

    if ($result->num_rows > 0) {
       // output data of each row
       while($row = $result->fetch_assoc()) {
          if (in_array($row["username"], $nameninsessie)) {
             $sql1 = "Ja";
          } else {
             $sql1 = "Nee";
          }
          echo "<tr><td>" . $row["id"]. "</td><td>" . $row["username"] . "</td> 
                <td>". $row["email"]. "</td><td>" . $sql1 . "</td></tr>";
       }
       echo "</table>";

    } else { echo "0 resultaten"; }

    $conn->close();
    ?>         

Upvotes: 0

Views: 494

Answers (2)

RiggsFolly
RiggsFolly

Reputation: 94662

You are only getting ONE of the logged in users from the sessie_username query. And also building the array of logged in users incorrectly. See below

<?php
    $conn = mysqli_connect("******", "******", "******", "******");
     // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $sql = "SELECT id, username, email FROM register";
    $sessie_username = "SELECT username FROM sessie";   
    $result = $conn->query($sql);
    $result1 = $conn->query($sessie_username);

    // initialise the array 
    $nameninsessie = array();

    // loop over all logged in users
    while ( $row1 = $result1->fetch_assoc() ) {
        // add thir names to an array
        $nameninsessie[] = $row1["username"];
    }

    if ($result->num_rows > 0) {
       // output data of each row
       while($row = $result->fetch_assoc()) {
          if (in_array($row["username"], $nameninsessie)) {
             $sql1 = "Ja";
          } else {
             $sql1 = "Nee";
          }
          echo "<tr><td>" . $row["id"]. "</td><td>" . $row["username"] . "</td> 
                <td>". $row["email"]. "</td><td>" . $sql1 . "</td></tr>";
       }
       echo "</table>";

    } else { echo "0 resultaten"; }

    $conn->close();
    ?>    

Upvotes: 1

billa-code
billa-code

Reputation: 567

There is a problem in your data fetching. See the returning array using print_rcommand. You only get the first value of the sql query. So try this. Furthermore you have to initialize the array if not when there is 0 results for the mysql query it will give an error.

<?php
$conn = mysqli_connect("localhost", "root", "*****", "*****");
 // Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$sql = "SELECT id, username, email FROM register";
$sessie_username = "SELECT username FROM sessie";   
$result = $conn->query($sql);
$result1 = $conn->query($sessie_username);
$nameninsessie = array();
$i=0;
while($row1 = $result1->fetch_assoc()) {
  $nameninsessie[$i] = $row1["username"];
  $i++;
}
print_r($nameninsessie); //thi is to chek the array when problem solved please comment this line
if ($result->num_rows > 0) {
   // output data of each row
   while($row = $result->fetch_assoc()) {
      if (in_array($row["username"], $nameninsessie)) {
         $sql1 = "Ja";
      } else {
         $sql1 = "Nee";
      }
      echo "<tr><td>" . $row["id"]. "</td><td> " . $row["username"] . "</td> 
            <td>". $row["email"]. "</td><td> " . $sql1 . "<br></td></tr>";
   }
   echo "</table>";

} else { echo "0 resultaten"; }

$conn->close();
?>      

Upvotes: 0

Related Questions