Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] tablica asocjacyjna a dodawanie rekordu do istniejącej tabeli
tryme
post 3.02.2008, 21:28:54
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.12.2005

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


Witam Serdecznie,

Chciałem Was zapytać w jaki prosty sposób mogę dodać do istniejącej tabeli nowe dane np. 'telefon' => '123-456'

$dane = array(
'imie' => 'Jan',
'nazwisko' => 'Kowalski',
);

Czyli chciałbym aby tabela wyglądała dokładnie tak jak poniżej:

$dane = array(
'imie' => 'Jan',
'nazwisko' => 'Kowalski',
'telefon' => '123-456',
);

Dziękuję za pomoc w rozwiązaniu mojego problemu.
Go to the top of the page
+Quote Post
nowotny
post 3.02.2008, 21:34:27
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


  1. <?php
  2. $dane['telefon']='123-456';
  3. ?>

Polecam zapoznanie się z kilkoma kursami php i manualem...

Ten post edytował nowotny 3.02.2008, 21:35:08
Go to the top of the page
+Quote Post
tryme
post 3.02.2008, 21:52:48
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.12.2005

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


Hmm, chyba źle się wyraziłem wstydnis.gif

Dokładnie to chcę zrobić małe cachowanie danych z bazy MySQL i dlatego zrzucam dane w pętli while do tablicy asocjacyjnej, tak aby powstało takie coś:

  1. <?php
  2.  
  3. $dane = array (
  4. => 
  5. array (
  6. 'imie' => 'Jan',
  7. 'nazwisko' => 'Kowalski',
  8. ),
  9. => 
  10. array (
  11. 'imie' => 'Jerzy',
  12. 'nazwisko' => 'Dudek',
  13. ),
  14. ),
  15. );
  16.  
  17. ?>


Problem w tym, że nie chcę mieć pustych rekordów, jeśli one w ogóle nie występują np. 'nazwisko' => ''

Obecnie tworzę tablice w taki sposób

  1. <?php
  2. $dane[] = array('imie' => $r['imie'], 'nazwisko' => $r['nazwisko']);
  3. ?>


I teraz potrzebowałbym jakiegoś magicznego sposobu, aby rozszerzyć powyższe tworzenie tabeli w pętli while o dodatkowe dane jeśli one występują np. wspomniany 'telefon'= $r['telefon']

Wiem, że mogę to zrobić na pomocą IF np.

  1. <?php
  2. if ($r['telefon'] != '')
  3. $dane[] = array('imie' => $r['imie'], 'nazwisko' => $r['nazwisko'], 'telefon' => $r['telefon']);
  4. else
  5. $dane[] = array('imie' => $r['imie'], 'nazwisko' => $r['nazwisko']);
  6. ?>


Problem w tym, że takich IFów musiało by być bardzo wiele, bo jest wiele możliwości wpisania danych jak np. wiek, miasto, rozmiar buta itd.

Mam nadzieję, że tym razem troszkę lepiej streściłem swój problem.
Go to the top of the page
+Quote Post
nowotny
post 3.02.2008, 21:58:39
Post #4





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Może coś takiego:
  1. <?php
  2. foreach($r as $key=>$val){
  3. if(!empty($val)) dane[][$key]=$val;
  4. }
  5. ?>
Go to the top of the page
+Quote Post
tryme
post 3.02.2008, 22:32:53
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.12.2005

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


Też już tak kombinowałem smile.gif Tylko po takim zabiegu tablica wygląd mniej więcej tak:

  1. <?php
  2.  
  3. $dane = array (
  4. => 
  5. array (
  6. 'imie' => 'Jan',
  7. 'nazwisko' => 'Kowalski',
  8. ),
  9. => 
  10. array (
  11. 'imie' => 'Jerzy',
  12. 'nazwisko' => 'Dudek',
  13. ),
  14. =>
  15. array (
  16. 'telefon' => '123-456',
  17. );
  18.  
  19. ?>


Czyli jak teraz powinienem wrzucić dane o numerze telefonu do poprzedniej tabeli (Jerzy Dudek)?

Jedyne co mi teraz przychodzi do głowy to policzenie rekordów i odjęcie 1 pozycji

  1. <?php
  2. $i = count($dane)-1;
  3. dane[$i][$key]=$val
  4. ?>


A może jest na to jakaś gotowa funkcja, której ni znalazłem z manualu?

EDIT: Już sobie poradziłem. Zamiast count wrzuciłem w pętlę zmienną $i++ a potem odejmuję od niej 1 smile.gif

Dziękuję za pomoc.

Ten post edytował tryme 3.02.2008, 22:37:08
Go to the top of the page
+Quote Post
nowotny
post 3.02.2008, 22:50:14
Post #6





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Cytat(tryme @ 3.02.2008, 22:32:53 ) *
Czyli jak teraz powinienem wrzucić dane o numerze telefonu do poprzedniej tabeli (Jerzy Dudek)?

A skąd masz te dane i czemu one nie są w bazie...? :/ coś tu za dużo mieszasz... :/
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 Wersja Lo-Fi Aktualny czas: 23.05.2025 - 07:13