Zliczanie wyników w pętli foreach

Zliczanie wyników w pętli foreach
P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 87
0

Witam,

Mam problem z policzeniem wyników pętli. Zapis poniżej nie generuje żadnego napisu w przypadku kiedy pętla zwraca zero wierszy. Co jest nie tak z tym kodem?:

Kopiuj
foreach($stmt as $row)
				  if(count($row > 0)){
					  echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].': '.$row['date'].'</li>';
				  } else {echo "Nic nie znaleziono";}
 
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Raczej nie chcesz robić $row > 0, tylko count($row) > 0.

P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 87
0

No właśnie tego też próbowałem ale nie działa...

foreach:

Kopiuj
 foreach($stmt as $row)
				  if(count($row) >= 1)
				  {
					  echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].': '.$row['date'].'</li>';
				  } else {echo "Nic nie znaleziono";}

a tutaj część kodu odpowiedzialna za to:

Kopiuj
if($_GET['nazwa'] || $_GET['umowa'] || $_GET['lokalizacja'])
		{
			$wh = array();
			//2 SELECT
				if(!empty($_GET['nazwa'])) $wh[] = "b.nazwa_branzy = '{$_GET['nazwa']}'";
				if(!empty($_GET['umowa'])) $wh[] = "i.rodzaj_umowy = '{$_GET['umowa']}'";
				if(!empty($_GET['lokalizacja'])) $wh[] = "l.lokalizacja = '{$_GET['lokalizacja']}'";
				if(!empty($wh))
				{
					$where = 'WHERE '.implode(' AND ', $wh);
					//print_r($where);
				}
			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 '.$where;
				  $stmt = $pdo->prepare($sql);	
				  $stmt -> bindValue($sql, PDO::PARAM_STR);
				  $stmt -> execute();
				  //if($where = '') echo "Nic nie znaleziono";
				  echo '<ul>';
				  foreach($stmt as $row)
				  if(count($row) >= 1)
				  {
					  echo '<li>'.$row['nazwa_branzy'].': '.$row['rodzaj_umowy'].': '.$row['login'].': '.$row['tresc'].': '.$row['lokalizacja'].': '.$row['date'].'</li>';
				  } else {echo "Nic nie znaleziono";}
				  $stmt->closeCursor();
				  echo '</ul>';
				  //print_r($_GET);
			   }
			   }
			   catch(PDOException $e)
			   {
				  echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
			   }
			
			} 

Dlaczego count nie zlicza?

Tumeg
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 687
0
Kopiuj
count($row > 0)

If the parameter is not an array or not an object with implemented Countable interface, 1 will be returned.

Najlepiej zobacz, co te tablice(?) zawierają (użyj var_dump / print_r).

P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 87
0

Przykład co daje print_r:

Kopiuj
 
Array ( [nazwa_branzy] => elektromechanik [0] => elektromechanik [login] => admin [1] => admin [tresc] => Potrzebny elektromechanik od zaraz [2] => Potrzebny elektromechanik od zaraz [rodzaj_umowy] => umowa o prace [3] => umowa o prace [lokalizacja] => Opole [4] => Opole [date] => 2016-01-26 23:13:18 [5] => 2016-01-26 23:13:18 )

Wygląda na to, że z tablica wszystko ok... ???

P7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 87
0

Już mam. Zabrakło:

Kopiuj
 
return $row;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.