Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]tablica asocjalna - wyciąganie konkretnych wyników
Forum PHP.pl > Forum > Przedszkole
japolak
witam

mam pewnie błachy problem z którym nie mogę sobie na tą chwilę poradzić

wrzucam sobie dane z bazy do tablicy :
z var_dumpa wyświetla mi coś takiego:


  1. var_dump($tablica);
  2.  
  3. array(3) {
  4. [0]=> array(4) { ["umeta_id"]=> string(1) "1" ["user_id"]=> string(1) "3" ["meta_key"]=> string(9) "firstname" ["meta_value"]=> string(6) "moje imie" }
  5. [1]=> array(4) { ["umeta_id"]=> string(1) "2" ["user_id"]=> string(1) "3" ["meta_key"]=> string(8) "lastname" ["meta_value"]=> string(5) "moje nazwisko" }
  6. [2]=> array(4) { ["umeta_id"]=> string(1) "3" ["user_id"]=> string(1) "3" ["meta_key"]=> string(4) "city" ["meta_value"]=> string(7) "moje miasto" } }
  7.  
  8.  


a moje pytanie jest takie
chciałbym przykładowo pobrać z tej tablicy daną która spełnia warunek meta_key=lastname
wynik powinien byc "moje nazwisko" [php][/php]

jak to zrobić questionmark.gif?
Szymciosek
  1. echo $tablica[1]["meta_value"]
questionmark.gif
japolak
Cytat(Szymciosek @ 19.09.2012, 20:35:19 ) *
  1. echo $tablica[1]["meta_value"]
questionmark.gif


nie bardzo
bo skąd ja będę wiedział że to jest nazwisko ?

program musi sam wiedzieć o ktora wartość mi chodzi.


ogólnie chodzi mi o rozwiązanie jakie jest w wordpresie
tam jest taka sama tabela gdzie znaczniki meta odpowiadaja za jakaś charakterystyke użytkownika

jak chce dodac np nazwisko lub je edytować
to z bazie w tabeli musze odszukac meta key lastname i wtedy je edytować

i chodzi mi o to ze nie chce sprawdzać wszystkich wartości meta_key uzytkownika za każdym razem łacząc sie z bazą tylko chce pobrac wszystkie jego wartosci do tablicy i później z tablicy wyciągnąć tą wartość..

edit
---------------------------------------------------------------------------------------------------------------
i nikt nie pomoże questionmark.gif


może wiec jeszcze inaczej zapytam

mam tabele:
  1. `wp_usermeta` (
  2. `umeta_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `user_id` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  4. `meta_key` varchar(255) DEFAULT NULL,
  5. `meta_value` longtext )



teraz zeby z tej tablicy wyciągnąć poszczegolne dane wysyłam przykładowo 14 zapytań 1 po drugim
:
  1.  
  2. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='firstname'";
  3. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='lastname'";
  4. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='address'";
  5. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='city'";
  6. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='postcode'";
  7. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='phonenumber'";
  8. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='birthdate'";
  9. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='sex'";
  10. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='ggnumber'";
  11. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='skypelogin'";
  12. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='mytitle'";
  13. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='mysite'";
  14. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='mytrade'";
  15. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' and meta_key='aboutme'";
  16.  



a wolał bym zrobić jedno zapytanie żeby nie obciążać bazy
  1. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' ";


rezultat wrzucić do tablicy i z tej tablicy wyciągnąć poszczególne wartości dla meta_key
redeemer
Możesz stworzyć tablicę asocjacyjną (a nie asocjalną wink.gif), gdzie kluczami będą wartości meta_key, czyli dla
  1. $sql="select * from user_meta where user_id='".$_SESSION['real_id']."' ";
możesz zrobić coś w stylu:
  1. ...
  2. $metakeys = array();
  3. foreach($rows as $row) {
  4. $metakeys[ $row['metakey'] ] = $row; // lub = $row['meta_value'] jeżeli potrzebujesz tylko par meta_key - meta_value
  5. }
Lub mając tą Twoją tablicę z pierwszego posta:
  1. $metakeys = array();
  2. for($i=0,$tablicaCount=count($tablica); $i<$tablicaCount; $i++) {
  3. $metakeys[ $tablica[$i]['meta_key'] ] = $tablica[$i]; // lub = $tablica[$i]['meta_value'] jeżeli potrzebujesz tylko par meta_key - meta_value
  4. }

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.