Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Lista rozwijana - z tabeli mysql do tabeli mysql
Forum PHP.pl > Forum > PHP
kuba_pilach
A więc chciałbym zrobić listę rozwijaną, w której byłyby kolejne rekordy z tabeli mysql "Przedmiot".
Potem po naciśnięciu guzika albo czegoś, dodaje ten rekord do tabeli "d_kuba" jeśli już go tam nie ma.
O to mój kod:

  1. <?php
  2. // parametry serwera
  3. $serwer = "mysql.cba.pl"; // nazwa serwera mysql
  4. $login = "login"; // login do bazy
  5. $haslo = "haslo"; // haslo do bazy
  6. $baza = "dzienniczekk_cba_pl"; // nazwa bazy
  7. $tabela = "Przedmiot"; // nazwa tabeli
  8.  
  9.  
  10. ?>
  11. <form action="" method="post">
  12.  
  13. <?php
  14. $zapytanie = mysql_query ("SELECT * FROM Przedmiot ORDER BY ID ASC");
  15. echo '<select name="przedmiot" onchange="this.form.submit()">';
  16. echo '<option value="">Wybierz przedmiot do dodania</option>';
  17.  
  18. while($option = mysql_fetch_assoc($zapytanie)) {
  19.  
  20. echo '<option value="'.$option['NAZWA'].'">'.$option['NAZWA'].'</option>';
  21.  
  22. }
  23.  
  24. echo '</select>';
  25. ?>
  26. </form>
  27.  
  28. <?php
  29.  
  30.  
  31.  
  32. $przedmiot = $_POST['przedmiot'];
  33.  
  34. if($przedmiot) {
  35.  
  36. // łączymy się z bazą danych
  37. if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
  38. $ile = mysql_query("SELECT * FROM d_kuba WHERE PRZEDMIOTY = '$przedmiot'");
  39. $ile = mysql_num_rows($ile);
  40.  
  41. // jeśli nie ma to wprowadzamy ją do bazy danych
  42. if ($ile == 0) {
  43. // zapytanie do bazy danych
  44. $wynik = @mysql_query("INSERT INTO d_kuba (PRZEDMIOT) values( '$przedmiot'")
  45. or die("Błąd w zapytaniu!");
  46. } else {
  47. echo "Dany przedmiot już istnieje.";
  48. }
  49. }
  50. }

Co w nim nie tak?
Bardzo proszę o odpowiedź i dziękuję z góry.
markonix
Cytat(kuba_pilach @ 24.12.2010, 16:05:38 ) *
Co w nim nie tak?


Na te pytanie powinieneś sam sobie odpowiedzieć i podzielić się tym na forum, aby można było Ci pomóc.

Poprawć bbcode, daj kod w znaczniki php, a nie 'code'.
kuba_pilach
A więc tak... wyświetla mi listę rozwijaną, ale bez danych z mysql...
Czyli: "Wybierz przedmiot do dodania"
Jeszcze raz bardzo proszę o pomoc i dziękuję z góry...
Spawnm
mysql_connect dajesz przed mysql_query ...

Dodatkowo proszę nadać sensowny tytuł tematu.
kuba_pilach
A jak będzie wyglądał cały kod po daniu tego?
Bo nie bardzo kumam, bo dopiero nie dawno zacząłem się w to bawić, i cały czas mi jakieś syntaxy wyświetla...

PS. A jaka nazwa tytułu powinna być? smile.gif
wookieb
Cytat(kuba_pilach @ 24.12.2010, 22:13:28 ) *
PS. A jaka nazwa tytułu powinna być? smile.gif

Taka, żeby nie wskazywała na to, że przemówiłeś w wigilię "ludzkim" głosem.
kuba_pilach
Dobra, daję:
"Lista rozwijana z tabeli do tabeli mysql"
Może być?

markonix
Problemem jest wstawienie danych z bazy danych do opcji select'a.

Podaj dokładnie jaki błąd jest wyświetlany i wklej kod (zaznaczając linijkę z błędem).

Skoro syntax to błąd składniowy, jakiś nawias niedomknięty np.
kuba_pilach
hmm... ale zobacz i porównaj te dwa pliki jak działają
Plik, w którym jest problem
Plik do porównania

