Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] zapisanie wartości pola input
Forum PHP.pl > Forum > Przedszkole
dentopolis
próbuję napisać kod wpisujący do bazy zawartość pola input (1 lub 0).
obecnie naciśnięcie przycisku 'zapisz' powoduje dodanie nowego wiersza czyli łączy się z bazą, natomiast tworzy nowy wiersz zamiast zaktualizować istniejący dla pacjent=$id.jak to porawić?



  1. <?php
  2. function connect()
  3. {
  4. $dbhost = "localhost";
  5. $dbuser = "root";
  6. $dbpass = "";
  7. $dbname = "gabinet";
  8.  
  9. // Create connection
  10. $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);
  11.  
  12. return $conn;
  13. }
  14.  
  15.  
  16. if (isset($_POST['zapisz']))
  17. {
  18. echo "<meta http-equiv=\"Refresh\" content=\"0; url=index.php?page=umawianie \">";
  19. }
  20. else
  21. {
  22. echo "<center></center>";
  23. }
  24.  
  25.  
  26. $conn = connect();
  27. $wezlyniepowiekszone = $_POST['wezlyniepowiekszone'];
  28. $wezlypowiekszone = $_POST['wezlypowiekszone'];
  29. $query = "INSERT into badanie (wezlyniepowiekszone,wezlypowiekszone) VALUES('" . $wezlyniepowiekszone . "','" . $wezlypowiekszone . "')";
  30. $success = $conn->query($query);
  31.  
  32. if (!$success) {
  33. die("Couldn't enter data: ".$conn->error);
  34.  
  35. }
  36.  
  37. echo "<center>wizyta zapisana</center>";
  38.  
  39. $conn->close();
  40.  
  41. ?>
dentopolis
okay,poczytałem i ten kod mi działa czyli aktualizuje istniejący wiersz:
  1. UPDATE badanie SET wezlyniepowiekszone=$wezlyniepowiekszone, wezlypowiekszone=$wezlypowiekszone WHERE pacjent=24


ale ten który powinien dodać nowy jeśli wpisu nie ma nie działa:
  1. INSERT INTO badanie VALUES (77,88) ON DUPLICATE KEY UPDATE badanie SET wezlyniepowiekszone=8, wezlypowiekszone=3 WHERE pacjent=23;
nospor
Przejrzyj jeszcze raz skladnie
INSERT.... ON DUPLICATE KEY UPDATE
Tam nigdzie nie ma WHERE, ktore jakims cudem jest u ciebie
dentopolis
czy w takim razie jedynym sposobem jest wykonanie tego za pomocą php czyli:

połączenie i sprawdzenie czy wpis dla danego pacjenta istnieje
jeśli nie - insert
jeśli tak - update
?
nospor
Nic takiego nie napisalem. Napisalem wyraznie co masz zrobic.
dentopolis
no dobrze ale w którymś miejscu muszę zaznaczyć którego pacjenta wiersz chcę edytować.jak nie w tym zapytaniu to gdzieś indziej.jakieś wskazówki jeśli już nie kod?

  1. $result = mysql_query("SELECT * FROM licensing_active WHERE title_1 ='$title_1' ");
  2.  
  3. if( mysql_num_rows($result) > 0) {
  4. mysql_query("UPDATE licensing_active SET time = '$time' WHERE title_1 = '$title_1' ");
  5. }
  6. else
  7. {
  8. mysql_query("INSERT INTO licensing_active (title_1) VALUES ('$title_1') ");
  9. }
trueblue
Pierwsza linijka opisu w dokumentacji: https://dev.mysql.com/doc/refman/5.7/en/ins...-duplicate.html
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.