Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dodawanie za pomocą formularza rekordów
Forum PHP.pl > Forum > Przedszkole
wickas
Skrypt który napisałem działa prawię idealnie,no własnie prawie. Wszystko dodaje jednakże zamiast tekstu bądz liczb wpisanych w formularzu, dodaje zera. Prawdopodobnie jest to problem z zapytaniem,choć nie wiem czy napewno. Nie do końca jeszcze ogarniam mysqla i php, proszę o wyrozumiałość.
  1. <?php
  2. include 'db.php'; // połączenie się z bazą danych
  3. $tabela= 'lek'; //wybór tabeli
  4. // łączymy się z bazą danych
  5. $connection = @mysql_connect('localhost', 'root', 'xxx')
  6. or die('Brak połączenia z serwerem MySQL');
  7. $db = @mysql_select_db('szpital', $connection)
  8. or die('Nie mogę połączyć się z bazą danych');
  9.  
  10. echo '
  11. <form action="dodaj.php?id=dodaj" method="post" name="form1">
  12. <table class="okno1"><tr><td>
  13. ID leku:</td><td><input type="text" name="id" /><br/></td></tr><tr><td>
  14. Nazwa leku:</td><td><input type="text" name="nazwa" /><br/></td></tr><tr><td>
  15. Producent leku:</td><td><input type="text" name="producent" /><br/></td></tr><tr><td>
  16. Cena leku:</td><td><input type="text" name="cena" /><br/></td></tr><tr><td>
  17. Kupujący:</td><td><input type="text" name="kup" /><br/></td></tr><tr><td>
  18. </td></tr></table>
  19. <input name="max_file_size" type="hidden" value="2048576" />
  20. <input class="inpt" type="submit" value="Dodaj" /><br />
  21. </form>';
  22.  
  23.  
  24. $id = (isset($_POST['id']));
  25. $nazwa = (isset($_POST['nazwa']));
  26. $producent = (isset($_POST['producent']));
  27. $cena = (isset($_POST['cena']));
  28. $kup = (isset($_POST['kup']));
  29. $query = "INSERT INTO $tabela VALUES (ID_lek='$id' , Nazwa_lek='$nazwa' , Producent_lek='$producent' , Cena_lek='$cena' , Kupujacy_lek='kup')";
  30. $zapytanie = mysql_query($query);
  31. if(!$zapytanie)
  32. {
  33. echo "Wykonanie zapytania zawiodło. " . mysql_error();
  34. }
  35. else
  36. {
  37. echo 'Zapisano pomyslnie';
  38. }
  39. mysql_close($connection);
  40.  
  41. ?>


