Problem z przebiegiem pętli

0

Dzień dobry,
najpierw kod:

<?php
require_once "connect.php";
$dbo = new PDO($dsn, $db_user, $db_password);

$query = "SELECT * FROM harmonogram";
$stmt = $dbo->query($query);

$idPracy = [];

$query2 = "SELECT idPracy FROM glosowanie WHERE IdUser = '$_SESSION[idUser]'";
$stmt2 = $dbo->query($query2);

foreach($stmt2 as $row2)
{
    array_push($idPracy, $row2);
}

echo "<table width = '70%' border='1' cellpadding = '5' cellspacing = '5' style ='margin: auto; text-align:center;'>";
echo "<tr><th>Co robimy</th><th>Katogoria</th><th>Termin realizacji</th><th>Ilość głosów</th></tr>";
for($i = 0; $i < count($idPracy); $i ++)
{       
    foreach($stmt as $row)
    {
        if($row['id']== $idPracy[$i])
        {
            echo "<tr style='text-align: center;'><td>".$row['coRobimy']."</td><td>".$row['kategoria']."</td><td>".$row['termin']."</td><td>".$row['iloscGlosow']."</td>";
        }
    }    
}
echo "</table>";
?>

Według mnie powinno to działać tak - pobieram sobie wszystko z tabeli Harmonogram, żeby mieć dane do tabelki. Pobieram dane z tabeli Glosowanie, żeby wiedzieć na co głosował użytkownik i tylko te wiersze mu pokazać, te dane zapisuję w tablicy $idPracy. Wyświetlam nagłówek tabeli i teraz zaczyna się problem: według mnie to co napisałem powinno porównywać id pracy z harmonogramu z idPracy i wyświetlać tylko wybrane wiersze w tabeli. Niestety nic poza nagłówkiem się nie wyświetla, mimo, że zalogowany użytkownik oddał 3 głosy na różne rzeczy. Co zrobiłem źle? :)

0

Jesteś pewien, że TO jest dobrze:
$_SESSION[idUser]
??

Masz session_start() ?

0

No właśnie, tutaj masz błąd:

array_push($idPracy, $row2['idPracy']);
1

Po raz kolejny proszę Cię abyś odpowiadał w odpowiedziach a nie komentarzach. Ciężko się czyta :) Druga sprawa to problem z Twoim PDO. Cytat ze stackoverflow:

You can only loop through the PDO statement once, so you should put the result in a temporary array.

Ogólnie trochę źle się do tego zabierasz, nie prościej to zrobić JEDNYM zapytaniem?

0

No może i prościej, ale nie wiem jak takie zapytanie powinno wyglądać :P
tabela harmonogram składa się z id / coRobimy / termin / iloscGlosow / kategoria
tabela glosowanie składa się z id / idUser / idPracy
jak to połączyć?

0

dobra mam
SELECT * FROM harmonogram JOIN glosowanie WHERE harmonogram.id = glosowanie.idPracy;
dzięki za pomoc :) teraz pewnie będzie łatwiej

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0