Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mySQL] lista zapytan
itsme
post
Post #1





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




Witam Szanowne Grono,
Przegladajac wiele kursow mySQL-a zauwazylem, ze wiekszosc konczy sie wtedy gdy sie robi ciekawie (niestety). Dlatego zwracam sie do Was z moim pomyslem:
1. nie jest to kurs mySQL-a
2. bedzie to male faq
3. pomijamy pytania typu jak wybrac dane z jednej tabeli - czyli to co jest w kursach podstawowych
4. jezeli ktos chcedodac cos od siebie nie oponuje - zapraszam

dane wyjsciowe:
jest 5 tabel
- <b>klient</b> - [id].[nazwa]
- <b>faktura</b> - [id].[data_wystawienia].[id_klienta]
- <b>faktura_pozycje</b> - [id].[id_faktury].[id_towaru].[ilosc].[kwota_jednostkowa_netto].
.[stawka_vat].[wartosc_vat].[wartosc_netto].[kwota_brutto].[ilosc]
- <b>towar</b> - [id].[nazwa].[jm].[id_gupy_towarowej]
- <b>grupa_towarowa</b> - [id].[nazwa]

z tych tabel uzytkownik chce wyciagnac nastepujace dane:
<b>A</b> sume kwot wartosc_netto sprzedanych towarow z podzialem na kwartaly
<b>B</b> ilosc poszczegolnych stawek podatku VAT z podzialem na miesiace (wynik: 7% - kwieciec 2003 - 13 razy; oczywiscie takie cos nigdy nie jest potrzebne)
<b>C</b> sume kwot podatku VAT z poszczegolnych stawek podatku VAT z podzialem na miesiace (wynik: 7% - kwieciec 2003 - 2045.33 zł)
<b>D</b> ilosc faktur wystawionych na wszystkich klientow z podzialem na klientow i miesiace - pole nadrzedne klient | miesiac | ilosc
<b>E</b> suma wartosc_netto i ilosc z podzialem na sprzedaz danego towaru oraz miesiace
<b>F</b> Ilosc faktur w ktorych pokazal sie dany (wybrany) towar
<b>G</b> Wybranie nazwy_towaru/ilosc sprzedanego w roku 2002 danemu klientowi z danej grupy towarowej (dane znane id klienta, id grupy towarowej)

to sa pytania ktore przyszly mi do glowy. odpowiedz na nie daje duzo mozliwosci innym uzytkownikom. daje mozliwosc sprawdzennia swojej wiedzy i mam nadzieje ze wywola mala merytoryczna dyskusje.

INSTRUKCJA:
- jak udzielamy odpowiedzi - procz zapytania mySQL chcialbym aby pojawilo sie jego wytlumaczenie (SELECT FROM WHERE ORDER BY wykluczam) oto przyklad
Cytat
<b>ODP A</b>
SELECT ..... FROM .... WHERE .... ORDER BY DESC ....
DESC - oznacza sortowanie w ......

mam nadzieje ze to pomoze innym (zreszta mi tez)
po wyczerpaniu tematu mozna dodawac inne przyklady inne uklady tabel
Do posta jest ankieta chce wiedziec co sadzicie o tym pomysle.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dudus1
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.12.2005

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


Zwrócony wynik zapytania powinien tworzyć odnośniki do faktur poszczególnego klienta, a więc trzeba odpowiednio sformatować tabelę wyników, tak aby zwróciła listę kontrahentów, która będzie automatycznie odnośnikami,

Na potrzeby tych skryptów należy przyjąć:
- wszystkie wartości w tabelach jako "id" zostały zamienione zgodnie z nazwą tabeli, np. w tabeli "php_klient" id zmieniono na id_klienta, itd.

Niestety jest to wersja demo, nie testowana.

Tworzymy plik np. "klienci.php" odpowiedzialny za pobranie listy klientów i wyświetlenie odnośników do ich faktur. Listing poniżej.
Cytat
<?php
// pobranie informacji o klientach z bazy danych i przekazanie ich do tablicy
$tablica_klientow = pobierz_klientow();

// wyświetlenie listy klientów, pobranych z tabeli utworzonej wcześniej
wyswietl_klientow($tablica_klientow);

// funkcja pobierająca listę klientów z bazy i zapisująca ich do tablicy 
function pobierz_klientow()

  $lacz = lacz_bd();
  $zapytanie = "select * from php_klient where id_klienta";
  $wynik = @mysql_query($zapytanie);
  if (!$wynik)
    return false;
  $ilosc_klientow = @mysql_num_rows($wynik);
  if ($ilosc_klientow ==0)
      return false;
  $wynik = wynik_bd_do_tablicy($wynik);
  return $wynik;
}

