Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/sql] przypisanie rekordów z drugiej tabeli
M@X
post
Post #1





Grupa: Zarejestrowani
Postów: 212
Pomógł: 0
Dołączył: 18.12.2003
Skąd: Warszawa

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


Witam.
Mam w bazie dwie tabele tab i tab2. W pierwszej są rekordy z klientami, a w drugiej tabeli po kilka rekordów dla klientów z pierwszej tabeli. Mam problem z wyświetleniem tego. Poniższy kod to fragment edycji tego rekordu, nie moge sobie poradzić z tym aby był wyświetlany dany klient z pierwszej bazy, oraz jego wszystkie rekordy z drugiej tabeli. Rekordy powiązane są kolumną o nazwie ID_klienta w obu bazach są takie kolumny. Kombinuje coś w 16 linijce (while....) ale chyba się zapetlam w pętli (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) mógłby ktoś pomóc ?

  1. <?php
  2. $id_edit=$_GET['ID_klienta'];
  3.        $edit_view='SELECT tab.ID_klienta as ID_klienta, tab.Nazwa_kl as Nazwa_kl, tab.opis as opis, tab.kto as kto, tab.data_save as data_save, tab2.ID_klienta as id_kl, tab2.pln as pln, tab2.uwaga as uwaga FROM tab, tab2 WHERE tab.ID_klienta="'.$id_edit.'"';
  4.        $edit_view2=mysql_query($edit_view);
  5.        $ev=mysql_fetch_array($edit_view2);
  6.        echo '<table>';
  7.        echo '<form method="POST" action="?id=2&action=getcheck&ID_klienta='.$_GET['ID_klienta'].'">
  8.        <tr>
  9.        <td align="right"><b>Nazwa klien:</b> </td><td>'.$ev[1].'</td>
  10.        </tr>
  11.    <tr>
  12.        <td align="right"><b>op:</b> </td><td><textarea name="opis" cols="50" rows="1">'.$ev[2].'</textarea></td>
  13.        </tr>';            
  14.            while($evv=mysql_fetch_array($ev))
  15.                    {
  16.                 echo '
  17.            <tr>
  18.            <td align="right"><b>opis:</b> </td><td>'.$evv[6].'</td>
  19.            </tr>';
  20.                    }
  21.            
  22.        echo '<tr>
  23.        <td align="right"><b>Ostatnia modyfikac:</b> </td><td>'.$ev[3].' - '.$ev[4].'</td>
  24.        </tr>
  25.        <tr>
  26.        <td></td><td><input type="submit" name="add" value="Zapisz edycje"></td>
  27.        </tr>
  28.        </form>';
  29.        echo '</table>';
  30. ?>


Ten post edytował M@X 16.09.2008, 13:09:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
JoShiMa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Zainteresuj się klauzulą LEFT OUTER JOIN w zapytaniach SQL
Go to the top of the page
+Quote Post
M@X
post
Post #3





Grupa: Zarejestrowani
Postów: 212
Pomógł: 0
Dołączył: 18.12.2003
Skąd: Warszawa

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


mógłby ktoś skrobnąć kawałek mojego kodu w jaki sposób użyć tego tutaj ? bo z samego tutoriala tego nie wyciągne.
Go to the top of the page
+Quote Post
drPayton
post
Post #4





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

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


Szczerze pisząc nie chce mi sięakurat w Twój kod wnikać, więc na prostym przykładzie:
Tabela klienci (id, imie, nazwisko)
Tabela zakupy (id, id_klienta, kwota)

Chcesz pobrać wszystkich klientów i dla każdego z nich wszystkie 'jego' rekordy z tabeli zakupy

  1. SELECT k.*, z.* FROM klienci AS k LEFT JOIN zakupy AS z ON k.id = z.id_klienta ORDER BY k.nazwisko


Nie uwzględniam tu grupowania, bo to tylko prosty przykład (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)


edit: Jak to wyświetlić:

  1. <?php
  2. // Pobieramy dane z bazy
  3. $query = mysql_query('SELECT k.*, z.kwota FROM klienci AS k LEFT JOIN zakupy AS z ON k.id = z.id_klienta ORDER BY k.id');
  4.  
  5. while($row = mysql_fetch_assoc($query)) {
  6.            /* Zmienna pomocnicza, za pomocą której sprawdzimy czy w danym przebiegu pętli mamy do czynienia z nowym klientem czy też 'robimy' tego samego co poprzednio. Jeśli nowy - wyświetlamy dane */
  7.    if(!isset($tmp) or $row['id'] != $tmp) {
  8.        echo '<br>Klien: ' . $row['imie'] . ' ' . $row['nazwisko'];
  9.    }
  10.    echo '<br><blockquote>' . $row['kwota'] . '</blockquote>';
  11.    $tmp = $row['id'];
  12. }
  13. ?>


Ten post edytował drPayton 16.09.2008, 14:56:51
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.08.2025 - 13:11