Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] zapisanie kilku wersów do bazy jednocześńie
Forum PHP.pl > Forum > Przedszkole
dentopolis
wartości z formularza pobieram z adresu przez GET:
http://localhost/zapisz.php?id=16&18=b...z%C5%82e%20endo

chciałbym żeby zaktualizował każdy stan zęba jeśli zmieni się parametr np.18=x na 18=y ale obecny kod powoduje że wszystkie wartości są takie same jak pierwszego parametru. nie zamykam gdzieś pętli?

  1. if ($polacz and $row['pacjent'] == $id) {
  2. if ($row['zab'] = 18) {
  3. $update18 = "UPDATE diagram SET stan ='$rightuppereight', info = '$rightuppereights'";
  4. $q = $conn->query($update18);
  5. }
  6. else {
  7. echo "nie";
  8. }
  9. #17
  10. if ($row['zab'] = 17) {
  11. $update17 = "UPDATE diagram SET stan ='$rightupperseven', info = '$rightuppersevens'";
  12. $q = $conn->query($update17);
  13. }
  14. else {
  15. echo "nie";
  16. }





próbowałem czy to coś zmieni ale bez skutku:
if ($row['zab'] == 18) {
lub
if ($row['zab'] == '18') {
trueblue
W kodzie masz przypisanie, pod kodem piszesz o próbach z porównaniem.
dentopolis
myślałem że w tym fragmencie kodu jest błąd.
viking
= przypisanie
== / === porównanie
dentopolis
jakąkolwiek ten fragment kodu ma postać, działa tak samo i aktualizowana jest wartość wszystkich zębów np, 18,17 jako x mimo że 18=x a 17=y

  1. if ($polacz and $row['pacjent'] == $id) {
  2. if ($row['zab'] == '18') {
  3. $update18 = "UPDATE diagram SET stan ='$rightuppereight', info = '$rightuppereights'";
  4. $q = $conn->query($update18);
  5. }
  6. else {
  7. echo "nie";
  8. }
  9. #17
  10. if ($row['zab'] == '17') {
  11. $update17 = "UPDATE diagram SET stan ='$rightupperseven', info = '$rightuppersevens'";
  12. $q = $conn->query($update17);
  13. }
  14. else {
  15. echo "nie";
  16. }
trueblue
Po pierwsze nigdzie nie masz warunku na wartość z $_GET, po drugie nie ma warunku w UPDATE.
dentopolis
cały kod

  1. <?php
  2. $id=$_GET['id'];
  3. #zęby
  4. $rightuppereight=$_GET['18'];
  5. $rightupperseven=$_GET['17'];
  6. $rightuppersix=$_GET['16'];
  7. $rightupperfive=$_GET['15'];
  8. $rightupperfour=$_GET['14'];
  9. $rightupperthree=$_GET['13'];
  10. $rightuppertwo=$_GET['12'];
  11. $rightupperone=$_GET['11'];
  12. $leftupperone=$_GET['21'];
  13. $leftuppertwo=$_GET['22'];
  14. $leftupperthree=$_GET['23'];
  15. $leftupperfour=$_GET['24'];
  16. $leftupperfive=$_GET['25'];
  17. $leftuppersix=$_GET['26'];
  18. $leftupperseven=$_GET['27'];
  19. $leftuppereight=$_GET['28'];
  20.  
  21. $rightlowereight=$_GET['48'];
  22. $rightlowerseven=$_GET['47'];
  23. $rightlowersix=$_GET['46'];
  24. $rightlowerfive=$_GET['45'];
  25. $rightlowerfour=$_GET['44'];
  26. $rightlowerthree=$_GET['43'];
  27. $rightlowertwo=$_GET['42'];
  28. $rightlowerone=$_GET['41'];
  29. $leftlowerone=$_GET['31'];
  30. $leftlowertwo=$_GET['32'];
  31. $leftlowerthree=$_GET['33'];
  32. $leftlowerfour=$_GET['34'];
  33. $leftlowerfive=$_GET['35'];
  34. $leftlowersix=$_GET['36'];
  35. $leftlowerseven=$_GET['37'];
  36. $leftlowereight=$_GET['38'];
  37.  
  38. #stany
  39. $rightuppereights=$_GET['18s'];
  40. $rightuppersevens=$_GET['17s'];
  41. $rightuppersixs=$_GET['16s'];
  42. $rightupperfives=$_GET['15s'];
  43. $rightupperfours=$_GET['14s'];
  44. $rightupperthrees=$_GET['13s'];
  45. $rightuppertwos=$_GET['12s'];
  46. $rightupperones=$_GET['11s'];
  47. $leftupperones=$_GET['21s'];
  48. $leftuppertwos=$_GET['22s'];
  49. $leftupperthrees=$_GET['23s'];
  50. $leftupperfours=$_GET['24s'];
  51. $leftupperfives=$_GET['25s'];
  52. $leftuppersixs=$_GET['26s'];
  53. $leftuppersevens=$_GET['27s'];
  54. $leftuppereights=$_GET['28s'];
  55.  
  56. $rightlowereights=$_GET['48s'];
  57. $rightlowersevens=$_GET['47s'];
  58. $rightlowersixs=$_GET['46s'];
  59. $rightlowerfives=$_GET['45s'];
  60. $rightlowerfours=$_GET['44s'];
  61. $rightlowerthrees=$_GET['43s'];
  62. $rightlowertwos=$_GET['42s'];
  63. $rightlowerones=$_GET['41s'];
  64. $leftlowerones=$_GET['31s'];
  65. $leftlowertwos=$_GET['32s'];
  66. $leftlowerthrees=$_GET['33s'];
  67. $leftlowerfours=$_GET['34s'];
  68. $leftlowerfives=$_GET['35s'];
  69. $leftlowersixs=$_GET['36s'];
  70. $leftlowersevens=$_GET['37s'];
  71. $leftlowereights=$_GET['38s'];
  72.  
  73. if ( ! $id) {
  74. die('brakuje id pacjenta');
  75. }
  76. ?>
  77.  
  78. <?php
  79. function connect()
  80. {
  81. $dbhost = "localhost";
  82. $dbuser = "root";
  83. $dbpass = "";
  84. $dbname = "gabinet";
  85.  
  86. // Create connection
  87. $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname) or die($conn->connect_error);
  88.  
  89. return $conn;
  90. }
  91.  
  92. echo $upperrighteight;
  93.  
  94. $conn = connect();
  95. $query = "SELECT * FROM diagram WHERE pacjent = $id";
  96. $polacz = $conn->query($query);
  97. $row = $polacz->fetch_array();
  98.  
  99. #18
  100. if ($polacz and $row['pacjent'] == $id) {
  101. if ($row['zab'] == '18') {
  102. $update18 = "UPDATE diagram SET stan ='$rightuppereight', info = '$rightuppereights' WHERE zab='18'";
  103. $q = $conn->query($update18);
  104. }
  105. else {
  106. echo "nie";
  107. }
  108. #17
  109. if ($row['zab'] == '17') {
  110. $update17 = "UPDATE diagram SET stan ='$rightupperseven', info = '$rightuppersevens' WHERE zab='17'";
  111. $q = $conn->query($update17);
  112. }
  113. else {
  114. echo "nie";
  115. }
  116.  
  117. $update16 = "UPDATE diagram SET stan ='$rightuppersix', info = '$rightuppersixs' WHERE zab='16'";
  118. $q = $conn->query($update16);
  119. echo "diagram zmieniony";
  120.  
  121.  
  122. }
  123. else {
  124. $sqlsave18 = "INSERT INTO diagram VALUES ('', '$id', '18', '$rightuppereight', '$rightuppereights')";
  125. $sqlsave17 = "INSERT INTO diagram VALUES ('', '$id', '17', '$rightupperseven', '$rightuppersevens')";
  126. $q = $conn->query($sqlsave18);
  127. $q = $conn->query($sqlsave17);
  128. echo "diagram zapisany";
  129.  
  130. }
  131. $polacz->close();
  132. ?>
Lord
dlaczego tak boisz sie tablic?

nie zapisuje się zmiennych w taki sposób

$zmienna1
$zmienna2
$zmienna3

tylko w w tablicy

$zmienna[1]
$zmienna[2]
$zmienna[3]

dane w $_GET też mogą być w tablicach 2 i wiecej wymiarowych przez co można potem użyć pętli, ewentualnie możesz w jakis sposób wyszukać np wszystkie id gdzie masz ustawić określone wartości jednym zapytaniem. To co robisz jest bardzo niepoprawne i większość twoich problemów wynika z nie czytania tego co piszą ci ludzie w odpowiedziach.
dentopolis
rozumiem.więc przerobię zmienne numerów zębów na takie:
$zab[18] = "18";
$zab[17] = "17";

ale jak teraz zmienić ten kod aktualizujący dany stan zęba z GET?

#18
if ($polacz and $row['pacjent'] == $id) {
if ($zab[18] == '18') {
$update18 = "UPDATE diagram SET stan ='$rightuppereight', info = '$rightuppereights' WHERE zab='18'";
$q = $conn->query($update18);
}
else {
echo "nie";
}


sugerując się odpowiedzią ze stackoverflow:
The usual way to do this in PHP is to put id[] in your URL instead of just id:
http://link/foo.php?id[]=1&id[]=2&id[]=3
Then $_GET['id'] will be an array of those values. It's not especially pretty, but it works out of the box.

czyli u mnie powinienem mieć np.?id[]=x&id[]=c&id[]=w
Lord
  1. <form method="post">
  2. <?php
  3. $array = [12,1,7,8,13];
  4. foreach($array as $el):
  5. ?>
  6. <?=$el ?> |
  7. stan<input type="text" name="t[<?=$el?>][stan]"> |
  8. info<input type="text" name="t[<?=$el?>][info]">
  9. <br>
  10. <?php endforeach; ?>
  11. <input type="submit">
  12. </form>
  13.  
  14. <?php
  15. $stan = ['w', 'c', 'x'];
  16. if(isset($_POST['t']) && is_array($_POST['t'])){
  17. $t = $_POST['t'];
  18. foreach($t as $index => $el){
  19. if(in_array($el['stan'], $stan)){ // sprawdz info bo nie wiem co tam ma byc
  20. $update = 'UPDATE diagram SET stan =\''.$el['stan'].'\', info = \''.$el['info'].'\' WHERE zab='.$index;
  21. echo $update.'<br>';
  22. }
  23. }
  24. }
  25. ?>


to tam nie jest idealne napewno ktoś mi tutaj błędy wytknie, ale mam nadzieje ze trochę pomoże, napwno należy sprawdzić dane przed dodaniem do bazy.
Puszy
Taka dygresja, do autora: ostatnio otwierasz bardzo wiele nowych tematów związanych z totalnymi podstawami, powiedziałbym nawet że nie PHP a samego programowania. Z tematyki wnioskuję że przygotowujesz projekt dla klienta. Z własnego doświadczenie chciałbym rzucić radę - mierz siły na zamiary. Wszystko spoko dopóki klient się nie zorientuje że dużo rzeczy się może krzaczyć. No chyba że się mylę i ten projekt służy właśnie do nauki PHP, wtedy nie było tematu.
dentopolis
projekt jak to sugeruje moj nick jest dla mnie na cele prywatne.sugeruje rowniez ze nie jestem informatykiem.zdaje sobie sprawę ze moj kod jest prostacki,niepoprawny,nieefektywny i mozna zo znacznie poprawic.moglbym tez to zlecic.tylko ze lubie to,mozolnie ale dochodze do celu i skrypt do obslugi gabinetu mi dziala.calkiem dziala rejestracja, terminarz, diagram badania,wywiad i karta pacjenta. ale co chwile cos wprowadzam nowego.
woxala123
Polecam ci na początek tę książkę.
http://it-ebooks.directory/book-0987153080.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.