A to macie główny plik:
  1. <?php
  2. // parametry serwera
  3. $serwer = "mysql.cba.pl"; // nazwa serwera mysql
  4. $login = "login"; // login do bazy
  5. $haslo = "haslo"; // haslo do bazy
  6. $baza = "dzienniczekk_cba_pl"; // nazwa bazy
  7. $tabela = "Przedmiot"; // nazwa tabeli
  8.  
  9.  
  10. ?>
  11. <form action="" method="post">
  12.  
  13. <?php
  14. $zapytanie = mysql_query ("SELECT * FROM Przedmiot ORDER BY ID ASC");
  15. echo '<select name="przedmiot" onchange="this.form.submit()">';
  16. echo '<option value="">Wybierz przedmiot do dodania</option>';
  17.  
  18. while($option = mysql_fetch_assoc($zapytanie)) {
  19.  
  20. echo '<option value="'.$option['NAZWA'].'">'.$option['NAZWA'].'</option>';
  21.  
  22. }
  23.  
  24. echo '</select>';
  25. ?>
  26. </form>
  27.  
  28. <?php
  29.  
  30.  
  31.  
  32. $przedmiot = $_POST['przedmiot'];
  33.  
  34. if($przedmiot) {
  35.  
  36. // łączymy się z bazą danych
  37. if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
  38. $ile = mysql_query("SELECT * FROM d_kuba WHERE PRZEDMIOTY = '$przedmiot'");
  39. $ile = mysql_num_rows($ile);
  40.  
  41. // jeśli nie ma to wprowadzamy ją do bazy danych
  42. if ($ile == 0) {
  43. // zapytanie do bazy danych
  44. $wynik = @mysql_query("INSERT INTO d_kuba (PRZEDMIOT) values( '$przedmiot'")
  45. or die("Błąd w zapytaniu!");
  46. } else {
  47. echo "Dany przedmiot już istnieje.";
  48. }
  49. }
  50. }


Kod z "dzienniczek.php"
  1. <?php
  2. // podłączamy plik connection.php
  3. require "connection.php";
  4. // wywołujemy funkcję connection()
  5. connection();
  6.  
  7. ?>
  8. <form action="nowyprzedmiot.php" method="post">
  9. <div>
  10. <?php
  11. $zapytanie = mysql_query ("SELECT * FROM Przedmiot ORDER BY ID ASC");
  12.  
  13. echo '<select name="wybranyprzedmiot">';
  14.  
  15. echo '<option value="">Lista przedmiotów dostępnych</option>';
  16.  
  17. while($option = mysql_fetch_assoc($zapytanie)) {
  18.  
  19. echo '<option value="'.$option['NAZWA'].'">'.$option['NAZWA'].'</option>';
  20.  
  21. }
  22.  
  23. echo '</select>';
  24. ?>
  25. </div>
  26. <input type="submit" value="Dodaj przedmiot" />;
  27. </form>;
  28.  



Kod z "nowyprzedmiot.php":
  1. <?php
  2. // odbieramy dane z formularza
  3. $wybranyprzedmiot = $_POST['wybranyprzedmiot'];
  4.  
  5. if($wybranyprzedmiot) {
  6.  
  7. // laczymy sie z baza danych
  8. $connection = @mysql_connect('mysql.cba.pl', 'dzienniczek', 'ku2010ba')
  9. or die('Brak polaczenia z serwerem MySQL');
  10. $db = @mysql_select_db('dzienniczekk_cba_pl', $connection)
  11. or die('Nie moge polaczyc sie z baza danych');
  12.  
  13. // sprawdzamy, czy dana wartość już jest w bazie
  14. $ile = mysql_query("SELECT * FROM d_kuba WHERE PRZEDMIOTY = '$wybranyprzedmiot'");
  15. $ile = mysql_num_rows($ile);
  16.  
  17. // jeśli nie ma to wprowadzamy ją do bazy danych
  18. if ($ile == 0) {
  19. $ins = @mysql_query("INSERT INTO d_kuba (PRZEDMIOTY) values ('$wybranyprzedmiot') ");
  20. if($ins) echo "Przedmiot zostal dodany poprawnie";
  21. else echo "Blad nie udalo sie dodac nowego rekordu";}
  22. else {
  23. echo "Dany przedmiot juz instnieje w twoim dzienniku"; }
  24.  
  25. mysql_close($connection);
  26. }
  27.  
  28. ?>


Z tamtym kodem, jest to nie tak, że do danej tabeli zapisuje liczbę "0", a ma załóżmy "Matematyka"
markonix
Sory ale utrudniasz...

Problem widzę w pliku "dodawanie.php" bo widzę tam pusty select, a w poście dajesz kod wszystkiego oprócz tego właśnie pliku...

Cytowanie pliku odpowiedzialnego za połączenie z bazą nie jest potrzebne gdy "coś tam już dodało" mimo, że źle.
kuba_pilach
Dobra, w dodawanie.php nie działa, a w tamtym działa...
Co mam zrobić, by select nie był pusty?
markonix
Wstawić w option'y odpowiednie dane.

