Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][MySQL][PHP]Bootrstrap Modal w okienku i pętla
timeo
post 17.02.2017, 11:08:13
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

Ostrzeżenie: (0%)
-----


Witajcie... Niestety muszę się do Was uśmiechnąć, gdyż nie mogę sobie poradzić. W pętli mam okna modalne bootstrap (kilka) które są odpowiedzialne za inne funkcje (przesyłane do bazy danych). Problem polega na tym że w ramach jednego zapytania w oknie modalnym zapisuje w bazie informacje dotyczące wszystkich wylistowanych ticketów. Co zrobić, żeby przypisywało tylko do jednego wybranego?

  1. <?php
  2. case 'wnaprawie':
  3.  
  4. $stmt = $db->query('SELECT * FROM mobidoktor WHERE status = "W Naprawie" ');
  5. foreach ($stmt as $row)
  6. {
  7. ?>
  8. <br>
  9. <div class = "row">
  10. <div class="col-lg-12">
  11. <?php
  12. $dataprzeterminowania=$row['Przyjecie'];
  13. $status=$row['Status'];
  14. $datadzisiaj= date('Y-m-d H:i:s', strtotime('- 4 day'));
  15. $data = date("Y-m-d H:i:s");
  16. $dataroznica=((strtotime($datadzisiaj)-strtotime($dataprzeterminowania))/(60*60*24));
  17. if($dataprzeterminowania<=$datadzisiaj AND $status<>"Zamknięte")
  18. {
  19. echo '<div class="panel panel-danger">';
  20. }
  21. else
  22. {
  23. echo '<div class="panel panel-success">';
  24. }
  25. ?>
  26. <div class="panel-heading">
  27. <div class="col-md-2">
  28. <a href="?content=ticket&ticket=<?php echo $row['ticket']; ?>"> <?php echo $row['ticket']; ?></a></div>
  29. <div class="col-md-4"><b>Klient: </b><?php echo $row['klient']; ?></div>
  30. <div class="col-md-4"><b>Telefon: </b><?php echo $row['model3']. " ".$row['brand2']. " ". $row['Kolor'];?></div>
  31. <div class="col-md-2"><?php echo "Po terminie " . number_format(($dataroznica), 0)." dni"; ?></div>
  32.  
  33. </div>
  34.  
  35. <div class="panel-body">
  36. <p>
  37. <div class="col-md-2"><b>Przyjęto: </b><br><?php echo $row['Przyjecie']; ?></div>
  38. <div class="col-md-2"><b>Imei: </b><br><?php echo $row['imei']; ?></div>
  39. <div class="col-md-2"><b>Serwisant: </b><br><?php echo $row['Ktorobil']; ?></div>
  40. <div class="col-md-2"><b>Opakowanie: </b><?php echo $row['Opakowanie']; ?><br><b>Ładowarka: </b><?php echo $row['Ladowarka'];?></div>
  41.  
  42. <div class="col-md-2"><b> </b><br></div>
  43. <div class="col-md-2"><b>Rodzaj: </b><br><?php echo $row['rodzaj']; ?></div>
  44. <hr style="width: 95%; ">
  45.  
  46.  
  47. }
  48. $ticket = $row['ticket'];
  49. ?>
  50. </center></div>
  51. <center>
  52. <div class="col-md-12"><br></div>
  53.  
  54.  
  55. <button data-toggle="modal" data-target="#modalPort<?php echo $ticket;?>" class="btn btn-success">Przyjmij Naprawę</button>
  56. <button data-toggle="modal" data-target="#modalPort2<?php echo $ticket;?>" class="btn btn-success">Wyślij Zlecenie</button>
  57. <button data-toggle="modal" data-target="#modalPort3<?php echo $ticket;?>" class="btn btn-success">Zmień Status</button>
  58.  
  59. </center>
  60. <?php } ?>
  61. <!--Przyjmij Naprawę -->
  62.  
  63. <div class="modal fade" id="modalPort<?php echo $ticket;?>" tabindex="-1" role="dialog" aria-labelledby="portfolioModallabel" aria-hidden="true">
  64. <div class="modal-dialog">
  65. <div class="modal-content">
  66. <div class="modal-header">
  67. <h4 class="modal-title" id="portfolioModallabel"><?php echo $ticket; ?></h4>
  68. </div>
  69. <div class="modal-body text-center">
  70.  
  71. <p class="line-height-small">
  72.  
  73.  
  74. <div class="col-md-12">
  75.  
  76.  
  77. <?php
  78. $data = date("Y-m-d H:i:s");
  79. $przyjecie = $db -> prepare("UPDATE mobidoktor SET Status= :status, Ktorobil= :user WHERE `ticket` = :ticket");
  80. $przyjecie -> bindValue(':ticket', $ticket, PDO::PARAM_STR);
  81. $przyjecie -> bindValue(':status', "W Naprawie", PDO::PARAM_STR);
  82. $przyjecie ->bindValue(':user', $range3, PDO::PARAM_STR);
  83.  
  84. $zmianastatusu = $db->prepare("INSERT INTO zmianastatusow SET ticket = :ticket, data = :data, status = :status, user= :user" );
  85. $zmianastatusu ->bindValue(':ticket', $ticket, PDO::PARAM_INT);
  86. $zmianastatusu ->bindValue(':status', "W Naprawie", PDO::PARAM_STR);
  87. $zmianastatusu ->bindValue(':user', $range3, PDO::PARAM_STR);
  88. $zmianastatusu ->bindValue(':data', $data, PDO::PARAM_INT);
  89. $zmianastatusu ->execute();
  90. $przyjecie ->execute(); ?>
  91. Drogi <br><b> <?php echo $range3; ?><br></b>Poprawnie przypisałeś zlecenie numer <br><b> <?php echo $ticket; ?><br></b><br> Dane zaktualizowane<br> Możesz zamknąć okno<br><br>
  92.  
  93.  
  94. </div>
  95. </p>
  96. </div>
  97. <div class="modal-footer">
  98. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103.  
  104.  
  105.  
  106.  
  107. <!--Wysłanie -->
  108.  
  109.  
  110.  
  111.  
  112. <div class="modal fade" id="modalPort2<?php echo $ticket;?>" tabindex="-1" role="dialog" aria-labelledby="portfolioModallabel" aria-hidden="true">
  113. <div class="modal-dialog modal-lg">
  114. <div class="modal-content">
  115. <div class="modal-header">
  116. <h4 class="modal-title" id="portfolioModallabel"><?php echo $row['ticket']; ?></h4>
  117. </div>
  118. <div class="modal-body text-center">
  119. <img class="img-responsive center-block" src="<?php echo $thumbpath; ?>" sizes="100vw" srcset="<?php echo $smallpath; ?> 500w, <?php echo $mediumpath; ?> 1000w, <?php echo $largepath; ?> 1500w" alt="Portfolio Site">
  120. <p class="line-height-small">
  121.  
  122.  
  123.  
  124.  
  125. </p>
  126. </div>
  127. <div class="modal-footer">
  128. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  129. </div>
  130. </div>
  131. </div>
  132. </div>
  133.  
  134. <!--Zmień Status -->
  135.  
  136.  
  137.  
  138. <div class="modal fade" id="modalPort3<?php echo $ticket;?>" tabindex="-1" role="dialog" aria-labelledby="portfolioModallabel" aria-hidden="true">
  139. <div class="modal-dialog">
  140. <div class="modal-content">
  141. <div class="modal-header">
  142. <h4 class="modal-title" id="portfolioModallabel"><?php echo $row['ticket']; ?></h4>
  143. </div>
  144. <div class="modal-body text-center">
  145.  
  146. <p class="line-height-small">
  147.  
  148. <div class="col-md-12">
  149.  
  150. <form method="POST" action="">
  151. <?php
  152.  
  153. $stmt = $db->prepare('SELECT * FROM mobidoktor WHERE ticket = :ticket');
  154. $stmt->bindValue(':ticket', $row['ticket'], PDO::PARAM_INT);
  155. $stmt->execute();
  156. $row4 = $stmt->fetch();?>
  157.  
  158. <div class="col-md-2"><?php echo '#'.'<B>'.$row4['ticket'].'</B>'; ?></div>
  159. <div class="col-md-2"><b>Telefon: </b><?php echo $row4['model3']. " ".$row4['brand2']. " ". $row4['Kolor'];?></div>
  160. <div class="col-md-2"><b>Klient: </b><?php echo $row4['klient']; ?></div>
  161. </div>
  162. <div class="col-md-12">
  163. Zmień status naprawy i powiadom odpowiednie osoby:
  164. <select name="status" id="status" required="required">
  165. <option value="">W trakcie naprawy</option>
  166. <option value="W Naprawie">W trakcie naprawy</option>
  167. <option value="Naprawa zakończona">Naprawa zakończona</option>
  168. <option value="Oczekuje na części">Oczekuje na część</option>
  169. <option value="W Naprawie">Część Dotarła .. W trakcie naprawy</option>
  170. <option value="Uszkodzenie w transporcie">Uszkodzenie w transporcie - Oczekuje na dezycje</option>
  171. </select><br>
  172.  
  173. <br>Uwagi do zamówienia:<br><input type="textarea" name="uwagidoserwisu" id="uwagidoserwisu" ><br>
  174. <input value="<?php echo $ticket; ?>" type="hidden" name="ticketzmiana" id="ticketzmiana" >
  175.  
  176. <br>
  177. <input type="submit" id="add" name="add" value="Zmień serwis">
  178. </form>
  179. </center>
  180.  
  181.  
  182.  
  183. <?php
  184. if(isset($_POST['status']))
  185. {
  186. $data = date("Y-m-d H:i:s");
  187. $przyjecie = $db -> prepare("UPDATE mobidoktor SET Status= :status WHERE `ticket` = :ticket");
  188. $przyjecie -> bindValue(':ticket', $_POST['ticketzmiana'], PDO::PARAM_STR);
  189. $przyjecie -> bindValue(':status', $_POST['status'], PDO::PARAM_STR);
  190.  
  191. $zmianastatusu = $db->prepare("INSERT INTO zmianastatusow SET user = :user, ticket = :ticket, data = :data, status = :status, uwagidostatusu = :uwagidoserwisu " );
  192. $zmianastatusu ->bindValue(':ticket', $_POST['ticketzmiana'], PDO::PARAM_INT);
  193. $zmianastatusu ->bindValue(':status', $_POST['status'], PDO::PARAM_STR);
  194. $zmianastatusu ->bindValue(':user', $range3, PDO::PARAM_STR);
  195. $zmianastatusu ->bindValue(':uwagidoserwisu', $_POST['uwagidoserwisu'], PDO::PARAM_STR);
  196. $zmianastatusu ->bindValue(':data', $data, PDO::PARAM_INT);
  197. $zmianastatusu ->execute();
  198.  
  199. $przyjecie ->execute();
  200. echo '<h2>'.'Dane zaktualizowane'.'</h2>';
  201. var_dump($_POST);
  202. }?>
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211. </div>
  212. </p>
  213. </div>
  214. <div class="modal-footer">
  215. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  216. </div>
  217. </div>
  218. </div>
  219. </div>
  220.  
  221.  
  222.  
  223.  
  224. </p>
  225. </div>
  226. </div>
  227. </div>
  228. </div>
  229. <?php
  230. }
  231.  
  232.  
  233.  
  234. break;
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
woxala123
post 17.02.2017, 11:25:43
Post #2





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


  1.  
  2. SELECT * FROM mobidoktor WHERE ticket = :ticket' LIMIT 1
  3.  

