Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> php pobieranie wartości z 2 tabel mysql
dhapollo
post 4.09.2010, 16:04:22
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.04.2010

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


Witam.

Poniższy skrypt pobiera dane z duch tabel tworząc formularz. W 1 tabeli przechowywane są nazwy pól a w 2 tabeli dane wpisane przez użytkownika.
Problem polega na tym że wyświetlane są informacje tylko jednego użytkownika według prop_user_id. Potrzebuje przerobić skrypt w ten sposób żeby wyświetlał dane wszystkich użytkowników ma ktoś jakiś pomysł. pól dnia siedzę i nic nie wymyśliłem:(

Tabele wyglądają następująco:
1. fusioned460_extended_profile_props (tabela przechowuje nazwy np. imię, nazwisko, telefon)
pola w tabeli: prop_name, prop_title, prop_order
2. fusioned460_extended_profile_values (tabela przechowuje wartości np. Jan, Kowalski, 22-999-99-999)
pola w tabeli: prop_name, prop_user_id, prop_value

Pole prop_name w obydwu tabelach przetrzymuje te same dane (w tabeli 2 wielokrotność w zależności od liczby wpisów)
Pole prop_title przechowuje nazwy pół formularza
Pole prop_user_id przechowuje nr id użytkownika, który dodał wpis
Pole prop_value przechowuje dane prowadzone przez użytkownika


  1. <?
  2. $connection = mysql_connect('localhost', 'root', '131wgz')
  3. or die('Brak połączenia z serwerem MySQL');
  4. mysql_select_db('apoloniusz2')
  5. or die('Nie mogę połączyć się z bazą danych');
  6.  
  7.  
  8. $result = mysql_query("SELECT * FROM fusioned460_extended_profile_props ORDER BY prop_order ASC")
  9. or die('Błąd zapytania');
  10.  
  11.  
  12.  
  13. $result2 = mysql_query("SELECT * FROM fusioned460_extended_profile_values WHERE prop_user_id=12")
  14. or die('Błąd zapytania');
  15.  
  16. echo "<table align='center' cellpadding='0' cellspacing='1' width='400' class='tbl-border'>\n";
  17. echo "<tr><td colspan='2' class='tbl2'><b>".$locale['xpf_999']."</b></td></tr>\n";
  18. $values = array();
  19. //$result2 = dbquery("SELECT * FROM ".DB_EXTENDED_PROFILE_VALUES." WHERE prop_user_id=".$_GET['lookup']."");
  20. if ($result2 && mysql_num_rows($result) > 0) {
  21. while ($row = mysql_fetch_assoc($result2)) {
  22. $values[$row['prop_name']] = $row['prop_value'];
  23. }
  24. }
  25. while ($obj = mysql_fetch_object($result)) {
  26. echo "<tr><td width='40%' class='tbl1' valign='top' align='left'>".htmlspecialchars($obj->prop_title, ENT_QUOTES)."</td>\n";
  27. echo "<td width='60%' class='tbl1' valign='top' align='right'>";
  28. if (array_key_exists($obj->prop_name, $values) && !empty($values[$obj->prop_name])) {
  29. echo html_entity_decode(stripslashes(htmlspecialchars($values[$obj->prop_name], ENT_QUOTES)));
  30. }
  31. else {
  32. echo $locale['xpf_300'];
  33. }
  34. echo "</td></tr>\n";
  35. }
  36. echo "</table>\n";
  37.  
  38.  
  39.  
  40.  
  41.  
  42. ?>


Ten post edytował dhapollo 4.09.2010, 16:05:08
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
patlysy
post 4.09.2010, 16:30:28
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

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


Nie jestem pewien czy chodzi Ci dokładnie o to ale możesz wykorzystać znacznik JOIN albo jeśli jedna i druga tabela mają jedno pole, które odnosi się do tych samych danych to możesz zrobić coś na zasadzie:

  1. SELECT tab1.prop_title, tab1.prop_order, tab2.prop_user_id, tab2.prop_value FROM fusioned460_extended_profile_props tab1, fusioned460_extended_profile_values tab2 WHERE tab1.prop_name=tab2.prop_name


Ten post edytował patlysy 4.09.2010, 16:31:49
Go to the top of the page
+Quote Post
dhapollo
post 4.09.2010, 17:37:13
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.04.2010

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


Niestety nie radze sobie:(

Plik wygląda obecnie tak, niestety wyskakuje komunikat
  1. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #3' at line 1


  1. <?
  2. $connection = mysql_connect('localhost', 'root', '131wgz')
  3. or die('Brak połączenia z serwerem MySQL');
  4. mysql_select_db('apoloniusz2')
  5. or die('Nie mogę połączyć się z bazą danych');
  6.  
  7.  
  8.  
  9. $query = mysql_query("SELECT fusioned460_extended_profile_props.prop_title, fusioned460_extended_profile_props.prop_order, fusioned460_extended_profile_values.prop_user_id, fusioned460_extended_profile_values.prop_value FROM fusioned460_extended_profile_props, fusioned460_extended_profile_values WHERE fusioned460_extended_profile_props.prop_name=fusioned460_extended_profile_values
    .prop_name"
    );
  10. $wynik = mysql_query($query)
  11. echo "<table border=1>";
  12. while ($row = mysql_fetch_assoc($wynik)) {
  13. echo "<tr>";
  14. foreach($row as $value) {
  15. echo "<td>";
  16. echo $value;
  17. echo "</td>";
  18. }
  19. echo "</tr>";
  20. }
  21. echo "</table>";
  22.  
  23. echo "$wynik";
  24.  
  25. ?>


Ten post edytował dhapollo 4.09.2010, 17:37:52
Go to the top of the page
+Quote Post
CuteOne
post 4.09.2010, 19:05:22
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


A co to??
  1. $query = mysql_query("SELECT fusioned460_extended_profile_props.prop_title, fusioned460_extended_profile_props.prop_order, fusioned460_extended_profile_values.prop_user_id, fusioned460_extended_profile_values.prop_value FROM fusioned460_extended_profile_props, fusioned460_extended_profile_values WHERE fusioned460_extended_profile_props.prop_name=fusioned460_extended_profile_values
  2. .prop_name");
  3. $wynik = mysql_query($query)


  1. $query = "SELECT fusioned460_extended_profile_props.prop_title, fusioned460_extended_profile_props.prop_order, fusioned460_extended_profile_values.prop_user_id, fusioned460_extended_profile_values.prop_value FROM fusioned460_extended_profile_props, fusioned460_extended_profile_values WHERE fusioned460_extended_profile_props.prop_name=fusioned460_extended_profile_values
  2. .prop_name";
  3. $wynik = mysql_query($query) or die(mysql_error());
Go to the top of the page
+Quote Post
masiakla
post 4.09.2010, 21:20:19
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 17
Dołączył: 4.09.2010
Skąd: far far away

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


A join nie byłby szybszy ? po co wyciągać wszystko z dwóch tabel i później to łączyć w pary ?

Ten post edytował masiakla 4.09.2010, 21:21:01
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: 19.07.2025 - 06:49