Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]lista rozwijana 2 tabele
Forum PHP.pl > Forum > Przedszkole
walldeck
Witam.

Mój problem:
Chciałbym z tabeli klient wyciagnąc do formularza za pomoca listy rozwijanej rekord COMPANY lecz za bardzo nie wiemjak to zjeść.
Wydziergałem coś takiego ale za bardzo to nie działa.

poniżej struktury dwóch tabel oraz kod z formularzem:

  1. Struktura tabeli dla 'klient'
  2. --
  3.  
  4. CREATE TABLE klient (
  5. id int(11) NOT NULL AUTO_INCREMENT,
  6. company varchar(255) DEFAULT NULL,
  7. city varchar(100) DEFAULT NULL,
  8. country varchar(100) DEFAULT NULL,
  9. postcode smallint(20) DEFAULT '0',
  10. street_name varchar(100) DEFAULT NULL,
  11. street_number smallint(30) DEFAULT '0',
  12. PRIMARY KEY (id)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;


  1. Struktura tabeli dla 'orderstatus'
  2. --
  3.  
  4. CREATE TABLE orderstatus (
  5. id int(11) NOT NULL AUTO_INCREMENT,
  6. confirm datetime DEFAULT '0000-00-00 00:00:00',
  7. ordernr int(11) DEFAULT NULL,
  8. pieces int(11) DEFAULT NULL,
  9. width float DEFAULT NULL,
  10. height float DEFAULT NULL,
  11. quantity float DEFAULT NULL,
  12. sendby varchar(255) DEFAULT NULL,
  13. technology varchar(100) DEFAULT NULL,
  14. dispatch datetime DEFAULT '0000-00-00 00:00:00',
  15. `comment` varchar(255) DEFAULT NULL,
  16. client_id int(11) DEFAULT NULL,
  17. PRIMARY KEY (id),
  18. KEY client_id (client_id)
  19. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;



Kod formularza:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=utf-8"></head>
  4. <style type="text/css">
  5. TD{color:#353535;font-family:veranda}
  6. TH{color:#FFFFFF;font-family:veranda;background-color:#336699}
  7. </style>
  8. <?php
  9. (include "function.php");
  10. db::connect();
  11.  
  12. $osobysql = "SELECT company FROM klient";
  13. $results = mysql_query($osobysql)
  14. or die ("niepoprawne zapytanie: " .mysql_error());
  15. while ($row = mysql_fetch_array($results)) {
  16. $osobysql[$row['id']] = $row['company'];
  17. }
  18. ?>
  19.  
  20. <center>
  21. <br /> <center>Add new rekord: <br /><hr>
  22. <form action = "add_rekord.php" method = "post">
  23. <table border="0" cellpadding="0" cellspacing="5" wudth="100%" align="center">
  24. <tr>
  25. <td bgcolor="#FFFFFF">
  26.        Order number :
  27.    </td>
  28.    <td>
  29.   <input type = "text" name = "ordernr" maxlength="20" size = "10"><br />
  30.   </td>
  31.   </tr>
  32. <tr>
  33. <td bgcolor="#FFFFFF">
  34.        Confirm Date :
  35.    </td>
  36.    <td>  
  37.    <input type = "text" name = "confirm" maxlength="20" size = "10"><br />
  38.    </td>
  39.    </tr>
  40. <tr>
  41. <td bgcolor="#FFFFFF">
  42.        Number of pieces :
  43.    </td>
  44.    <td>    
  45.    <input type = "text" name = "pieces" maxlength="20" size = "10"><br />
  46.    </td>
  47.    </tr>
  48. <tr>
  49. <td bgcolor="#FFFFFF">
  50.        Width :
  51.    </td>
  52. <td bgcolor="#FFFFFF">  
  53.    <input type = "text" name = "width" maxlength="20" size = "10"><br />
  54.    </td>
  55.    </tr>
  56. <tr>
  57. <td bgcolor="#FFFFFF">
  58.        Height :
  59.    </td>
  60.    <td>  
  61.    <input type = "text" name = "height" maxlength="20" size = "10"><br />
  62.    </td>
  63.    </tr>
  64. <tr>
  65. <td bgcolor="#FFFFFF">
  66.        Send By :
  67.    </td>
  68.    <td>  
  69.    <input type = "text" name = "sendby" maxlength="20" size = "10"><br />
  70.   </td>
  71.    </tr>
  72.    
  73. <tr>
  74. <td bgcolor="#FFFFFF">
  75.        Print technology :
  76.    </td>
  77.    <td>  
  78.    <input type = "text" name = "technology" maxlength="20" size = "10"><br />
  79.   </td>
  80.    </tr>
  81. <tr>
  82. <td bgcolor="#FFFFFF">
  83.        Dispatch date :
  84.    </td>
  85.    <td>  
  86.    <input type = "text" name = "dispatch" maxlength="20" size = "10"><br />
  87.   </td>
  88.    </tr>
  89.    
  90. <tr>
  91. <td bgcolor="#FFFFFF">
  92.        Comment :
  93.    </td>
  94.    <td>  
  95.    <input type = "text" name = "comment" maxlength="20" size = "10"><br />
  96.   </td>
  97.    </tr>
  98. <tr>
  99. <td bgcolor="#FFFFFF" width="30%">Client</td>
  100. <td bgcolor="#FFFFFF">
  101. <select name="company">
  102. <option value="" selected>Select client</option>
  103. <?php
  104. foreach ($osobysql as $id => $company) {
  105. ?>
  106. <option value="<?php
  107. echo $id; ?>" ><?php
  108. echo $company; ?></option>
  109. <?php
  110. }
  111. ?>    
  112.    
  113.    
  114.    </table>
  115.  
  116.  
  117.  
  118.   <input type = "submit" value = "Dodaj">
  119. </form>
  120. </center>
  121.  
  122.  
  123. </html>


Dlaczego nie widzę w liście rozwijanej rekordów z tabeli klient?
slawny
Bo robisz to koleś jakoś dziwnie na około
  1. <?php
  2. while($tytul = mysql_fetch_array($slownik_tytulow))
  3. {
  4. echo "<option value='$tytul[1]'>$tytul[1]</option>";
  5. }
  6. ?>


powinno być łatwiej
Fifi209
Cytat(slawny @ 22.07.2009, 14:08:19 ) *
Bo robisz to koleś jakoś dziwnie na około
  1. <?php
  2. while($tytul = mysql_fetch_array($slownik_tytulow))
  3. {
  4. echo "<option value='$tytul[1]'>$tytul[1]</option>";
  5. }
  6. ?>


powinno być łatwiej


Wyświetla tutaj przecież...

  1. <?php
  2. foreach ($osobysql as $id => $company) {
  3. ?>
  4. <option value="<?php
  5. echo $id; ?>" ><?php
  6. echo $company; ?></option>
  7. <?php
  8. }
  9. ?>


Nie wiem czemu tak to zapisałeś a nie po prostu:
  1. <?php
  2. foreach ($osobysql as $id => $company) {
  3. echo '<option value="'.$id.'">'.$company.'</option>';
  4. }
  5. ?>


Popraw kod na zasadzie jaką ja pokazałem, bo takie Twoje mieszanie kodu jest okropne.
walldeck
Cytat(fifi209 @ 22.07.2009, 13:13:46 ) *
Wyświetla tutaj przecież...

  1. <?php
  2. foreach ($osobysql as $id => $company) {
  3. ?>
  4. <option value="<?php
  5. echo $id; ?>" ><?php
  6. echo $company; ?></option>
  7. <?php
  8. }
  9. ?>


Nie wiem czemu tak to zapisałeś a nie po prostu:
  1. <?php
  2. foreach ($osobysql as $id => $company) {
  3. echo '<option value="'.$id.'">'.$company.'</option>';
  4. }
  5. ?>


Popraw kod na zasadzie jaką ja pokazałem, bo takie Twoje mieszanie kodu jest okropne.


Zrobiłem tak jak powyżej ale teraz za to widze zmienną $company w liście rozwijanej zamiast danych z tabeli.
slawny
Cytat(fifi209 @ 22.07.2009, 15:13:46 ) *
Wyświetla tutaj przecież...

  1. <?php
  2. foreach ($osobysql as $id => $company) {
  3. ?>
  4.  
  5. echo $id; ?>\" >echo $company; ?>
  6. }
  7. ?>


A po co robić dwie pętle? Jak można to ogarnąć jedną?
nospor
Cytat
Zrobiłem tak jak powyżej ale teraz za to widze zmienną $company w liście rozwijanej zamiast danych z tabeli.
Widac zrobiles niedokladnie. Podany kod nie ma prawa wyswietlac zmiennej $company, a jej wartosc
Fifi209
Cytat(slawny @ 22.07.2009, 14:19:16 ) *
A po co robić dwie pętle? Jak można to ogarnąć jedną?


Zapytaj go, może potrzebuje te dane do czegoś jeszcze...?
walldeck
Cytat(fifi209 @ 22.07.2009, 13:21:02 ) *
Zapytaj go, może potrzebuje te dane do czegoś jeszcze...?


NIe, przykład ten mam z ksiązki dlatego może jest on taki zamotany. Dane mają być wybrane z listy rozwijanej i wyrzucone na ekran za pomocą Slelecta wraz z tym COMPANY rekordem, ale mam ta zmienna i nadal nie wiem gdzie jest bład.
Fifi209
Jakie obiawy? Jakiś error?

Troszkę więcej szczegółów co nie działa etc.
walldeck
Jak mówiłem wcześniej w liście rozwijanej mam widoczną tylko zmienną a nie dane z tabeli.

slawny
Musi działać

  1. <?php
  2. echo "<select name='company'>
  3. <option value='' selected>Select client</option>";
  4. $osobysql = "SELECT company FROM klient";
  5. $results = mysql_query($osobysql)
  6.  
  7. while ($row = mysql_fetch_array($results))
  8. {
  9. echo "<option value='".$row[1]."'>".$row[2]."</option>";
  10. }
  11. ?>


Popraw tylko cyferki bo mogą się nie zgadzać
slawny
Cytat(fifi209 @ 22.07.2009, 15:38:34 ) *
Najpierw sam poczytaj jak działa mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual a potem doradzaj.


A co ci mistrzu nie pasuje?
walldeck
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=utf-8"></head>
  4. <style type="text/css">
  5. TD{color:#353535;font-family:veranda}
  6. TH{color:#FFFFFF;font-family:veranda;background-color:#336699}
  7. </style>
  8. <?php
  9. (include "function.php");
  10. db::connect();
  11.  
  12. $klient = "SELECT company FROM klient";
  13. $results = mysql_query($osobysql)
  14. or die ("niepoprawne zapytanie: " .mysql_error());
  15. while ($row = mysql_fetch_array($results)) {
  16. $klient[$row['id']] = $row['company'];
  17. }
  18. ?>
  19.  
  20. <center>
  21. <br /> <center>Add new rekord: <br /><hr>
  22. <form action = "add_rekord.php" method = "post">
  23. <table border="0" cellpadding="0" cellspacing="5" wudth="100%" align="center">
  24. <tr>
  25. <td bgcolor="#FFFFFF">
  26.        Order number :
  27.    </td>
  28.    <td>
  29.   <input type = "text" name = "ordernr" maxlength="20" size = "10"><br />
  30.   </td>
  31.   </tr>
  32. <tr>
  33. <td bgcolor="#FFFFFF">
  34.        Confirm Date :
  35.    </td>
  36.    <td>  
  37.    <input type = "text" name = "confirm" maxlength="20" size = "10"><br />
  38.    </td>
  39.    </tr>
  40. <tr>
  41. <td bgcolor="#FFFFFF">
  42.        Number of pieces :
  43.    </td>
  44.    <td>    
  45.    <input type = "text" name = "pieces" maxlength="20" size = "10"><br />
  46.    </td>
  47.    </tr>
  48. <tr>
  49. <td bgcolor="#FFFFFF">
  50.        Width :
  51.    </td>
  52. <td bgcolor="#FFFFFF">  
  53.    <input type = "text" name = "width" maxlength="20" size = "10"><br />
  54.    </td>
  55.    </tr>
  56. <tr>
  57. <td bgcolor="#FFFFFF">
  58.        Height :
  59.    </td>
  60.    <td>  
  61.    <input type = "text" name = "height" maxlength="20" size = "10"><br />
  62.    </td>
  63.    </tr>
  64. <tr>
  65. <td bgcolor="#FFFFFF">
  66.        Send By :
  67.    </td>
  68.    <td>  
  69.    <input type = "text" name = "sendby" maxlength="20" size = "10"><br />
  70.   </td>
  71.    </tr>
  72.    
  73. <tr>
  74. <td bgcolor="#FFFFFF">
  75.        Print technology :
  76.    </td>
  77.    <td>  
  78.    <input type = "text" name = "technology" maxlength="20" size = "10"><br />
  79.   </td>
  80.    </tr>
  81. <tr>
  82. <td bgcolor="#FFFFFF">
  83.        Dispatch date :
  84.    </td>
  85.    <td>  
  86.    <input type = "text" name = "dispatch" maxlength="20" size = "10"><br />
  87.   </td>
  88.    </tr>
  89.    
  90. <tr>
  91. <td bgcolor="#FFFFFF">
  92.        Comment :
  93.    </td>
  94.    <td>  
  95.    <input type = "text" name = "comment" maxlength="20" size = "10"><br />
  96.   </td>
  97.    </tr>
  98. <tr>
  99. <td bgcolor="#FFFFFF" width="30%">Client</td>
  100. <td bgcolor="#FFFFFF">
  101. <select name="company">
  102. <option value="" selected>Select client</option>
  103. <?php
  104. foreach ($klient as $id => $company) {
  105. echo '<option value="'.$id.'">'.$company.'</option>';
  106. }
  107. ?>  
  108.    
  109.    
  110.    </table>
  111.  
  112.  
  113.  
  114.   <input type = "submit" value = "Dodaj">
  115. </form>
  116. </center>
  117.  
  118.  
  119. </html>
slawny
@walldeck próbowałeś choć raz mojego rozwiązania?
walldeck
Cytat(slawny @ 22.07.2009, 13:45:21 ) *
@walldeck próbowałeś choć raz mojego rozwiązania?

Tak z tym że w Twoim rozwiazaniu w liscie rozwijanej mam dwie zmienne row [2] oraz tą nieszczęsna moją. A w bazie musi byc relacja albo index na ten klucz chociaż?

Cytat(walldeck @ 22.07.2009, 13:48:17 ) *
Tak z tym że w Twoim rozwiazaniu w liscie rozwijanej mam dwie zmienne row [2] oraz tą nieszczęsna moją. A w bazie musi byc relacja albo index na ten klucz chociaż?

Nie sorry nic sie nie dzieje był problem ze składnią.
W Twoim przykładzie nie mam nic na tej liście a kod wyglada tak:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=utf-8"></head>
  4. <style type="text/css">
  5. TD{color:#353535;font-family:veranda}
  6. TH{color:#FFFFFF;font-family:veranda;background-color:#336699}
  7. </style>
  8. <?php
  9. (include "function.php");
  10. db::connect();
  11.  
  12.  
  13. ?>
  14.  
  15. <center>
  16. <br /> <center>Add new rekord: <br /><hr>
  17. <form action = "add_rekord.php" method = "post">
  18. <table border="0" cellpadding="0" cellspacing="5" wudth="100%" align="center">
  19. <tr>
  20. <td bgcolor="#FFFFFF">
  21.        Order number :
  22.    </td>
  23.    <td>
  24.   <input type = "text" name = "ordernr" maxlength="20" size = "10"><br />
  25.   </td>
  26.   </tr>
  27. <tr>
  28. <td bgcolor="#FFFFFF">
  29.        Confirm Date :
  30.    </td>
  31.    <td>  
  32.    <input type = "text" name = "confirm" maxlength="20" size = "10"><br />
  33.    </td>
  34.    </tr>
  35. <tr>
  36. <td bgcolor="#FFFFFF">
  37.        Number of pieces :
  38.    </td>
  39.    <td>    
  40.    <input type = "text" name = "pieces" maxlength="20" size = "10"><br />
  41.    </td>
  42.    </tr>
  43. <tr>
  44. <td bgcolor="#FFFFFF">
  45.        Width :
  46.    </td>
  47. <td bgcolor="#FFFFFF">  
  48.    <input type = "text" name = "width" maxlength="20" size = "10"><br />
  49.    </td>
  50.    </tr>
  51. <tr>
  52. <td bgcolor="#FFFFFF">
  53.        Height :
  54.    </td>
  55.    <td>  
  56.    <input type = "text" name = "height" maxlength="20" size = "10"><br />
  57.    </td>
  58.    </tr>
  59. <tr>
  60. <td bgcolor="#FFFFFF">
  61.        Send By :
  62.    </td>
  63.    <td>  
  64.    <input type = "text" name = "sendby" maxlength="20" size = "10"><br />
  65.   </td>
  66.    </tr>
  67.    
  68. <tr>
  69. <td bgcolor="#FFFFFF">
  70.        Print technology :
  71.    </td>
  72.    <td>  
  73.    <input type = "text" name = "technology" maxlength="20" size = "10"><br />
  74.   </td>
  75.    </tr>
  76. <tr>
  77. <td bgcolor="#FFFFFF">
  78.        Dispatch date :
  79.    </td>
  80.    <td>  
  81.    <input type = "text" name = "dispatch" maxlength="20" size = "10"><br />
  82.   </td>
  83.    </tr>
  84.    
  85. <tr>
  86. <td bgcolor="#FFFFFF">
  87.        Comment :
  88.    </td>
  89.    <td>  
  90.    <input type = "text" name = "comment" maxlength="20" size = "10"><br />
  91.   </td>
  92.    </tr>
  93. <tr>
  94. <td bgcolor="#FFFFFF" width="30%">Client</td>
  95. <td bgcolor="#FFFFFF">
  96.  
  97.  
  98. <select name='company'>
  99. <option value='' selected>Select client</option>";
  100. <?php
  101. $osobysql = "SELECT company FROM klient";
  102. $results = mysql_query($osobysql)
  103.  
  104. while ($row = mysql_fetch_array($results))
  105. {
  106. echo "<option value='".$row[1]."'>".$row[2]."</option>";
  107. }
  108. ?>
  109.    
  110.    
  111.    </table>
  112.  
  113.  
  114.  
  115.   <input type = "submit" value = "Dodaj">
  116. </form>
  117. </center>
  118.  
  119.  
  120. </html>
slawny
Cytat(fifi209 @ 22.07.2009, 15:52:56 ) *
Twoje rozwiązanie nie ma prawa działać.


wytłumacz dlaczego? bo używam sam w ten sposób i jakoś działa?!
walldeck
Pliki testuje na Localhoscie, faktycznie mialem HTML lecz jak zapisałem na PHP to nie ma nic na liscie rozwijanej tak jak w przykładzie slawnego.

Jakieś pomysły co do mojego przypadku? Bo nie rozwiazałem do teraz co jest nie teges...
kefirek
A jak dasz tak ?
  1. <?php
  2. $result = mysql_query("SELECT company FROM klient");
  3. $link = "";
  4. while ($data = mysql_fetch_assoc($result)) {
  5. $link .= "<option value='".$data['company']."'>".$data['company']."</option>";
  6. echo "<select name='company' style='width:250px;'>$link></select>";
  7. ?>
walldeck
Cytat(kefirek @ 22.07.2009, 17:00:15 ) *
A jak dasz tak ?
  1. <?php
  2. $result = mysql_query("SELECT company FROM klient");
  3. $link = "";
  4. while ($data = mysql_fetch_assoc($result)) {
  5. $link .= "<option value='".$data['company']."'>".$data['company']."</option>";
  6. echo "<select name='company' style='width:250px;'>$link></select>";
  7. ?>


Coraz lepiej z tym ze zrobiło mi tyle list rozwijanych z bazy ile mam rekordów ID. Ale wewnątrz nich są poprawne dane tylko co liste to pokroć są one dublowane. Ilustrują obrazki...





Yes!! dzięki 'kefirek'. Powyższe JPGi niepotrzebnie wkleiłem bo wczesniej było cos nie tak z tabelami.

Poprawny kod dla listy rozwijanej w moim przypadku zgodnie z tabelami co kod przedstawiłem powyżej:
  1. <?php
  2.  
  3. $result = mysql_query("SELECT company FROM klient");
  4. $link = "";
  5. while ($data = mysql_fetch_assoc($result))
  6. $link .= "<option value='".$data['company']."'>".$data['company']."</option>";
  7. echo "<select name='company' style='width:250px;'>$link></select>";
  8.  
  9. ?>


Dzięki Panowie za podpowiedzi, pozdrawiam
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.