Może tak?
Go to the top of the page
+Quote Post
timeo
post 17.02.2017, 11:33:33
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

Ostrzeżenie: (0%)
-----


Nie o to chodzi. Chcę aby wylistowane były wszystkie "tickety" ale zapytanie szło tylko do 1. Ograniczenie LIMIT powoduje pokazanie jedego rekordu z bazy, a nie o to mi chodziło.
Go to the top of the page
+Quote Post
woxala123
post 17.02.2017, 12:22:00
Post #4





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


  1.  
  2. SELECT * FROM mobidoktor WHERE ticket = :$ticket'



  1.  
  2. $update = ("UPDATE mobidoktor SET statue = ? WHERE id = ?");
  3. $statement = $this->db-> prepare($update);
  4. $statement->execute([$statue, $ticket]);


Ten post edytował woxala123 17.02.2017, 12:52:06
Go to the top of the page
+Quote Post
timeo
post 17.02.2017, 13:05:18
Post #5





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

Ostrzeżenie: (0%)
-----


Bez bindowania? Nie przejdzie nie działa i nie funkcjonuje
  1. Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':$ticket' at line 1 in D:\xampp\htdocs\mobidoktor3\index.php:627 Stack trace: #0 D:\xampp\htdocs\mobidoktor3\index.php(627): PDOStatement->execute() #1 {main} thrown in D:\xampp\htdocs\mobidoktor3\index.php on line 627