// funkcja przekazująca wynik danego zapytania do tablicy
function wynik_bd_do_tablicy($wynik)
{
  $tablica_wyn = array();

  for ($licznik=0; $rzad = @mysql_fetch_array($wynik); $licznik++)
    $tablica_wyn[$licznik] = $rzad;

  return $tablica_wyn;
}

// funkcja wyświetlająca listę klientów
function wyswietl_klientow($tablica_klientow)
{
  //wyświetlenie listy klientów z przekazanej tablicy
  if (!is_array($tablica_klientow))
  {
    echo '<br />Brak klientów w bazie danych.<br />';
  }
  else
  {
    //stworzenie tabeli
    echo '
    <table width="px" class="" border = 0>';
   
    //stworzenie wiersza tabeli dla każdego zamówienia
    foreach ($tablica_klientow as $rzad)
    {
      // plik faktury.php... odpowiada za wyświetlenie faktur danego klienta
      $url = 'faktury.php?id_klienta='.($rzad['id_klienta']);   
      echo '</td><td width="436" valign="top" align="center">';
      $tytul = 'Numer klienta '.$rzad['id_klienta'].', nazwa '.$rzad['nazwa'];
      tworz_html_url($url, $tytul);
      echo '</td></tr>';
    }
    echo '</table>';
  }
  echo '<hr />';
}

// funkcja tworząca odnośnik dla każdego klienta
function tworz_html_url($url, $nazwa)
{
  // wyświetlenie URL-a jako łącza i nowa linia
?>
  <a href="<?php echo $url; ?>"><?php echo $nazwa; ?></a><br />
<?php
}
?>

Tworzymy plik "faktury.php" odpowiedzialny za wyświetlenie faktur danego klienta. Listing poniżej.
Cytat
<?php
$id_klienta = $_GET['id_klienta'];

// pobranie zamowienia z bazy danych
$faktury = pobierz_liste_faktur($id_klienta); 

// wyświetlenie faktur danego klienta
wyswietl_liste_faktur($faktury);

// funkcja pobierająca listę faktur
function pobierz_liste_faktur($id_klienta)
{
  // zapytanie bazy danych o wszystkie dane konkretnego zamówienia
  if (!$id_klienta || $id_klienta=='')
    return false;

  $lacz = lacz_bd();
  $zapytanie = "select * from php_faktura where id_klienta='$id_klienta'";
  $wynik = @mysql_query($zapytanie);
  if (!$wynik)
    return false;
  $ilosc_faktur = @mysql_num_rows($wynik);
  if ($ilosc_faktur ==0)
      return false;
  $wynik = wynik_bd_do_tablicy($wynik);
  return $wynik; 
}

// funkcja przekazująca wynik danego zapytania do tablicy
function wynik_bd_do_tablicy($wynik)
{
  $tablica_wyn = array();

  for ($licznik=0; $rzad = @mysql_fetch_array($wynik); $licznik++)
    $tablica_wyn[$licznik] = $rzad;

  return $tablica_wyn;
}

// funkcja wyświetlająca
function wyswietl_liste_faktur($faktury)
{
  // wyświetlenie wszystkich danych konkretnego filmu
  if (is_array($faktury))
  {
    echo '<br />Brak faktur wybranego klienta.<br />';
  }
  else
  {
    //stworzenie tabeli
    echo '
    <table width="px" class="" border = 0>';
   
    //stworzenie wiersza tabeli dla każdego zamówienia
    foreach ($faktury as $rzad)
    {
      // plik dane_faktury.php... odpowiada za wyświetlenie zawartości faktur danego klienta
      $url = 'dane_faktury.php?id_faktury='.($rzad['id_faktury']);   
      echo '</td><td width="436" valign="top" align="center">';
      $tytul = 'Numer klienta '.$rzad['id_klienta'].', data wystawienia '.$rzad['data_wystawienia'];
      tworz_html_url($url, $tytul);
      echo '</td></tr>';
    }
    echo '</table>';
  }
  echo '<hr />';
}

// funkcja tworząca odnośnik do każdej faktury
function tworz_html_url($url, $nazwa)
{
  // wyświetlenie URL-a jako łącza i nowa linia
?>
  <a href="<?php echo $url; ?>"><?php echo $nazwa; ?></a><br />
<?php
}
?>

I trzeci plik, "dane_faktury.php". Odpowiedzialny za wyświetlenie zawartości danej faktury konkretnego klienta. Listing poniżej.
Cytat
<?php
$id_klienta = $_GET['id_klienta'];
$id_faktury = $_GET['id_faktury'];

// przekazuje pozycje faktury do tablicy
$tablica_faktur = pobierz_dane_faktury($id_faktury);

// wyświetla pozycje z danej faktury faktury
wyswietl_pozycje_faktury($tablica_faktur);

