Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] tablica asocjacyjna a dodawanie rekordu do istniejącej tabeli
Forum PHP.pl > Forum > Przedszkole
tryme
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.
nowotny
  1. <?php
  2. $dane['telefon']='123-456';
  3. ?>

Polecam zapoznanie się z kilkoma kursami php i manualem...
tryme
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.
nowotny
Może coś takiego:
  1. <?php
  2. foreach($r as $key=>$val){
  3. if(!empty($val)) dane[][$key]=$val;
  4. }
  5. ?>
tryme
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.
nowotny
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... :/
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.