Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]pobieranie nazw kolumn
Forum PHP.pl > Forum > Przedszkole
misty
hej!
mam taki problem:
przedstawie go na przykladzie prostego skryptu:
mam formularz, w ktory wpisuje tresc zapytania (sql), np.
  1. SELECT imie, nazwisko FROM test;


klikam 'pytaj' i wynik tego zapytania wyswietla mi sie na stronie jako jakies tam komorki imion i nazwisk. moj problem jest taki-jak pobrac nazwe kolumny z ktorej sa pobierane dane? tzn. nie chce wpisywac 'na sztywno' na stronie w tabelce 'imie' i 'nazwisko'. poniewaz zapytania moga byc rozne i korzystac z roznych tabel. chodzi mi o to by za pomoca jakiegos zapytania/funkcji_php pobierac nazwy kolumn z ktorych wyciagane sa dane..

jakies wskazowki?

pzdr!
Cienki1980
Przenoszę
PHP->Przedszkole

i polecam zajrzeć do manuala i sprawdzić co zwraca funkcja mysql_fetch_arra() z parametrem MYSQL_ASSOC
misty
nie do konca mnie rozumiesz.. sprobuje jeszcze raz:
przykladowo:
moja baza zawiera tabele o nazwie xxx. w sklad tej tabeli wchodza kolumny: id, imie, nazwisko. kolumna 'imie' zawiera w sobie dana 'stefan'.

pg_fetch_array() Zwraca tablicę zawierającą dane z pobranego wiersza lub FALSE jeśli nie ma więcej wierszy." title="Zobacz w manualu PHP" target="_manual

  1. <?php
  2. $zapytanie="select imie from xxx;";
  3. $wynik=pg_query($polaczenie, $zapytanie) or die ("error");
  4. $cos=jakas_funkcja;
  5.  
  6. echo "$cos";
  7. ?>


wynikiem
  1. <?php
  2. echo "$cos";
  3. ?>
ma byc imie (a nie stefan) czyli nazwa kolumny(ktora przechowuje w sobie dana "stefan"). analogicznie jesli moje zapytanie mialoby postac: select xyz from costam, to $cos=xyz. nie interesuje mnie co w sobie zawiera xyz, jakie ma dane. ma sie zwrocic nazwa xyz.. pg_fetch_array to chyba nie do tego sluzy.. w sumie nie wiem czy jest jakas funkcja do tego?
Cienki1980
Hmmm no skoro korzystasz z Postgre to sprawa wygląda zupełnie inaczej.

Musisz wykorzystać funkcję pg_fetch_array()
z parametrem PGSQL_ASSOC


No i żeby ułatwić szukanie zacytuje kawałek manuala
Cytat
pg_fetch_array() zwraca tablicę z indeksami przyporządkowującymi które mają nazwę kolumny jako klucz dla PGSQL_ASSOC, numer kolumny jako klucz dla PGSQL_NUM i obydwa (nazwę/numer) dla PGSQL_BOTH. Domyślną wartością jest PGSQL_BOTH
misty
no od sprawdzenia tego zaczelam.. spojrz:

  1. <?php
  2. $polaczenie=pg_connect(...) 
  3. or die ("nie mozna polaczyc sie z baza!");
  4.  
  5. $zapytanie="select imie from osoba where osoba_id='1';";
  6. $wynik=pg_query($polaczenie, $zapyanie);
  7.  
  8. $nazwa=pg_fetch_array($wynik, NULL, PGSQL_ASSOC);
  9. echo "$nazwa";
  10. ?>


w wyniku otrzymam: Array

dalej:
  1. <?php
  2. $polaczenie=pg_connect(...) 
  3. or die ("nie mozna polaczyc sie z baza!");
  4.  
  5. $zapytanie="select imie from osoba where osoba_id='1';";
  6. $wynik=pg_query($polaczenie, $zapyanie);
  7.  
  8. $nazwa=pg_fetch_array($wynik, NULL, PGSQL_ASSOC);
  9. foreach ($nazwa as $data)
  10. echo "$data";
  11. ?>


w wyniku otrzymam : stefan

robie cos nie tak czy nadal sie nie rozumiemy?

pzdr!
nospor
a teraz:
  1. <?php
  2. foreach ($nazwa as $kolumna=>$data)
  3. echo "$kolumna - $data";
  4. ?>

? smile.gif

a tak pozatym poczytaj o:
http://pl.php.net/manual/pl/function.pg-field-name.php
Cienki1980
Cytat(misty @ 13.03.2007, 23:12:22 ) *
robie cos nie tak czy nadal sie nie rozumiemy?

pzdr!

Jak już nospor napisał. Sprawdź co zwraca ten kod. A Ty sprawdź jaka jest różnica między KLUCZEM a WARTOŚCIĄ w tablicy.

pg_fetch_array() zwraca nazwy kolumn w KLUCZACH a nie WARTOŚCIACH tablicy. A jeżeli chcesz wyświetlić tabelkę z nazwami kolumn takimi jak w bazie i wypełnić ją rekordami z tej bazy to pg_fetch_array() nadaje się do tego idealnie bo robisz to za pomocą jednego zapytania i odpowiednio wyświetlasz w PHP.
misty
Cytat(nospor @ 13.03.2007, 23:17:56 ) *


no wlasnie o cos takiego mi chodzilo :]
tylko ze ta pg_field_name jest scisle zwiazane z pg_field_num..
<span style="font-weight: bold;"><a href="http://pl.php.net/pg_field_name(resource $result, int $field_number)
pg_field_num(resource $result, string $field_name)" title="Zobacz w manualu PHP" target="_manual">pg_field_name(resource $result, int $field_number)
pg_field_num(resource $result, string $field_name)</a></span>
czyli jedno od drugiego zalezy..
zatem jesli nie bede znala numeru (tudziez liczby) kolumn nie poznam ich nazwy..

przyklad:
  1. <?php
  2. for($i=0; $i<$numer_kolumny+1; $i++){
  3. $nazwa_kolumny=pg_field_name($wynik, $i);
  4. echo "$nazwa_kolumny";
  5. }
  6. ?>


gdzie $numer_kolumny=pg_field_num($wynik, $nazwa_kolumny).. wiec jak to wyciagnac nie znajac liczby kolumn, ktora dla kazdego zapytania moze byc rozna?
nospor
Linka do manuala nie dostalas bez powodu.... trzeba bylo przejrzec wszystkie funkcje z rodziny pg_....

Liczba kolumn:
http://pl.php.net/manual/pl/function.pg-num-fields.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.