Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]tablica asocjalna - wyciąganie konkretnych wyników
japolak
post
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


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ć (IMG:style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Szymciosek
post
Post #2





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


  1. echo $tablica[1]["meta_value"]
(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
japolak
post
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 11.03.2007
Skąd: Łódzkie

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


Cytat(Szymciosek @ 19.09.2012, 20:35:19 ) *
  1. echo $tablica[1]["meta_value"]
(IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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

Ten post edytował japolak 19.09.2012, 21:28:15
Go to the top of the page
+Quote Post
redeemer
post
Post #4





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Możesz stworzyć tablicę asocjacyjną (a nie asocjalną (IMG:style_emoticons/default/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. }

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 14:22