Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Przypisanie kolumnom zmiennych
Forum PHP.pl > Forum > Przedszkole
stefan9209
Witam,

Mam taki kod do pobierania nazw kolumn z tabeli:

  1. $sql = mysql_query( $nazwa_polecenia_sql );
  2.  
  3. //sprawdzam czy jest wynik
  4. if( mysql_num_rows($sql) > 0 ){
  5.  
  6. //pobieram kolumny i przypisuje do nich zmienne
  7. while( $tabela = mysql_fetch_array($sql) ){
  8.  
  9. //sprawdzam ile jest kolumn
  10. $liczbaKolumn = mysql_num_fields($sql);
  11.  
  12. for ($i=0; $i < $liczbaKolumn; $i++) {
  13.  
  14.  
  15. }
  16.  
  17. }
  18. }


Wszystko działa. Wypisuje po kolei jakie mam kolumny w tabeli. Mogę się do nich odwoływać poprzez $tabela[nazwa_kolumny].

Chciałbym się odwoływać do nich za pomocą $nazwa_kolumny. Chcę po prostu przypisać zmienne danym kolumnom. Jak to można zrobić?

Pozdrawiam.
Fred1485
  1. <?php
  2.  
  3. $a = array('var1', 'var2', 'var3');
  4.  
  5. foreach ($a as $value) {
  6. ${$value} = rand(1,5);
  7. }
  8.  
  9. echo $var1 . '<br>';
  10. echo $var2 . '<br>';
  11. echo $var3;
  12.  
  13.  
  14. ?>


Taki prosty przykładzik, pewnie cię naprowadzi wink.gif
stefan9209
Super, działa, dzięki!

Mam jeszcze pytanie. Chciałem skrócić kod w różnych plikach i ten poniższy kod dałem w funkcji. Potem w innych plikach, gdzie będę chciał pobrać nazwy to zamiast dublować kodu dam
  1. function pobierzKolumny ( $nazwa_polecenia_sql );


Ale.. te zmienne typu $nazwa_kolumny dają wartości, ale tylko, jeśli wywołam je bezpośrednio w function(). Jeśli wywołam je właśnie w innym pliku (gdzie załączam funkcję), to nie działa.. Zmienne nie są przekazywane..

  1. function pobierzKolumny( $nazwa_polecenia_sql ){
  2. $sql = mysql_query( $nazwa_polecenia_sql );
  3.  
  4. //sprawdzam czy jest wynik
  5. if( mysql_num_rows($sql) > 0 ){
  6.  
  7. //pobieram kolumny i przypisuje do nich zmienne
  8. while( $tabela = mysql_fetch_array($sql) ){
  9.  
  10. //sprawdzam ile jest kolumn
  11. $liczbaKolumn = mysql_num_fields($sql);
  12.  
  13. for ($i=0; $i < $liczbaKolumn; $i++) {
  14. $nazwa_pola = mysql_field_name($sql, $i);
  15. ${$nazwa_pola} = $tabela[$nazwa_pola];
  16. }
  17.  
  18.  
  19. }
  20. }
  21. }
Fred1485
Bo zmienne sobie deklarujesz tylko lokalnie w funkcji. Musiałbyś zwrócić je pewnie w postaci tablicy ale to zatacza koło na nowo smile.gif

Może ktoś bardziej doświadczony się odezwie.
stefan9209
Ok, rozumiem smile.gif
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.