Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php pobieranie wartości z 2 tabel mysql
Forum PHP.pl > Forum > PHP
dhapollo
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. ?>
patlysy
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
dhapollo
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. ?>
CuteOne
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());
masiakla
A join nie byłby szybszy ? po co wyciągać wszystko z dwóch tabel i później to łączyć w pary ?
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.