Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tworzenie zmiennej w locie
Forum PHP.pl > Forum > Przedszkole
dr revuu
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.
cycofiasz
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?
dr revuu
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.
Crozin
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.
dr revuu
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
Crozin
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.
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.