Tutaj baza na której dodaje:
  1. -- Struktura tabeli dla tabeli `lek`
  2. --
  3.  
  4. CREATE TABLE IF NOT EXISTS `lek` (
  5. `ID_lek` int(3) NOT NULL AUTO_INCREMENT,
  6. `Nazwa_lek` varchar(25) NOT NULL,
  7. `Producent_lek` varchar(25) NOT NULL,
  8. `Cena_lek` decimal(5,2) NOT NULL,
  9. `Kupujacy_lek` varchar(25) NOT NULL,
  10. PRIMARY KEY (`ID_lek`)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
  12.  
  13. --
  14. -- Zrzut danych tabeli `lek`
  15. --
  16.  
  17. INSERT INTO `lek` (`ID_lek`, `Nazwa_lek`, `Producent_lek`, `Cena_lek` `Kupujacy_lek`) VALUES
  18. (1, 'MAGNEZ+B6 OPTIMAL', 'POLHARMA', 20.49, 'x'),
  19. (2, '', '', 0.00, ''),
  20. (3, '', '', 0.00, ''),
  21. (4, '', '', 0.00, ''),
  22. (5, '', '', 0.00, ''),
  23. (9, '0', '0', 0.00, '0');
_Borys_
isset() jest typu boolean i zwraca tylko TRUE albo FALSE dlatego w zmiennych masz jedynki, można to inaczej zapisać:

  1. if (isset($_POST['id']) && isset($_POST['nazwa']) && isset($_POST['producent']) && isset($_POST['cena']) && isset($_POST['kup'])) {
  2. $id = $_POST['id'];
  3. $nazwa = $_POST['nazwa'];
  4. $producent = $_POST['producent'];
  5. $cena = $_POST['cena'];
  6. $kup = $_POST['kup'];
  7.  
  8. $query = "INSERT INTO $tabela SET ID_lek='$id' , Nazwa_lek='$nazwa' , Producent_lek='$producent' , Cena_lek='$cena' , Kupujacy_lek='$kup'";
  9.  
  10. $zapytanie = mysql_query($query) or die(mysql_error());
  11. if (!$zapytanie) {
  12. echo "Wykonanie zapytania zawiodło. " . mysql_error();
  13. } else {
  14. echo 'Zapisano pomyslnie';
  15. }
  16. } else {
  17. echo 'Popraw dane !';
  18. }

Poza tym INSERT INTO było źle skonstruowane.
wickas
Dzięki, pomogło. Teraz jednak zastanawia mnie jak pobierać poprzednie id, następnie dodanie go o jeden w górę, bez potrzeby wpisywania go formularzu.
sajegib
pobierasz z tabeli rekord z poprzednim ID, zapisujesz id do zmiennej, robisz ++ i zapisujesz
wickas
Poszukałem i znalazłem, lecz zamiast zwrócić mi aktualny numer ID pokazuje Resource id:#5. Jakie inne rozwiązanie umozliwi mi wyświetlenie w formularzu aktualnego ID?



FORMULARZ
  1. echo'<form action="dodaj.php?id=dodaj" method="post" name="form1">
  2. <table class="okno1"><tr><td>';
  3.  
  4. $id = "SELECT ID_lek FROM lek ORDER BY ID_lek DESC LIMIT 1";// przygotowanie zapytania
  5. $wynik = mysql_query($id); // wykonanie zapytania
  6. $id = mysql_fetch_assoc($wynik); // odczytanie wyniku
  7. $id = $wynik++; // przepisanie id z tablicy do zmiennej i dodanie o jeden
  8.  
  9. echo'ID leku:</td><td>'.$id1; echo'<br/></td></tr><tr><td>';
  10. echo'Nazwa leku:</td><td><input type="text" name="nazwa" /><br/></td></tr><tr><td>';
  11. echo'Producent leku:</td><td><input type="text" name="producent" /><br/></td></tr><tr><td>';
  12. echo'Cena leku:</td><td><input type="text" name="cena" /><br/></td></tr><tr><td>';
  13. echo'Kupujący:</td><td><input type="text" name="kup" /><br/></td></tr><tr><td>';
  14. echo'</td></tr></table>';
  15. echo'<input name="max_file_size" type="hidden" value="2048576" />';
  16. echo'<input class="inpt" type="submit" value="Dodaj" /><br />
  17. </form>';


Skrypt dodawania danych
  1. <?php
  2. include 'db.php'; // połączenie się z bazą danych
  3. $tabela= 'lek'; //wybór tabeli
  4. // łączymy się z bazą danych
  5. $connection = @mysql_connect('localhost', 'root', 'x')
  6. or die('Brak połączenia z serwerem MySQL');
  7. $db = @mysql_select_db('szpital', $connection)
  8. or die('Nie mogę połączyć się z bazą danych');
  9.  
  10. if (isset($_GET['id']) && isset($_POST['nazwa']) && isset($_POST['producent']) && isset($_POST['cena']) && isset($_POST['kup'])) {
  11. $id = (int)$_GET['id']; //dzięki dodaniu int autoinkrementuje
  12. $nazwa = $_POST['nazwa'];
  13. $producent = $_POST['producent'];
  14. $cena = $_POST['cena'];
  15. $kup = $_POST['kup'];
  16.  
  17. $query = "INSERT INTO $tabela SET ID_lek='$id' , Nazwa_lek='$nazwa' , Producent_lek='$producent' , Cena_lek='$cena' , Kupujacy_lek='$kup'";
  18.  
  19. $zapytanie = mysql_query($query) or die(mysql_error());
  20. if (!$zapytanie) {
  21. echo "Wykonanie zapytania zawiodło. " . mysql_error();
  22. } else {
  23. echo 'Zapisano pomyślnie.<a href=baza.php>Powtóc do bazy</a>';
  24. }
  25. } else {
  26. echo 'Popraw dane !';
  27. }
  28. ?>
  29.  
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.