Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] zle wyświetlanie
meehow18
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 10.01.2010

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


Witam mam taki problem że wyświetla mi coś takiego

przedmiot 1 | obrazek1 | Opcja1 | Cena1 |
przedmiot 1 | obrazek1 | Opcja2 | Cena1 |

przedmiot 2 | obrazek2 | Opcja1 | Cena2 |
przedmiot 2 | obrazek2 | Opcja2 | Cena2 |

Ja chce zeby w jednym wierszu przy przedmiocie pokazywało wszystkie dodane opcje nie w kazdym nowym wierszu.

  1. <?php
  2. $result = mysql_query("SELECT sklep.*, item.nazwaPola, opcje.nazwa_opcji
  3. FROM sklep
  4. INNER JOIN item ON item.idPrzedmiotu = sklep.id
  5. INNER JOIN opcje ON opcje.id = item.nazwaPola
  6. ") or die('BŁĄD:'.mysql_error());
  7.  
  8. if(mysql_num_rows($result) > 0) {
  9.  
  10.  
  11.  
  12. echo "<table cellpadding=\"2\" border=1>";
  13. while($r = mysql_fetch_array($result)) {
  14. echo "<tr>";
  15. echo "<td>".$r['nazwa']."</td>";
  16. echo "<td>".$r['img']."</td>";
  17. echo "<td>".$r['nazwa_opcji']."</td>";
  18.  
  19. echo "<td>"."<b>Cena:</b>".$r['cred']."</td>";
  20. echo "<td> ";
  21. ?>
  22. <a href="<?php echo $_SERVER['PHP_SELF'];?>?akcja=kup&id=<?php echo $r['idPrzedmiotu']; ?>">KUP</a>
  23.  
  24. </td>
  25. <?php
  26. echo "</tr>";
  27. print_r($r);
  28. }
  29. echo "</table>";
  30. }
  31. else {
  32. echo '<b>Nie ma żadnych przedmiotów</b>';
  33. }
  34.  
  35. ?>
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




google -> mysql group_concat
Oczywiście musisz użyć razem z klauzulą GROUP BY
Go to the top of the page
+Quote Post
meehow18
post
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 10.01.2010

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


  1. $result = mysql_query("
  2.  
  3. SELECT sklep.*,
  4. item.*,
  5. GROUP_CONCAT(opcje.nazwa_opcji SEPARATOR ', ')
  6. FROM sklep
  7. INNER JOIN item ON item.idPrzedmiotu = sklep.id
  8. INNER JOIN opcje ON opcje.id = item.nazwaPola
  9. GROUP BY opcje.nazwa_opcji
  10. ") OR die('BŁĄD:'.mysql_error());

Wyswietla mi 2 rekordy te same. Kolumna opcje jest pusta ;/
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Dodaj odpowiedni ALIAS dla wybieranego pola z GROUP_CONCAT
Go to the top of the page
+Quote Post
meehow18
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 10.01.2010

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


Pomoze ktoś mi jak to zrobić bo nie za bardzo wiem;/
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Czytajże dziecko a znajdziesz
  1. GROUP_CONCAT(opcje.nazwa_opcji SEPARATOR ', ') AS nazwy_opcji

Oczywiście zmień klucz przy wyświetlaniu
Go to the top of the page
+Quote Post
bastard13
post
Post #7





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


  1. SELECT sklep.*,item.*,GROUP_CONCAT(opcje.nazwa_opcji)
  2. FROM sklep
  3. INNER JOIN item ON item.idPrzedmiotu = sklep.id
  4. INNER JOIN opcje ON opcje.id = item.nazwaPola
  5. GROUP BY opcje.nazwa_opcji
Go to the top of the page
+Quote Post
meehow18
post
Post #8





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 10.01.2010

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


Cytat(wookieb @ 7.09.2010, 21:57:51 ) *
Czytajże dziecko a znajdziesz
  1. GROUP_CONCAT(opcje.nazwa_opcji SEPARATOR ', ') AS nazwy_opcji

Oczywiście zmień klucz przy wyświetlaniu


BŁĄD:Can't group on 'nazwy_opcji'


Cytat(bastard13 @ 7.09.2010, 22:00:12 ) *
  1. SELECT sklep.*,item.*,GROUP_CONCAT(opcje.nazwa_opcji)
  2. FROM sklep
  3. INNER JOIN item ON item.idPrzedmiotu = sklep.id
  4. INNER JOIN opcje ON opcje.id = item.nazwaPola
  5. GROUP BY opcje.nazwa_opcji


kolumna opcje jest pusta wyswietla 1 record

Ten post edytował meehow18 7.09.2010, 21:07:32
Go to the top of the page
+Quote Post
wookieb
post
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(meehow18 @ 7.09.2010, 22:06:17 ) *
BŁĄD:Can't group on 'nazwy_opcji'

To pokaż teraz zapytanie
Go to the top of the page
+Quote Post
meehow18
post
Post #10





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 10.01.2010

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


  1. $result = mysql_query("
  2.  
  3. SELECT sklep.*,
  4. item.*,
  5. GROUP_CONCAT(opcje.nazwa_opcji SEPARATOR ', ') AS nazwy_opcji
  6. FROM sklep
  7. INNER JOIN item ON item.idPrzedmiotu = sklep.id
  8. INNER JOIN opcje ON opcje.id = item.nazwaPola
  9. GROUP BY nazwy_opcji
  10. ") OR die('BŁĄD:'.mysql_error());
Go to the top of the page
+Quote Post
wookieb
post
Post #11





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A czy ktoś kazał zmieniać Ci GROUP BY? Zresztą stare i tak By ci nie zadziałało.
Podaj struktury tabel (SHOW CREATE TABLE) i cały wynik zapytania.
Go to the top of the page
+Quote Post
meehow18
post
Post #12





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 10.01.2010

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


  1. -- phpMyAdmin SQL Dump
  2. -- version 3.2.4
  3. -- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
  4. --
  5. -- Host: localhost
  6. -- Czas wygenerowania: 07 Wrz 2010, 22:25
  7. -- Wersja serwera: 5.1.41
  8. -- Wersja PHP: 5.3.1
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12.  
  13. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  14. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  15. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  16. /*!40101 SET NAMES utf8 */;
  17.  
  18. --
  19. -- Baza danych: `shop`
  20. --
  21.  
  22. -- --------------------------------------------------------
  23.  
  24. --
  25. -- Struktura tabeli dla `item`
  26. --
  27.  
  28. CREATE TABLE IF NOT EXISTS `item` (
  29. `id` int(11) NOT NULL AUTO_INCREMENT,
  30. `idPrzedmiotu` int(11) NOT NULL,
  31. `nazwaPola` int(11) NOT NULL,
  32. PRIMARY KEY (`id`)
  33. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
  34.  
  35. --
  36. -- Zrzut danych tabeli `item`
  37. --
  38.  
  39. INSERT INTO `item` (`id`, `idPrzedmiotu`, `nazwaPola`) VALUES
  40. (1, 0, 9),
  41. (2, 94, 8),
  42. (3, 94, 9),
  43. (4, 97, 8),
  44. (5, 97, 9),
  45. (6, 99, 8),
  46. (7, 99, 9);
  47.  
  48. -- --------------------------------------------------------
  49.  
  50. --
  51. -- Struktura tabeli dla `newsy`
  52. --
  53.  
  54. CREATE TABLE IF NOT EXISTS `newsy` (
  55. `Id.autor` int(11) NOT NULL AUTO_INCREMENT,
  56. `tresc` text NOT NULL,
  57. `data` date NOT NULL,
  58. PRIMARY KEY (`Id.autor`)
  59. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  60.  
  61. --
  62. -- Zrzut danych tabeli `newsy`
  63. --
  64.  
  65.  
  66. -- --------------------------------------------------------
  67.  
  68. --
  69. -- Struktura tabeli dla `opcje`
  70. --
  71.  
  72. CREATE TABLE IF NOT EXISTS `opcje` (
  73. `ID` int(11) NOT NULL AUTO_INCREMENT,
  74. `nazwa_opcji` text NOT NULL,
  75. PRIMARY KEY (`ID`)
  76. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
  77.  
  78. --
  79. -- Zrzut danych tabeli `opcje`
  80. --
  81.  
  82. INSERT INTO `opcje` (`ID`, `nazwa_opcji`) VALUES
  83. (8, 'dd'),
  84. (9, 'ref');
  85.  
  86. -- --------------------------------------------------------
  87.  
  88. --
  89. -- Struktura tabeli dla `sklep`
  90. --
  91.  
  92. CREATE TABLE IF NOT EXISTS `sklep` (
  93. `ID` int(11) NOT NULL AUTO_INCREMENT,
  94. `cred` text NOT NULL,
  95. `img` text NOT NULL,
  96. `nazwa` varchar(100) NOT NULL,
  97. PRIMARY KEY (`ID`)
  98. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=100 ;
  99.  
  100. --
  101. -- Zrzut danych tabeli `sklep`
  102. --
  103.  
  104. INSERT INTO `sklep` (`ID`, `cred`, `img`, `nazwa`) VALUES
  105. (99, '85', 'osda', 'Venom'),
  106. (98, '', '', ''),
  107. (97, '75', 'img/gd.jpg', 'Gread Set'),
  108. (96, '', '', ''),
  109. (95, '', '', '');
  110.  
  111. -- --------------------------------------------------------
  112.  
  113. --
  114. -- Struktura tabeli dla `user`
  115. --
  116.  
  117. CREATE TABLE IF NOT EXISTS `user` (
  118. `ID` int(11) NOT NULL AUTO_INCREMENT,
  119. `credit` text NOT NULL,
  120. PRIMARY KEY (`ID`)
  121. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  122.  
  123. --
  124. -- Zrzut danych tabeli `user`
  125. --
  126.  
  127.  
  128. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  129. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  130. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  131.  
Go to the top of the page
+Quote Post
wookieb
post
Post #13





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. SELECT sklep.*, item.nazwaPola, opcje.nazwa_opcji, GROUP_CONCAT(opcje.nazwa_opcji) AS nazwy_opcji
  2. FROM sklep
  3. INNER JOIN item ON item.idPrzedmiotu = sklep.id
  4. INNER JOIN opcje ON opcje.id = item.nazwaPola
  5. GROUP BY sklep.ID
Go to the top of the page
+Quote Post
meehow18
post
Post #14





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 10.01.2010

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


Wyświetla mi 2 przedmioty ale o jednej opcji tylko.
Chcialbym aby to było w takiej formie

przedmiot 1 | obrazek1 | Opcja1<br> Opcja 2 | Cena1 |

przedmiot 2 | obrazek2 | Opcja1<br> Opcja 2 | Cena2 |

Ten post edytował meehow18 7.09.2010, 21:52:22
Go to the top of the page
+Quote Post
wookieb
post
Post #15





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Spójrz na pole "nazwy_opcji"
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: 23.12.2025 - 02:47