Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Array wielowymiarowy, nazwy, odczytywanie nazwy wymiaru z z formularza
bulimaxiu
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

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


Witam. Poszukuję sposobu na identyfikację nazwy tablicy wielowymiarowej.
Załóżmy, że mamy taki prosty formularz, utworzony ze skryptu PHP
  1. <form action="" method="post">
  2. <input type="text" name="dane_do_zmiany_rekordu['ID1']"></br>
  3. <input type="text" name="dane_do_zmiany_rekordu['ID2']"></br>
  4. <input type="submit" name="submit" value="Wpisz">
  5. </form>

w którym wygenerowane są nazwy odpowiednich pól. W jaki prosty sposób można odczytać przez PHP nazwy wymiarów, które zostały określone, w tym przypadku "wyczytanie", że są to 'ID1' i 'ID2' i nadanie tych wartości zmiennej np. $rekord?

Docelowo chodzi o zastosowanie w skrypcie PHP (+mySQL), w którym zmienianych będzie za jednym kliknięciem Submit kilka rekordów w bazie danych, np.
[ID] [Wartość]
1. [Text pierwszy]
2. [Text drugi poprawiony]
3. [Text trzeci]
[Submit]

Pozdrawiam.
Sebastian
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
ddiceman
post
Post #2





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


array_keys()
Go to the top of the page
+Quote Post
bulimaxiu
post
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

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


OK, to jest to rzeczywiście, teraz zrozumiałem co to są te keye.

Ale jedna zagwostka: array_keys($dana) działa do jednego wymiaru, a jak odwołać się do wielu wymiarów, np. $dana[glowna2][pierwsza]. 'glowna2' jest OK do wyciągnięcia, bo wystarcza array_keys($dana), ale jak wyciągnąć 'pierwsza', bo array_key(array_keys($dana)) wiadomo dzialac nie może, jak też wskazanie np. array_key($dana[glowna2]).

Pzdr.
Go to the top of the page
+Quote Post
ddiceman
post
Post #4





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


  1. <?php
  2. $kolumny = array();
  3. foreach($dana AS &$wiersz){
  4. array_merge($kolumny, array_keys($wiersz));
  5. }
  6. return $kolumny;
  7. ?>


Ten post edytował ddiceman 3.09.2008, 13:37:45
Go to the top of the page
+Quote Post
bulimaxiu
post
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

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


Wynikiem Twojego skryptu jest.... "Array ( )" i nie ma tego czego bym oczekiwał.
Zrobiłem testowo taki skrypt (bo to nie funkcja, nie ma return):
  1. <?php
  2. echo "Pierwsza wartosc to <b>".$dana[glowna1][pierwsza]."</b>";
  3. echo "Druga wartosc to <b>".$dana[glowna1][druga]."</b>";
  4. echo "Pierwsza wartosc to <b>".$dana[glowna2][pierwsza]."</b>";
  5. echo "Druga wartosc to <b>".$dana[glowna2][druga]."</b>";
  6.   print_r ($dana);
  7.   $tablica_danych = array();
  8.   foreach($dana AS $wiersz) {
  9.      array_merge($tablica_danych,array_keys($wiersz));
  10.   }
  11.   print_r ($tablica_danych);
  12. ?>

Czy mógłbyś na to zerknąć jeszcze raz?

Ostatecznie pozostaję przy tym, chyba że coś lepszego wyjdzie na jaw:
  1. <?php
  2. $key__table       = array();
  3.     $key1_table       = array_keys($_POST[dana]);           # lewe kategorie
  4.     $key1_table_count = count($key1_table);
  5.     foreach ($key1_table as $key1) {
  6.        $key2_table        = array_keys($_POST[dana][$key1]);      # prawe kategorie
  7.        $key2_table_count += count($key2_table);
  8.        foreach ($key2_table as $key2) {
  9.           array_push ($key__table, array($key1, $key2, $_POST[dana][$key1][$key2]));
  10.        }
  11.     }
  12.    unSet($key1);
  13.    unSet($key1_table);
  14.    unSet($key1_table_count);
  15.    unSet($key2);
  16.    unSet($key2_table);
  17.    unSet($key2_table_count);
  18.  ?>


Ten post edytował bulimaxiu 30.09.2008, 11:21:47
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: 19.08.2025 - 16:05