Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP][MySQL]Popieranie ID z bazy danych do formularza
Forum PHP.pl > Forum > Przedszkole
wickas
Wpadłem na pomysł aby zamiast wpisywać ręcznie ID ,zostało by od razu przydzielone i nadane do przesłania do formularza,a z formularza do bazy danych.
Nie mogę rozwiązać pewnego problemu z pobieraniem ID z tabeli bazy danych. Mianowicie,zamiast zwrócić mi aktualny numer ID pokazuje Resource id:#5.
Czy kto ktokolwiek może mi poradzić w jaki sposób można zwrócić aktualny ID w formularzu HTML za pomocą PHP I MySQLa?




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.  


[MYSQL] pobierz, plaintext
  1. --
  2. -- Struktura tabeli dla tabeli `lek`
  3. --
  4.  
  5.  
  6. --
  7. -- Zrzut danych tabeli `lek`
  8. --
  9.  
  10. 51&q=INSERT&lr=lang_en">INSERT 51&q=INTO&lr=lang_en">INTO `lek` (`ID_lek`, `Nazwa_lek`, `Producent_lek`, `Cena_lek`, `Kupujacy_lek`) 51&q=VALUES&lr=lang_en">VALUES
  11. (1, 'MAGNEZ+B6 OPTIMAL', 'POLHARMA', 20.49, 'x'),
  12. (2, 'Bodymax', 'ALEXUS', 5.46, 'x'),
  13. (3, 'Metafen', 'POLHARMA', 50.55, 'x'),
  14. (4, 'POLIPYRYNA', 'FAMOLOGIA', 34.30, ''),
  15. (5, 'GRYPEX', 'POLHARMA SA', 24.80, 'x'),
  16. (6, 'Pol', 'Aflapharma SA', 20.50, 'x'),
  17. (7, 'Pol', 'pol', 20.50, 'x'),
  18. (8, 'Pol', 'LEK', 20.60, 'x'),
  19. (9, 'Pol', 'Aflapharma SA', 20.60, 'x');
  20.  
[MYSQL] pobierz, plaintext
Sephirus
  1. $id = $wynik++; // przepisanie id z tablicy do zmiennej i dodanie o jeden


a nie czasem:

  1. $id++; // przepisanie id z tablicy do zmiennej i dodanie o jeden


poza tym to nie jest pewnik, bo to ID ktoś równolegle pracując na tym mógł już zająć...
kristaps
Pomysł z ID odpada, chyba, ze po przejściu do formularza od razu zrobisz insert do bazy, a później ewentualnie update powstałego rekordu - co też nie jest świetnym rozwiązaniem w przypadku, gdy ktoś zrezygnuje i wyłączy stronę.
wickas
Ta stronka to bardziej mój własny projekt(sam wyłącznie z niego korzystam), niż coś poważnego więc odpada sytuacja 2 użytkowników jednocześnie.

Edit: Właśnie rozwiązałem swój problem dzięki spostrzeżeniom @Sephirusa. Dziękuje @kristaps również za wartościową radę odnośnie zastosowania tego na przyszłość. Temat można zamknąć.
viking
Coś z logiką tego pomysłu jest nie tak. Po co Ci id w formularzu? Jeśli chcesz dodać lek a później edytować formularz możesz zrobić coś na kształt
  1. $dane = array(id=>x, nazwa=>y) //gdzie tablica to dane POST

A później
  1. if (null == $dane['id']) {
  2. unset( $dane['id']);
  3. //insert
  4. } else {
  5. //update
  6. }


id oczywiście PK, autoincrement
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.