Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] wyświetlanie powiązanych ze sobą tabel
Forum PHP.pl > Forum > PHP
kononowicz
Moje zapytanie wygląda tak:

  1. <?php
  2. $zapytanie="SELECT
  3. `towary`.`ID` ,
  4.  `towary`.`TOWARY` ,
  5. `towary`.`KOD` ,
  6.  `towary`.`CENA` ,
  7. `dzialy`.`DZIALY` FROM `towary` , `dzialy`
  8.  WHERE
  9.  `towary`.`ID_DZIALY` = `dzialy`.`ID`
  10. ORDER BY `towary`.`ID` DESC
  11. ?>


tabela towary zawiera pola: ID, TOWARY, KOD, CENA oraz ID_DZIALY.
tabela dzialy zawiera pola ID i DZIALY skąd tabela towary bierze nazwy działów i podstawia w wyświetlanej tabeli na stronce.

skrypt wyświetlający dane bazy działa dobrze ...

Pytanie brzmi:
dlaczego uzywając tego zapytania w skrypcie wyszukującym wyniki są dublowane. np. jesli w wynikach sa 3 towary to pojawiają sie po 3 razy?questionmark.gifquestionmark.gif?
legorek
Nie wiem czy dobrze zrozumiałem Twój problem. Prawdopodobnie masz źle skonstruowaną pętlę odpowiedzialna za wyświetlanie wyników. Podaj kod odpowiedzilany za wyświetlanie wyników.
kononowicz
Cytat(legorek @ 9.12.2006, 03:22:53 ) *
Nie wiem czy dobrze zrozumiałem Twój problem. Prawdopodobnie masz źle skonstruowaną pętlę odpowiedzialna za wyświetlanie wyników. Podaj kod odpowiedzilany za wyświetlanie wyników.


  1. <?php
  2. $ilosc_wierszy = mysql_num_rows($wynik);
  3.  echo "<br><img src=images/strzalka.jpg>  Znaleziono: $ilosc_wierszy<br><br>";
  4.  
  5.  echo "<table cellpadding="1" border=1>";
  6.  echo "<tr>";
  7.  echo "<td> towary </td>";
  8.  echo "<td> kod </td>";
  9.  echo "<td> cena </td>";
  10.  echo "<tr>";
  11.  
  12.  while( $wiersz = mysql_fetch_array($wynik) )
  13.  {
  14. if( $i % 2 == 0 )
  15.  $class = 'jasna';
  16. else
  17. $class = 'ciemna';
  18.  echo "<tr class= '.$class.' >";
  19.  echo "<td>".$wiersz['TOWARY']."</td>";
  20.  echo "<td>".$wiersz['KOD']."</td>";
  21.  echo "<td>".$wiersz['CENA']."</td>";
  22.  echo "<td>".$wiersz['ID']."</td>";
  23.  echo "<tr>";
  24.  $i++;
  25.  }
  26. echo "</table>";
  27. ?>



___________________________________________________________

ten skrypt wyświetla działy z tabeli dzialy ale przy okazji wyświetla kilka razy ten sam wynik a ponadto kazdy wynik z kazdym rekordem po kolei z tabeli działy. czyli kazdy rekord jest powtórzony tyle razy ile jest działów. do zmiennej zapytanie nalezaloby dodac chyba na koniec zapytania `towary`.`ID_DZIALY`=`dzialy`.`ID`
  1. <?php
  2. print ' <form action="asortyment.php" method="post">
  3. <br>wpisz towar
  4.  <input type="text" name="towary" id="towary" value="">
  5. <br>zakres ceny <br>od:
  6. <input type="text" name="cena_od" id="cena_od" value="">
  7. do:
  8. <input type="text" name="cena_do" id="cena_do" value="">
  9. <br>
  10. <br>wybierz dział <br> <select name="id_dzialy" id="id_dzialy">
  11. <option value=""> wszystkie
  12. <option value="1">dział budowlany
  13.  <option value="2">farby
  14.  <option value="3">dział hydrauliczny
  15.  <option value="4">dział metalowy
  16. <option value="5">dział sanitarny
  17. <option value="6">inne
  18.  </select>
  19. <input type="submit" name="znajdz" value="znajdz">
  20. <input type="reset" value="wyczyść">
  21. </SELECT>
  22. </form> ';
  23.  
  24.  
  25. $i=1;
  26. if((isset($_POST['znajdz']))&&(!$_POST['towary'])=='')
  27. {
  28.  
  29.  $towary = $_POST['towary'];
  30.  $kod = $_POST['kod'];
  31.  $wh = array();
  32.  if (!empty($_POST['cena_od']))
  33.  $wh[] = 'CENA >= '.$_POST['cena_od'];
  34.  if (!empty($_POST['cena_do']))
  35.  $wh[] = 'CENA <= '.$_POST['cena_do'];
  36.  if (!empty($_POST['towary']))
  37. $wh[] = "TOWARY LIKE '%$towary%'";
  38.  if (!empty($_POST['id_dzialy']))
  39. $wh[] = "ID_DZIALY = '$id_dzialy'";
  40.  if (!empty($wh))
  41. $where = 'where '.implode(' and ', $wh);
  42.  else
  43. $where = '';
  44.  
  45. $zapytanie = 'SELECT * FROM `towary` , `dzialy` '.$where;
  46. $wynik = mysql_query($zapytanie);
  47.  
  48.  
  49. $ilosc_wierszy = mysql_num_rows($wynik);
  50.  echo "<br><img src=images/strzalka.jpg>  Znaleziono: $ilosc_wierszy<br><br>";
  51.  
  52.  echo "<table cellpadding="1" border=1>";
  53.  echo "<tr>";
  54.  echo "<td> towary </td>";
  55.  echo "<td> kod </td>";
  56.  echo "<td> cena </td>";
  57.  echo "<td> dział </td>";
  58.  echo "<tr>";
  59.  
  60.  while( $wiersz = mysql_fetch_array($wynik) )
  61.  {
  62. if( $i % 2 == 0 )
  63.  $class = 'jasna';
  64. else
  65. $class = 'ciemna';
  66.  echo "<tr class= '.$class.' >";
  67.  echo "<td>".$wiersz['TOWARY']."</td>";
  68.  echo "<td>".$wiersz['KOD']."</td>";
  69.  echo "<td>".$wiersz['CENA']."</td>";
  70.  echo "<td>".$wiersz['DZIALY']."</td>";
  71.  echo "<tr>";
  72.  $i++;
  73.  }
  74. echo "</table>";
  75. ?>
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.