Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] zle wyświetlanie
Forum PHP.pl > Forum > Przedszkole
meehow18
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. ?>
wookieb
google -> mysql group_concat
Oczywiście musisz użyć razem z klauzulą GROUP BY
meehow18
  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 ;/
wookieb
Dodaj odpowiedni ALIAS dla wybieranego pola z GROUP_CONCAT
meehow18
Pomoze ktoś mi jak to zrobić bo nie za bardzo wiem;/
wookieb
Czytajże dziecko a znajdziesz
  1. GROUP_CONCAT(opcje.nazwa_opcji SEPARATOR ', ') AS nazwy_opcji

Oczywiście zmień klucz przy wyświetlaniu
bastard13
  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
meehow18
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
wookieb
Cytat(meehow18 @ 7.09.2010, 22:06:17 ) *
BŁĄD:Can't group on 'nazwy_opcji'

To pokaż teraz zapytanie
meehow18
  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());
wookieb
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.
meehow18
  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.  
wookieb
  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
meehow18
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 |
wookieb
Spójrz na pole "nazwy_opcji"
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.