Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kolejny problem z formularzem
Forum PHP.pl > Forum > Gotowe rozwiązania > Skrypty obsługi baz danych
arek1983
Ciągle walczę z wczorajszym dodawania danych do tabeli z poziomu formularza. Postanowiłem że teraz zamiast z palca wpisywać nazwę kolekcji monety, niech będzie to pole wyboru które pobiera dane z nowoutworzonej tabeli. Można powiedzieć ze wszystko jakoś działa, w formularzu są do wyboru poszczególne rekordy z tabeli 'Kolekcja', ale formularz zapisuje w tabeli 'Monety' tylko pierwsze słowo nazwy kolekcji, pomimo tego ze w formularzu wyświetla się jego cała nazwa.

skrypyt formularza wygląda tak:

  1. <form action="gotowe.php" method="post">
  2. <br><b><font size=2>Rok Emisji:</font></b><br />
  3. <br><input type="text" name="Data_Emisji" size="4" maxlength="4" /><br />
  4. <br><b><font size=2>Nazwa Monety:</font></b><br />
  5. <br><input type="text" name="Nazwa_Monety" size="40" /><br />
  6. <br><b><font size=2>Nazwa Kolekcji:</font></b><br />
  7. <br><?php
  8.  
  9. $connection = @mysql_connect('localhost', 'root', 'passwd')
  10. or die('Błąd - Nie mogę połączyć się z serwerem MySQL. Spróbuj później.');
  11. $db = @mysql_select_db('test', $connection)
  12. or die('Błąd - Nie mogę połączyć się z bazą danych. Spróbuj później.');
  13.  
  14. $query="SELECT Nazwa_Kolekcji FROM Kolekcja ORDER BY Nazwa_Kolekcji ASC";
  15. $result = mysql_query ($query);
  16. echo "<select name=Nazwa_Kolekcji value=''>Kolekcja</option>";
  17. while($nt=mysql_fetch_array($result))
  18. {
  19. echo "<option value=$nt[Nazwa_Kolekcji]>$nt[Nazwa_Kolekcji]</option>";
  20. }
  21. echo "</select>";
  22. ?></br>
  23. <br><b><font size=2>Nakład:</font></b><br />
  24. <br><input type="text" name="Naklad" size="7" maxlength="7" /><br />
  25. <br><b><font size=2>Sztuk:</font></b><br />
  26. <br><input type="text" name="Sztuk" size="3" maxlength="3" /><br />
  27. <br><input type="submit" value="Dodaj Monetę" /><br />
  28. </form>


skrypyt dodawania wygląda tak:


  1. <?php
  2.  
  3. // odbieramy dane z formularza
  4. $Data_Emisji = trim($_POST['Data_Emisji']);
  5. $Nazwa_Monety = $_POST['Nazwa_Monety'];
  6. $Nazwa_Kolekcji = $_POST['Nazwa_Kolekcji'];
  7. $Naklad = trim($_POST['Naklad']);
  8. $Sztuk = trim($_POST['Sztuk']);
  9.  
  10. if (!$Data_Emisji || !$Nazwa_Monety || !$Naklad)
  11. {
  12. echo 'Nie podano wszystkich wymaganych danych, niezbędnych do zapisania monety w bazie.<br />'
  13. .'Wróć do poprzedniej strony i spróbuj jeszcze raz.';
  14. }
  15.  
  16.  
  17. {
  18. $Data_Emisji = doubleval($Data_Emisji);
  19. $Nazwa_Monety = addslashes($Nazwa_Monety);
  20. $Nazwa_Kolekcji = addslashes($Nazwa_Kolekcji);
  21. $Naklad = doubleval($Naklad);
  22. $Sztuk = doubleval($Sztuk);
  23. }
  24.  
  25. //==========================================
  26.  
  27. if(is_numeric($Data_Emisji))
  28. {
  29. //poprawny
  30. }
  31. else
  32. {
  33. echo 'Błędnie wprowadzono Rok Emisji.<br />'
  34. .'Wróć do poprzedniej strony i spróbuj jeszcze raz.';
  35. }
  36.  
  37.  
  38. if(is_numeric($Naklad))
  39. {
  40. //poprawny
  41. }
  42. else
  43. {
  44. echo 'Błędnie wprowadzono Nakład.<br />'
  45. .'Wróć do poprzedniej strony i spróbuj jeszcze raz.';
  46. }
  47.  
  48. if(is_numeric($Sztuk))
  49. {
  50. //poprawny
  51. }
  52. else
  53. {
  54. echo 'Błędnie wprowadzono liczbę Sztuk.<br />'
  55. .'Wróć do poprzedniej strony i spróbuj jeszcze raz.';
  56. }
  57. //=======================================================
  58.  
  59. $connection = @mysql_connect('localhost', 'root', 'passwd')
  60. or die('Błąd - Nie mogę połączyć się z serwerem MySQL. Spróbuj później.');
  61. $db = @mysql_select_db('test', $connection)
  62. or die('Błąd - Nie mogę połączyć się z bazą danych. Spróbuj później.');
  63.  
  64. $zapytanie = @mysql_query("INSERT INTO Monety SET Data_Emisji='$Data_Emisji', Nazwa_Monety='$Nazwa_Monety', Kolekcja='$Nazwa_Kolekcji', Naklad='$Naklad', Sztuk='$Sztuk'");
  65. if ($zapytanie)
  66.  
  67. echo 'Moneta została dodana poprawnie do bazy.'
  68. ?>


Mam nadzieję, że wyraziłem się w miarę jasno. Bardzo proszę o pomoc, co muszę zmienić zeby było ok.
lukesh
Zacznij od tego, żeby poprawnie nadać atrybut name dla pola select.

echo "<select name=Nazwa_Kolekcji value=''>Kolekcja</option>";

Nie brakuje Ci tu czasem dwóch nawiasów?

select name="Nazwa_Kolekcji"
Szymciosek
Na forum działają określone znaczniki np CODE czy PHP, masz je nawet w przyciskach przy pisaniu postu, czemu niektórzy z tego nie korzystają ? Ładniej wtedy wszystko jest podzielone i wyświetlone co wiąże się z szybszą i chętniejszą pomocą ze strony użytkowników forum
arek1983
Problem rozwiązany przez użytkownika z innego forum. Poprawnie powinno wyglądać to tak:

  1. echo "<select name='Nazwa_Kolekcji'><option value=''>Kolekcja</option>";
  2. while($nt=mysql_fetch_array($result))
  3. {
  4. echo "<option value='$nt[Nazwa_Kolekcji]'>$nt[Nazwa_Kolekcji]</option>";
  5. }
  6. echo "</select>";


Być może komuś się taki skrypcik przyda.

Dzięki za odpowiedź na mój post.
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-2024 Invision Power Services, Inc.