Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Insert oraz upload
Forum PHP.pl > Forum > Bazy danych
Astan
W miejscach gdzie mam zapytanie UPDATE i INSERT chciałbym zlączyć dwie tabele w jedną aby w miejscu status w formularzu zamist numeru id była wyświetlana nazwa statusu. Mam tabelę pracownik z kolumnami (id, imie, nazwisko, login, haslo, telefon, pracownik_status ) oraz tabele pracownik_status z kolumny (id i name).
Niżej wklejam napisany przeze mnie kod

  1. <?php
  2. include '../db.php';
  3. $mysqli->set_charset("utf8");
  4. function createForm($p_imie = '', $p_nazwisko = '', $p_login = '', $p_haslo = '', $p_telefon = '', $p_status = '', $error = '', $id = '') {
  5. ?>
  6. <!DOCTYPE html>
  7. <html>
  8. <head>
  9. <title><?php
  10. if ($id != '') {
  11. echo "Edytuj pracownika";
  12. } else {
  13. echo "Dodaj pracownika";
  14. }
  15. ?></title>
  16. <link rel="Stylesheet" type="text/css" href="../css/style.css" />
  17. <link href='http://fonts.googleapis.com/css?family=Josefin+Sans&subset=latin,latin-ext' rel='stylesheet' type='text/css' />
  18. <meta charset="UTF-8" />
  19. </head>
  20. <body>
  21. <header>
  22. <div class="header">
  23. <div id="header_img">
  24. <img src="../image/logov2.png" alt="Logo" />
  25. </div>
  26. </div>
  27. <div class="header_menu">
  28. <ul>
  29. <li><a href="../logout.php">Wyloguj</a></li>
  30. </ul>
  31. </div>
  32. </header>
  33. <br />
  34. <section>
  35. <article class="article_1">
  36. <div id="menu_img">
  37. <img src="../image/image_cms_1.png" alt="Logo"/>
  38. <br /><br /><br /><br />
  39. <ul>
  40. <li><a href="../pracownik/pracownik.php">Pracownik</a></li>
  41. <ul>
  42. <li><a href="edytuj.php">Dodaj pracownika</a></li>
  43. </ul>
  44. <li><a href="../pojazd/pojazd.php">Pojazd</a></li>
  45. <li><a href="../towar/towar.php">Towar</a></li>
  46. <li><a href="../statystyki.php">Statystyki</a></li>
  47. </ul>
  48. </div>
  49. </article>
  50. <article class="article_2">
  51. <h2><?php
  52. if ($id != '') {
  53. echo "<div style=' color:white'>". $edytuj='Edytuj pracownika' . "</div>";
  54. } else {
  55. echo "<div style=' color:white'>". $dodaj='Dodaj pracownika' . "</div>";
  56. }
  57. ?></h2>
  58.  
  59. <?php
  60. if ($error != '') {
  61. echo "<div style=' color:red; padding: 10px'>" . $error . "</div>";
  62. }
  63. ?>
  64.  
  65. <form action="" method="post">
  66. <div class="for">
  67. <?php if ($id != '') { ?>
  68. <input type="hidden" name="id" value="<?php echo $id; ?>" />
  69. <br />
  70. <p style=" color:#ffffff "> ID: <?php echo $id; ?></p>
  71. <?php } ?>
  72. <br />
  73. <p><label>Imię: </label><input type="text" name="imie" value="<?php echo $p_imie ?>"/></p><br />
  74. <p><label>Nazwisko: </label><input type="text" name="nazwisko" value="<?php echo $p_nazwisko ?>"/></p><br />
  75. <p><label>Login: </label><input type="text" name="login" value="<?php echo $p_login ?>" /></p><br />
  76. <p><label>Hasło: </label><input type="password" name="password" value="<?php echo $p_haslo ?>" /></p><br />
  77. <p><label>Telefon: </label><input type="tel" name="tel" value="<?php echo $p_telefon ?>" /></p><br />
  78. <!--<p><label>Status: </label><input type="text" name="status" value="<?php echo $p_status ?>" /></p><br />-->
  79. <p><label>Status: </label><select name="status"><option><?php echo $p_status ?></option></select></p><br />
  80. <br />
  81. <input type="submit" name="submit" value="Dodaj" />
  82.  
  83. </div>
  84.  
  85. </form>
  86. </article>
  87. </section>
  88.  
  89. </body>
  90. <footer>
  91. <div class="footer">
  92. <br />
  93. <p>Copyright Š 2014 Autorzy: Tomasz Łapiński, Joanna Cieślik, Emil Jakonczuk, Adam Cieszewski, Artur Parafiniuk</p>
  94. </div>
  95. </footer>
  96. </html>
  97.  
  98. <?php
  99. }
  100.  
  101. if (isset($_GET['id'])) {
  102.  
  103. if (isset($_POST['submit'])) {
  104.  
  105. if (is_numeric($_POST['id'])) {
  106. $id = $_POST['id'];
  107. $_imie = htmlentities($_POST['imie'], ENT_QUOTES);
  108. $_nazwisko = htmlentities($_POST['nazwisko'], ENT_QUOTES);
  109. $_login = htmlentities($_POST['login'], ENT_QUOTES);
  110. $_haslo = htmlentities($_POST['password'], ENT_QUOTES);
  111. $_tel = htmlentities($_POST['tel'], ENT_QUOTES);
  112. $_status = htmlentities($_POST['status'], ENT_QUOTES);
  113.  
  114. if ($_imie == '' || $_nazwisko == '' || $_login == '' || $_haslo == '' || $_tel == '' || $_status == '') {
  115. $error = "Wypełnij wszystkie pola";
  116. createForm($_imie, $_nazwisko, $_login, $_haslo, $_tel, $_status, $error);
  117. } else {
  118. if ($stmt = $mysqli->prepare("UPDATE pracownik SET imie=?, nazwisko=?, login=?, haslo=?, telefon=?, pracownik_status_id=? WHERE id=?")) {
  119. $stmt->bind_param("sssssii", $_imie, $_nazwisko, $_login, $_haslo, $_tel, $_status, $id);
  120. $stmt->execute();
  121. $stmt->close();
  122.  
  123. } else {
  124. echo "Błąd";
  125. }
  126.  
  127. header("location: pracownik.php");
  128. }
  129. }
  130. } else {
  131.  
  132. if (is_numeric($_GET['id']) && $_GET['id'] > 0) {
  133.  
  134. $id = $_GET['id'];
  135.  
  136. if ($stmt = $mysqli->prepare("SELECT * FROM pracownik WHERE id=?")) {
  137. $stmt->bind_param("i", $id);
  138. $stmt->execute();
  139. $stmt->bind_result($id, $imie, $nazwisko, $login, $haslo, $tel, $status);
  140. $stmt->fetch();
  141. createForm($imie, $nazwisko, $login, $haslo, $tel, $status, NULL, $id);
  142. $stmt->close();
  143. } else {
  144. echo "Błąd !";
  145. }
  146. } else {
  147.  
  148. header("location: pracownik.php");
  149. }
  150. }
  151. } else {
  152.  
  153.  
  154. if (isset($_POST['submit'])) {
  155.  
  156. $_imie = htmlentities($_POST['imie'], ENT_QUOTES);
  157. $_nazwisko = htmlentities($_POST['nazwisko'], ENT_QUOTES);
  158. $_login = htmlentities($_POST['login'], ENT_QUOTES);
  159. $_haslo = htmlentities($_POST['password'], ENT_QUOTES);
  160. $_tel = htmlentities($_POST['tel'], ENT_QUOTES);
  161. $_status = htmlentities($_POST['status'], ENT_QUOTES);
  162.  
  163. if ($_imie == '' || $_nazwisko == '' || $_login == '' || $_haslo == '' || $_tel == '' || $_status == '') {
  164. $error = "Wypełnij wszystkie pola";
  165. createForm($_imie, $_nazwisko, $_login, $_haslo, $_tel, $_status, $error);
  166. } else {
  167. if ($stmt = $mysqli->prepare("INSERT pracownik (imie,nazwisko,login,haslo,telefon,pracownik_status_id) VALUES (?,?,?,?,?,?)")) {
  168. $stmt->bind_param("sssssi", $_imie, $_nazwisko, $_login, $_haslo, $_tel, $_status);
  169. $stmt->execute();
  170. $stmt->close();
  171. } else {
  172. echo "Błąd !";
  173. }
  174.  
  175. header("location: pracownik.php");
  176. }
  177. } else {
  178. createForm();
  179. }
  180. }
  181. $mysqli->close();
  182. ?>