Jeśli nie umiesz to sprawdź czy w ogóle umiesz coś z bazy wyciągnąć.

Jeśli nie umiesz to sprawdź czy nie ma błędu w zapytaniu SQL za pomocą funkcji die i mysql_error czyli
Kod
or die(mysql_error())

za SELECT'em.

kuba_pilach
A czy w tym drugim, nowyprzedmiot.php i dzienniczek.php da się jakoś poprawić? By do bazy danych wpisywało dobre rzeczy, a nie "0" questionmark.gif?
markonix
Jeżeli dodaje Ci 0 to najpierw spróbuj sam zbadać dlaczego.
Najprościej to zrobisz (ja tak robię) sprawdzając gdzie się coś psuje robiąc var_dump na zmiennej przechowującej tą wartość.
Zrób to w kilku miejscach w kodzie (po pobraniu z formularza i przez zapytaniem SQL). Jeśli problem w zapytaniu to warto go też wyświetlić (zapytanie to ciąg tekstowy, dopiero baza go tłumaczy).
kuba_pilach
Troszkę zmodyfikowałem kod...
Kod z "dzienniczek.php":
  1. <?php
  2. // podłączamy plik connection.php
  3. require "connection.php";
  4. // wywołujemy funkcję connection()
  5. connection();
  6.  
  7. ?>
  8. <form action="nowyprzedmiot.php" method="post">
  9. <div>
  10. <?php
  11. $zapytanie = mysql_query ("SELECT * FROM Przedmiot ORDER BY ID ASC")
  12. or die('Błąd zapytania: '.mysql_error());
  13.  
  14. echo '<select name="wybranyprzedmiot">';
  15.  
  16. echo '<option value="">Wybierz przedmiot</option>';
  17.  
  18. while($option = mysql_fetch_assoc($zapytanie)) {
  19.  
  20. echo '<option value="'.$option['NAZWA'].'">'.$option['NAZWA'].'</option>';
  21.  
  22. }
  23.  
  24. echo '</select>';
  25. ?>
  26. </div>
  27. <div>
  28. <?php
  29. $zapytaniedwa = mysql_query ("SELECT * FROM Oceny ORDER BY OCENA ASC")
  30. or die('Błąd zapytania: '.mysql_error());
  31.  
  32. echo '<select name="wybranaocena">';
  33.  
  34. echo '<option value="">Wybierz ocenę</option>';
  35.  
  36. while($option = mysql_fetch_assoc($zapytaniedwa)) {
  37.  
  38. echo '<option value="'.$option['OCENA'].'">'.$option['OCENA'].'</option>';
  39.  
  40. }
  41.  
  42. echo '</select>';
  43. ?>
  44. </div>
  45. <div>
  46. Data:
  47. <input type="text" name="data" size="10" />
  48.  
  49. </div>
  50.  
  51. <input type="submit" value="Dodaj" />;
  52. </form>;
  53.  


Kod z "nowaocena.php"

  1. <?php
  2. // odbieramy dane z formularza
  3. $wybranyprzedmiot = $_POST['wybranyprzedmiot'];
  4. $wybranaocena = $_POST['wybranaocena'];
  5. $data = $_POST['data'];
  6.  
  7. if ($wybranyprzedmiot and $wybranaocena and $data) {
  8.  
  9. // laczymy sie z baza danych
  10. $connection = @mysql_connect('mysql.cba.pl', 'dzienniczek', 'ku2010ba')
  11. or die('Brak polaczenia z serwerem MySQL');
  12. $db = @mysql_select_db('dzienniczekk_cba_pl', $connection)
  13. or die('Nie moge polaczyc sie z baza danych');
  14.  
  15. $ins = @mysql_query("INSERT INTO d_kuba SET DATA='$data', PRZEDMIOT='$wybranyprzedmiot', OCENA='$wybranaocena'");
  16. if($ins) echo "Przedmiot zostal dodany poprawnie";
  17. else echo "Blad nie udalo sie dodac nowego rekordu";
  18.  
  19. mysql_close($connection);
  20.  
  21. }
  22. ?>


I wyświetla mi następujący błąd:
Kod
Blad nie udalo sie dodac nowego rekordu
markonix
Usuń @ sprzed funkcji, dodaj mysql_error.
kuba_pilach
Dobra, już działa
Dzięki wszystkim winksmiley.jpg
Okazało się, że był to zwykły błąd kolumny co do "0", a tamto pomyliłem nazwę...
Ale i tak daję, że pomogliście i moderatorów proszę o zamknięcie tematu...
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.