Nadal nic nie działa. To nie to - blokuje całą stronę. Nie listują się naprawy.

Dziękuję Ci za pomoc ale w moim przypadku to niestety nie działa i w ogóle nie wiem jak to zaimplementować w mój kod.

Cytat(woxala123 @ 17.02.2017, 12:22:00 ) *
  1.  
  2. SELECT * FROM mobidoktor WHERE ticket = :$ticket'



  1.  
  2. $update = ("UPDATE mobidoktor SET statue = ? WHERE id = ?");
  3. $statement = $this->db-> prepare($update);
  4. $statement->execute([$statue, $ticket]);



Ogólnie Pierwsza linia nie działa bo ciągle wywala błąd. Drugiej opcji nie umiem wykorztsac w moim przypadku.

Ten post edytował timeo 17.02.2017, 13:03:38
Go to the top of the page
+Quote Post
viking
post 17.02.2017, 13:29:04
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Nie ticket = :$ticket tylko ticket = :ticket
Bindowanie tu masz w execute, możesz przecież przepisać po swojemu.


--------------------
Go to the top of the page
+Quote Post
timeo
post 17.02.2017, 13:33:40
Post #7





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

Ostrzeżenie: (0%)
-----


Cytat(viking @ 17.02.2017, 13:29:04 ) *
Nie ticket = :$ticket tylko ticket = :ticket
Bindowanie tu masz w execute, możesz przecież przepisać po swojemu.

