Witam,
Mam taki problem i już mi się pomysły kończą. Chcę użyć funkcji count() w wyszukiwarce aby w razie znalezienia wyników je pokazała, a w razie ich braku pokazała echo "Nic nie znaleziono". Niby proste ale jak używam count() to w przypadku znalezienia wielu rekordów pokazuje tylko jeden, pierwszy. W przypadku braku rekordów pokazuje co należy. W ogóle to dziwne co pokazuje print_r(count($row)): 12. Przecież aktualnie mógł znaleźć max 2 rekordy bo tak by to filtrowało.
Baza składa się z 5 tabel, gdzie jedna z nich zawiera relacje w 4 pozostałymi. Czyli wiele do jednej.
Linie odpowiedzialne za count:
foreach($stmt as $row)
{
echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].': '.$row['date'].'</li>'; $stmt->closeCursor();
}
else
{
echo "Nic nie znaleziono"; $stmt->closeCursor();
}
//print_r($_GET);
}
Cały kod:
if(isset($_GET['nazwa'])) {
if($_GET['nazwa'] !== "Branża" || $_GET['umowa'] || $_GET['lokalizacja'])
{
'nazwa' => 'nazwa_branzy',
'lokalizacja' => 'lokalizacja',
'umowa' => 'rodzaj_umowy'
);
foreach($_GET as $key => $value)
{
if(isset($mapping[$key]) && '' !== $value) {
$where[] = $mapping[$key].' = :'.$mapping[$key];
$params[':'.$mapping[$key]] = $value;
}
}
{
$wh = 'WHERE '.implode(' AND ', $where); }
else {echo "Nie zaznaczono żadnego pola"; die;} try
{
$pdo = new PDO($pol, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(isset($_GET['nazwa'])) {
$sql = 'SELECT b.nazwa_branzy, u.login, o.tresc, i.rodzaj_umowy, l.lokalizacja, o.date FROM ogloszenia AS o
LEFT JOIN users u ON u.id_usera = o.id_usera
LEFT JOIN branza b ON b.id_branzy = o.id_branzy
LEFT JOIN umowa i ON i.id_umowy = o.id_umowy
LEFT JOIN lokalizacja l ON l.id_lok = o.id_lok '.$wh;
$stmt = $pdo->prepare($sql);
if(!empty($_GET['nazwa'])) {$stmt -> bindValue(':nazwa_branzy', $_GET['nazwa'], PDO
::PARAM_STR);} if(!empty($_GET['umowa'])) {$stmt -> bindValue(':rodzaj_umowy', $_GET['umowa'], PDO
::PARAM_STR);} if(!empty($_GET['lokalizacja'])) {$stmt -> bindValue(':lokalizacja', $_GET['lokalizacja'], PDO
::PARAM_STR);} //if(empty($_GET['nazwa']) && empty($_GET['nazwa']) && empty($_GET['nazwa'])) {echo "Nie wybrano filtrów"; die;}
$stmt -> execute($params);
//if($where = '') echo "Nic nie znaleziono";
foreach($stmt as $row)
{
echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].': '.$row['date'].'</li>'; $stmt->closeCursor();
}
else
{
echo "Nic nie znaleziono"; $stmt->closeCursor();
}
//print_r($_GET);
}
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); }
}
}