Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobieranie zmiennej z menu rozwijanego
Forum PHP.pl > Forum > Przedszkole
ithat
Witam
mam problem z pobraniem zmiennej z menu rozwijanego zrobionego na podstawie bazy danych. O co chodzi, chce zrobic menu rozwijane z lista klientow, i po wybraniu klienta wyswietlone beda tylko rekordy z danym klientem. Mocno posiłkując się internetem zrobilem cos takiego:

  1. $zapytanie10 = mysql_query ("SELECT DISTINCT klient FROM proba ORDER BY klient ASC");
  2.  
  3. echo '<select name="dane">';
  4.  
  5. echo '<option value="">Wybierz Klienta</option>';
  6.  
  7. while($option = mysql_fetch_assoc($zapytanie10)) {
  8.  
  9. echo '<option value="'.$option['klient'].'">'.$option['klient'].'</option>';
  10.  
  11. }


moge wybierac juz klientow z bazy bez powtórzeń, tylko jak to wykorzystać do tworzenia zapytania do bazy ? Chce jeszcze zrobic cos podobnego do innych kolumn, ale wydaje mi sie ze jak uda sie z ta, to jakos poradze sobie z pozostalymi bazujac na tej wink.gif Dodam ze jestem kompletnie zielony w php i mysql.
pozdrawiam
b4rt3kk
W option value wstaw id klienta, następnie po przesłaniu formularza, odczytaj wartość $_POST['dane'], będziesz miał tam zapisane owe id, które teraz możesz wykorzystać do napisania zapytania pobierającego szczegółowe dane o kliencie. Np.

  1. SELECT * FROM klienci WHERE id = '{$_POST['dane']}' LIMIT 1


I jeszcze jedna sprawa, czemu klienci się powtarzają? Coś czuję, że masz błędnie skonstruowaną bazę.
ithat
Baza jest dobrze sformułowana, tu masz zdjecie jak wyglada zapytanie select * from proba

http://imageshack.us/photo/my-images/843/problemlp.png/

Jest to baza numerów seryjnych urzadzen
Uklad tabeli
sn, urzadzenie, nr_zamowienia, klient, nr faktory, data

kluczem jest sn(czytaj numer seryjny)
b4rt3kk
Aha, już rozumiem, początkowo źle Cie zrozumiałem. Otóż całość musisz opakować w form, nie wiem, być może to zrobiłeś lecz nie wkleiłeś całości kodu.

  1. $zapytanie10 = mysql_query ("SELECT DISTINCT klient FROM proba ORDER BY klient ASC");
  2.  
  3. echo '<form action="wynik.php" method="POST"><select name="dane">';
  4.  
  5. echo '<option value="">Wybierz Klienta</option>';
  6.  
  7. while($option = mysql_fetch_assoc($zapytanie10)) {
  8.  
  9. echo '<option value="'.$option['klient'].'">'.$option['klient'].'</option>';
  10.  
  11. }
  12. echo '</select><input type="submit" /></form>';


Tworzysz plik wynik.php i w nim umieszczasz kod:

  1. <?php
  2. echo 'Wyswietl dane klienta: <b>' . $_POST['dane'] . '</b><br/>';
  3. $query = "SELECT * FROM proba WHERE klient = '{$_POST['dane']}'";
  4. // przetworzeniem zapytania i wyświetleniem wyników już myślę, że sam się zajmiesz?
  5. ?>
ithat
Nie nie miałem tego w <form>, mogę to zaimplementować przed podłączeniem do bazy tak jak teraz mam "Zapytanie"? Może dla ułatwienia zamieszczę cały kod. W kodzie jest zrobione proste wyswietlanie zawartosci bazy, ale to była forma treningu, domyślnie tego nie będzie.


  1. <form method="POST" action="index.php">
  2. Zapytanie: <input type="text" name="zapytanie"><br>
  3. <input type="submit" name="submit">
  4. </form>
  5.  
  6.  
  7. <?php
  8.  
  9. $host = "lxxxx";
  10. $user = "xxxx";
  11. $password = "xxxx";
  12.  
  13. $link = mysql_connect($host, $user, $password);
  14. $db_selected = mysql_select_db('zestawienia');
  15. if (!$link) {
  16. die('Nie połączono : ' . mysql_error());
  17. }
  18.  
  19. $zapytanie10 = mysql_query ("SELECT DISTINCT klient FROM proba ORDER BY klient ASC");
  20.  
  21. echo '<select name="dane">';
  22.  
  23. echo '<option value="">Wybierz Klienta</option>';
  24.  
  25. while($option = mysql_fetch_assoc($zapytanie10)) {
  26.  
  27. echo '<option value="'.$option['klient'].'">'.$option['klient'].'</option>';
  28.  
  29. }
  30.  
  31. echo '</select>';
  32.  
  33.  
  34. $wynik = mysql_query("$_POST[zapytanie]")
  35. or die('Błąd zapytania');
  36.  
  37.  
  38. if(mysql_num_rows($wynik) > 0) {
  39.  
  40. echo "<table cellpadding=\"2\" border=1>";
  41. while($r = mysql_fetch_object($wynik)) {
  42. echo "<tr>";
  43. if (isset($r->sn)) echo "<td>".$r->sn."</td>";
  44. if (isset($r->urzadzenie)) echo "<td>".$r->urzadzenie."</td>";
  45. if (isset($r->zamowienie))echo "<td>".$r->zamowienie."</td>";
  46. if (isset($r->klient))echo "<td>".$r->klient."</td>";
  47. if (isset($r->nr_faktury))echo "<td>".$r->nr_faktury."</td>";
  48. if (isset($r->data))echo "<td>".$r->data."</td>";
  49.  
  50.  
  51. echo "</tr>";
  52. }
  53. }
  54. echo "</table>";
  55.  
b4rt3kk
Nie możesz tego zaimplementować przed połączeniem z bazą, bo Twój select uzupełniony jest wartościami z bazy.

Jeśli jest to tylko sposób nauki to w ten sposób utrudniasz sobie sprawę, wrzucając wszystko do jednego pliku. Opakuj swój select w form, dodaj submit, a wyświetlanie wyników zrób na osobnej podstronie, tak jak to opisałem kilka postów wyżej.
ithat
Zrobiłem tak jak mówiłeś, zapomniałeś dopisać po $query " mysql_query" chwile mi zajęło znalezienie tego, ale wszytko dziala wielkie dzieki smile.gif
poprawiona linia kodu:
  1. $query = mysql_query("SELECT * FROM proba WHERE klient = '{$_POST['dane']}'");
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.