ticket = :ticket mam cały czas. Bindowanie mam po swojemu.
  1. f(isset($_POST['status']))
  2. {
  3. $data = date("Y-m-d H:i:s");
  4.  
  5. $przyjecie = $db -> prepare("UPDATE mobidoktor SET Status= :status WHERE `ticket` = :ticket");
  6. $przyjecie -> bindValue(':ticket', $_POST['ticketzmiana'], PDO::PARAM_STR);
  7. $przyjecie -> bindValue(':status', $_POST['status'], PDO::PARAM_STR);
  8. $przyjecie ->execute();
  9.  
  10. $zmianastatusu = $db->prepare("INSERT INTO zmianastatusow SET user = :user, ticket = :ticket, data = :data, status = :status, uwagidostatusu = :uwagidoserwisu " );
  11. $zmianastatusu ->bindValue(':ticket', $_POST['ticketzmiana'], PDO::PARAM_INT);
  12. $zmianastatusu ->bindValue(':status', $_POST['status'], PDO::PARAM_STR);
  13. $zmianastatusu ->bindValue(':user', $range3, PDO::PARAM_STR);
  14. $zmianastatusu ->bindValue(':uwagidoserwisu', $_POST['uwagidoserwisu'], PDO::PARAM_STR);
  15. $zmianastatusu ->bindValue(':data', $data, PDO::PARAM_INT);
  16. $zmianastatusu ->execute();
  17.  
  18. }?>


