Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tworzenie zmiennej w locie
dr revuu
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.01.2010

Ostrzeżenie: (0%)
-----


Mam taki fragment kodu:

  1. if($zapytanie[kolumna_z_msqdb]=$a){
  2. "$bla".'_'."$a".'_cos'='checked'
  3. }


To ma działać tak. Jeśli pobrany redkord jest równy $a, to chcę aby utworzyło mi zmienną o nazwie $bla_wartosc-$a_cos (no i z lotu przyporządkowuje temu wartość 'checked'). Próbuję to łączyć operatorem ciągów ".", ale nie wychodzi mi to za bardzo. Pewnie to trywialne, ale nie mogę sobie z tym poradzić. Liczę na rady.

Ten post edytował dr revuu 25.12.2010, 22:09:17
Go to the top of the page
+Quote Post
cycofiasz
post
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Operator porównania to == lub === a nie =.
Nazwa klucza kolumna_z_msqdb powinna być w apostrofach.


To co chcesz uzyskać jest opisane tu:
http://www.php.net/manual/en/language.variables.variable.php
i tu:
http://algorytmy.pl/doc/php/language.variables.variable.php

//A czy nie wygodniej byłoby użyć tablicy asocjacyjnej?
Go to the top of the page
+Quote Post
dr revuu
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.01.2010

Ostrzeżenie: (0%)
-----


Hmm, poczytałem trochę i poeksperymentowałem ze zmiennymi zmiennych. Niestety nadal nie potrafię utworzyć zmiennej o interesującej mnie nazwie (zadeklarowane zmienne sprawdzam funkcją get_defined_vars). Oto kod:

  1. while($pokaz_zapytanie=mysql_fetch_assoc($zapytanie)){
  2. $checked="$pokaz_zapytanie['kolumna']g";
  3. $$checked='checked';
  4. }


Sądziłem, że to zadziała tak, że $$checked przejmie nazwę od wartości $checked, a wartość od tej przypisanej sobie. Niestety ten kod tworzy zmienną "$checked" o wartości "$pokaz_zapytanie['kolumna']g". Natomiast potrzebuję dokładnie na odwrót, ponieważ tylko wtedy mój dalszy skrypt zadziała.

Uprościłem też nazwę zmiennej, którą chcę otrzymać do numerka ($pokaz_zapytanie['kolumna']) i "g" na końcu.

Co do tablic - nie mam pomysłu. Wolałbym wytłumaczenie mi na obecnym przykładzie.

Pozdrawiam.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nazwa zmiennej nie może zawierać znaków [, ] czy '. $pokaz_zapytanie['kolumna'] to odwołanie się do indeksu kolumna zmiennej pokaz_zapytanie.

To co chcesz można co prawda uzyskać w PHP, ale jest to strasznie debilny pomysł. Użyj tak jak zasugerował @cycofiasz tablicy - zrób to jak człowiek.
Go to the top of the page
+Quote Post
lDoran
post
Post #5





Grupa: Zarejestrowani
Postów: 172
Pomógł: 13
Dołączył: 15.11.2009

Ostrzeżenie: (0%)
-----


http://php.net/manual/en/function.array-keys.php
Go to the top of the page
+Quote Post
dr revuu
post
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.01.2010

Ostrzeżenie: (0%)
-----


Próbuję teraz z tablicami i zmiennymi zmiennych. Tym razem mam już zmienną o nazwie jakiej potrzebuje, jednak (nie wiem dlaczego) posiada wartość taką jak nazwę (w zamyśle ma być to "checked"). Oto kod:

  1. $tablica=array(2 => "$2g");
  2.  
  3. while($pokaz_zapytanie=mysql_fetch_assoc($zapytanie)){
  4. $zmiennaa=$tablica[$pokaz_zapytanie[kolumna1]];
  5. $$zmiennaa='checked';
  6. }
  7.  
  8. if($2g='checked'){
  9. echo 'Jestem happy';
  10. }


Z zapytania otrzymuje tylko dane typu integer, w tym przypadku 2. Więc jest to jednocześnie wartość klucza z tablicy (domyślnie będzie w niej więcej kluczy i wartości).

Wiem, że jestem przypadkiem krytycznym, ale czuję, że dzięki Wam jestem coraz bliżej... Więc jeszcze raz proszę o sugestie smile.gif
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. Nazwa zmiennej nie może zaczynać się od cyfry (patrz: $2g).
2. Tekst umieszczamy w apostrofach/cudzysłowach (patrz: kolumna1)
3. Operatorem porównania jest ==, nie =.
4. Przestań korzystać ze zmiennych zmiennych - to okropny mechanizm. Wykorzystaj same tablice.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 11:20