[php][postgresql] Jak wyswietlic wynik ?

0

Witam, mam klase ktora sciagnalem z sieci:

<?php

class postgresql
	{
	public function __construct($host, $user, $password, $dbname)
		{
		// Próbujemy się połączyć
		IF(!$this->db = pg_connect('host='.$host.' dbname='.$dbname.' user='.$user.' password='.$password.''))
			{
			$this->error = true;
			throw new Exception('Błąd Połączenia z Bazą Danych - '.pg_last_error());
			}
		// połączyliśmy się, rozpoczynamy tranzakcję
		pg_query($this->db, 'BEGIN');
		}
	public function query($query)
		{
		// wykonywanie zapytań nie-SELECT
		IF(!ereg('SELECT', $query) and !$this->error)
			{
			IF(!$result = pg_query($this->db, $query))
				{
				$this->error = true;
				throw new Exception('Błąd wykonania zapytania - ('.$query.') - '.pg_last_error());
				}
			else
				{
				return true;
				}
			}
		else
			{
			return false;
			}
		}
	public function query_select($query)
		{
		// Zapytania select
		IF(!$this->error)
			{
			IF(!$result = pg_query($this->db, $query))
				{
				$this->error = true;
				throw new Exception('Błąd wykonania zapytania - ('.$query.') - '.pg_last_error());
				}
			while($row = pg_fetch_array($result, null, PGSQL_ASSOC))
				{
				$return[] = $row;
				}
			unset($result);
			unset($row);
			return $return;
			}
		}
	public function escape($string)
		{
		return  pg_escape_string($string);
		}
	function __destruct()
		{
		IF(!$this->error)
			{
			pg_query('COMMIT');
			}
		else
			{
			pg_query('ROLLBACK');
			}
		unset($this->db);
		unset($this->error);
		}
	}
// PRZYKŁADOWE ZASTOSOWANIE
$pgs = new postgresql('localhost', 'USER', 'PASSWORD', 'DATABASE');
//$pgs->query("CREATE TABLE rk_pages ( page_id SERIAL, page_title varchar(255) default NULL,  page_desc text,  page_content text,  PRIMARY KEY  (page_id))");
//$pgs->query("INSERT INTO rk_pages (page_title, page_desc, page_content) VALUES ('tytuł1', 'opis1', 'treść artykułu1')");
//$pgs->query("INSERT INTO rk_pages (page_title, page_desc, page_content) VALUES ('tytuł2', 'opis2', 'treść artykułu2')");
$str = $pgs->query_select("SELECT * FROM rk_pages");
//echo $str[0][page_content];

$ii=0;
foreach ($str as $value) {
echo $str[$ii][page_id]."<br>";
echo $str[$ii][page_title]."<br>";
echo $str[$ii][page_desc]."<br>";
echo $str[$ii][page_content]."<br>";
$ii++;
}

Jesli wkleicie ten plik i ustawicie na swoje dane wszystko zadziala. W zmiennej $str przechowuje sie tablica mniej wiecej taka:

array[0] i w niej zawarty jest jeden wiersz [page_id] itd wszystkie dane z wyszukiwania
array[1] i tu jak wyzej. Zatem zeby wyswietlic wynik uzylem foreach....zastanawiam sie
czy to poprawne czy powienien byc jakis profesjonalniejszy sposob ?
Molgby mi ktos powiedziec o wadach tego rozwiazania...

0

Nie umiesz korzystac z foreach, to po pierwsze. Po drugie tablice indeksuje sie liczba badz stringiem, a Ty nie dales ani apostrofow, ani cudzyslowow.

foreach ($str as $value)
  echo "$value[page_id]<br>$value[page_title]<br>$value[page_desc]<br>$value[page_content]<br>";
0

Racja nie uzylem zmiennej $value i moglem sobie na for zwyklym zrobic. Dziękuje za wyjaśnienie mi problemu i za pomoc...

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