Tylko okno modal wysyła zapytania w pętli do wszystkich wylistowanych numerów ticketów.
var_dump pokazuje tylko ze $_POST jest tylko dla danego jednego ticketu w którym akurat kliknę okno modalne. Dlaczego zaczytuje mi do bazy do wszystkich ticketów. Może jest jakaś opcja do podejrzenia gdzie pętla wysyła zmiany do wszystkich ticketów.

Ten post edytował timeo 17.02.2017, 13:34:12
Go to the top of the page
+Quote Post
viking
post 17.02.2017, 13:47:19
Post #8





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A ten kod działa prawidłowo? Bo np tutaj :
}
$ticket = $row['ticket'];
?>

Masz jakiś kod php normalnie wstawiony w html bez przetwarzania.


--------------------
Go to the top of the page
+Quote Post
timeo
post 17.02.2017, 13:56:32
Post #9





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

Ostrzeżenie: (0%)
-----


Działa jak najbardziej. Wszystko jest ok. Tylko to wysyłanie do bazy jest męczące.
A to wrzuciłem bo mi było do unikalnych bootsrapow potrzebne.
}
$ticket = $row['ticket'];
?>

Ten post edytował timeo 17.02.2017, 13:57:36
Go to the top of the page
+Quote Post
viking
post 17.02.2017, 14:05:26
Post #10





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Tylko jeśli ten kod tak obecnie wygląda to nigdzie nie ma zmiennej $ticket, bo jak mówiłem, jest osadzone w HTML bez przetwarzania. W związku z czym warunek dla zapytania się nie wykonuje.


--------------------
Go to the top of the page
+Quote Post
timeo
post 17.02.2017, 14:13:21
Post #11





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

Ostrzeżenie: (0%)
-----


A jednak się wykonuje bo z $_POST dostaje

array(4) { ["status"]=> string(19) "Naprawa zakończona" ["uwagidoserwisu"]=> string(0) "" ["ticketzmiana"]=> string(4) "7323" ["add"]=> string(13) "Zmień serwis" }
Go to the top of the page
+Quote Post
viking
post 17.02.2017, 14:30:05
Post #12





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Czyli jaki jest problem teraz? Bo tablica pokazuje dane jednego rekordu do modyfikacji, z konkretnym id.


--------------------
Go to the top of the page
+Quote Post
timeo
post 17.02.2017, 14:42:02
Post #13





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

Ostrzeżenie: (0%)
-----


Na przykład to, że wysyła ponad kilkanaście razy (czyli tyle ile jest na stronie wylistowanych ticketów) zapytań do bazy.
Wstawiam link do zdjęcia.
Go to the top of the page
+Quote Post
viking
post 17.02.2017, 15:12:42
Post #14





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Co pojawia się w konsoli przeglądarki jak klikasz Zmień serwis?


--------------------
Go to the top of the page
+Quote Post
timeo
post 17.02.2017, 15:17:24
Post #15





Grupa: Zarejestrowani
Postów: 71
Pomógł: 0
Dołączył: 28.06.2011

Ostrzeżenie: (0%)
-----


Viking - serdecznie dziękuję za pomoc. Poradziłem sobie inaczej. Klikam w odnośnik do ticketu i tam mam wszystkie opcje do jednego ticketu i nie zapętlone, więc nie będę za bardzo wchodził w rozbudowę tego case.
Dzięki

Ten post edytował timeo 17.02.2017, 15:17:37
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:06