SpiritCode
Nie widzę nigdzie. Pobierasz gdzieś statusy z bazy?

Spróbuj tak:
1: pobierz statusy na początku
  1. $stQuery = $mysqli->prepare("SELECT * FROM pracownik_status")) {
  2. $stQuery->execute();

2: przy rysowaniu w polu opcja wypisz statusy jako opcje
  1. <p><label>Status: </label><select name="status">
  2. <?php
  3. while($row = $stQuery->fetch(PDO::FETCH_ASSOC)):
  4. ?>
  5. <option value=<?php echo $row['id']?>><?php echo $row['name'] ?></option>
  6. <?php endwhile?>
  7. </select><p><br />

Dzięki temu będziesz miał w opcjach statusy a jako wartość będziesz otrzymywał id statusu a wyświetla się nazwa wink.gif
Pyton_000
Zaraz przylecisz na forum z pytaniem dlaczego to nie działa:
  1. $stmt->bind_param("sssssii", $_imie, $_nazwisko, $_login, $_haslo, $_tel, $_status, $id);

http://php.net/manual/en/pdostatement.bindparam.php

Tak samo kilka innych które widać w kodzie...


Wyedytowane ze względu na głupotę wink.gif
pmir13
Cytat
Zaraz przylecisz na forum z pytaniem dlaczego to nie działa:

Ale dlaczego miałoby to nie działać? To nie jest PDO, to jest ewidentnie mysqli, więc jeśli już dokumentacja, to raczej
http://php.net/manual/en/mysqli-stmt.bind-param.php

A SpiritCode ogólnie już odpowiedział na główny problem.
Pyton_000
Ahh... Czyli jednak nie powinienem nic pisać na Forum przed 10 smile.gif
Astan
W INSERT jest możliwość łączenia dwóch tabel przez join ?

  1. $mysqli->prepare("INSERT pracownik (imie,nazwisko,login,haslo,telefon,pracownik_status_id) VALUES (?,?,?,?,?,?)")
nospor
Nie. Insert wklada tylko do jednej tabeli
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.