// funkcja pobierająca pozycje faktury
function pobierz_dane_faktury($id_faktury)
{
  // zapytanie bazy danych o zamówienia
  if (!$id_faktury || $id_faktury=='')
    return false;
 
  $lacz = lacz_bd();
  $zapytanie = "select * from php_towar,php_faktura_pozycje where php_towar.id_towaru=php_faktura_pozycje.id_towaru and php_faktura_pozycje.id_faktury = '$id_faktury'";
  $wynik = @mysql_query($zapytanie);
  if (!$wynik)
    return false;
  $ilosc_pozycji = @mysql_num_rows($wynik);
  if ($ilosc_pozycji ==0)
      return false;
  $wynik = wynik_bd_do_tablicy($wynik);
  return $wynik;
}

// funkcja przekazująca wynik danego zapytania do tablicy
function wynik_bd_do_tablicy($wynik)
{
  $tablica_wyn = array();

  for ($licznik=0; $rzad = @mysql_fetch_array($wynik); $licznik++)
    $tablica_wyn[$licznik] = $rzad;

  return $tablica_wyn;
}

// funkcja wyświetlająca pozycje faktury
function wyswietl_pozycje_faktury($tablica_faktur)
{
  //wyświetlenie wszystkich pozycji z tablicy faktur
  if (!is_array($tablica_faktur))
  {
    echo '<br />Brak pozycji na fakturze.<br />';
  }
  else
  {
    //stworzenie tabeli
    echo '
    <table width="px" class="" border = 0>
    <b>Zamówiono :</b><br />';
   
    //stworzenie wiersza tabeli dla każdego zamówienia
    foreach ($tablica_faktur as $rzad)
    {

      echo '<td width="436" valign="top" style="text-align:justify;"><ul><li><b>
      Nazwa:</b> '.$rzad['nazwa_towaru'].', <b>Ilość:</b> '.$rzad['ilosc'].' <b>Kwota jednostkowa netto:</b> '.$rzad['kwota_jednostkowa_netto'].' <b>Stawka Vat:</b> '.$rzad['stawka_vat'].' <b>Wartość Vat:</b>  '.$rzad['wartosc_vat'].' <b>Wartość netto:</b> '.$rzad['wartosc_netto'].' <b>Kwota brutto</b> '.$rzad['kwota_brutto'].' PLN';

      echo '</td></tr>';
    }
    echo '</ul></ul></table></br />';
  }
  echo '';
}
?>


Mam nadzieję, że to działa, bo jak wspomniałem na początku nie miałem czasu żeby to sprawdzić.
Go to the top of the page
+Quote Post

Posty w temacie
- It's_me   [mySQL] lista zapytan   10.04.2003, 12:30:32
- - scanner   2xTAK, ale czy mógłbyś zamieścić kod SQL generując...   10.04.2003, 16:21:26
- - It's_me   ok nastapila zmiana z ogloszenie na przyklejony z...   10.04.2003, 19:19:10
- - DeyV   No to zaczynamy. Wyświetlanie grup towarów, oraz ...   12.04.2003, 19:29:27
- - DeyV   A teraz coś innego: Ilość faktur, które pojawiły s...   12.04.2003, 19:58:34
- - divx4u.pl   nie lepiej pole daty zmienic na tym timestap ?   30.04.2003, 10:40:24
- - kris_   Cytat[SQL] pobierz, plaintext SELECT count(`id...   30.04.2003, 16:07:52
- - DeyV   1. Myślę, że nieco lepiej wyglada to tak: [SQL] p...   30.04.2003, 17:30:05
- - uboottd   Troche prosta ta baza... No ale dobra. Mam zadanie...   30.06.2003, 11:49:32
- - FiDO   Nudzilem sie troche, przypomnial mi sie ten topic,...   18.08.2003, 23:05:03
- - peyn   Cytat(DeyV @ 2003-04-12 20:58:34)A gdyby potr...   27.09.2004, 11:41:43
- - oldek   Wszystko to jest piękne i ładne, tyle że w niereal...   19.12.2004, 09:12:57
- - Grizzli   Mozna tez w inn sposob zrobic zapytanie do bazy cz...   21.03.2005, 22:21:20
- - L.Pociask   a jak zrobić takie zapytanie, które wyszuka np wed...   22.11.2005, 19:55:54
- - dudus1   Zwrócony wynik zapytania powinien tworzyć odnośnik...   9.12.2005, 12:12:57
- - MalyKazio   To teraz ja mam pytanie. Jak z takiej bazy, z tabe...   9.01.2008, 12:18:23
- - bartg   [SQL] pobierz, plaintext SELECT id_klienta, id FRO...   25.01.2008, 17:38:27
|- - peyn   Cytat(bartg @ 25.01.2008, 18:38:27 ) ...   27.01.2008, 13:13:57
- - esp   Znalazłem chyba najbardziej odpowiedni wątek Chc...   22.10.2015, 08:35:12


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 Aktualny czas: 7.10.2025 - 01:13