Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wysyłaniem rekordów
Forum PHP.pl > Forum > PHP
Mgorka
Witam mam mały problemik mianowicie jeden formularz wysyła prawidło rekordy i wypełnia mi jedną z tabel bazy danych ale już drugi w ogóle nie chce wysłać rekordów do tej samej bazy danych. Korzystają z tego samego pliku .
blooregard
Stawiam na błąd w kodzie.
xavaz
Podeślij jakiś kod, co chcesz wstawiać, jak wygląda struktura bazy. Jak poprzednik stawiam na błąd w kodzie.
Mgorka
Plik który przetwarza wszystko,
  1. <?php
  2. require('config.php');
  3.  
  4. foreach ($_POST as $key => $value) {
  5. $$key = $value;
  6. }
  7.  
  8. $conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS)
  9. or die('Nie mogę połączyć się z bazą danych. ' . mysql_error());
  10. mysql_select_db(SQL_DB, $conn);
  11.  
  12. switch ($action) {
  13. case "Utwórz postać":
  14. $sql = "INSERT IGNORE INTO char_zipcode (id, city, state) " .
  15. "VALUES ('$zip', '$city', '$state')";
  16. $result = mysql_query($sql)
  17.  
  18. $sql = "INSERT INTO char_lair (id, zip_id, lair_addr) " .
  19. "VALUES (NULL, '$zip', '$address')";
  20. $result = mysql_query($sql)
  21. if ($result) {
  22. $lairid = mysql_insert_id($conn);
  23. }
  24.  
  25. $sql = "INSERT INTO char_main (id,lair_id,alias,real_name,align) " .
  26. "VALUES (NULL, '$lairid', '$alias', '$name', '$align')";
  27. $result = mysql_query($sql)
  28. if ($result) {
  29. $charid = mysql_insert_id($conn);
  30. }
  31.  
  32. if ($powers != "") {
  33. $val = "";
  34. foreach ($powers as $key => $id) {
  35. $val[] = "('$charid', '$id')";
  36. }
  37. $values = implode(',', $val);
  38. $sql = "INSERT IGNORE INTO char_power_link (char_id, power_id) " .
  39. "VALUES $values";
  40. $result = mysql_query($sql)
  41. }
  42.  
  43. if ($enemies != '') {
  44. $val = "";
  45. foreach ($enemies as $key => $id) {
  46. $val[] = "('$charid', '$id')";
  47. }
  48. $values = implode(',', $val);
  49. if ($align = 'dobry') {
  50. $cols = '(good_id, bad_id)';
  51. } else {
  52. $cols = '(bad_id, good_id)';
  53. }
  54. $sql = "INSERT IGNORE INTO char_good_bad_link $cols " .
  55. "VALUES $values";
  56. $result = mysql_query($sql)
  57. }
  58.  
  59. $redirect = 'charlist.php';
  60. break;
  61.  
  62. case "Usuń postać":
  63. $sql = "DELETE FROM char_main, char_lair " .
  64. "USING char_main m, char_lair l " .
  65. "WHERE m.lair_id = l.id AND m.id = $cid";
  66. $result = mysql_query($sql)
  67.  
  68. $sql = "DELETE FROM char_power_link WHERE char_id = $cid";
  69. $result = mysql_query($sql)
  70.  
  71. $sql = "DELETE FROM char_good_bad_link " .
  72. "WHERE good_id = $cid OR bad_id = $cid";
  73. $result = mysql_query($sql)
  74.  
  75. $redirect = 'charlist.php';
  76. break;
  77.  
  78. case "Uaktualnij postać":
  79. $sql = "INSERT IGNORE INTO char_zipcode (id, city, state) " .
  80. "VALUES ('$zip', '$city', '$state')";
  81. $result = mysql_query($sql)
  82.  
  83. $sql = "UPDATE char_lair l, char_main m " .
  84. "SET l.zip_id='$zip', l.lair_addr='$address', " .
  85. "alias='$alias', real_name='$name', align='$align' " .
  86. "WHERE m.id = $cid AND m.lair_id = l.id";
  87. $result = mysql_query($sql)
  88.  
  89. $sql = "DELETE FROM char_power_link WHERE char_id = $cid";
  90. $result = mysql_query($sql)
  91.  
  92. if ($powers != "") {
  93. $val = "";
  94. foreach ($powers as $key => $id) {
  95. $val[] = "('$cid', '$id')";
  96. }
  97. $values = implode(',', $val);
  98. $sql = "INSERT IGNORE INTO char_power_link (char_id, power_id) " .
  99. "VALUES $values";
  100. $result = mysql_query($sql)
  101. }
  102.  
  103. $sql = "DELETE FROM char_good_bad_link " .
  104. "WHERE good_id = $cid OR bad_id = $cid";
  105. $result = mysql_query($sql)
  106.  
  107. if ($enemies != '') {
  108. $val = "";
  109. foreach ($enemies as $key => $id) {
  110. $val[] = "('$cid', '$id')";
  111. }
  112. $values = implode(',', $val);
  113. if ($align == 'dobry') {
  114. $cols = '(good_id, bad_id)';
  115. } else {
  116. $cols = '(bad_id, good_id)';
  117. }
  118. $sql = "INSERT IGNORE INTO char_good_bad_link $cols " .
  119. "VALUES $values";
  120. $result = mysql_query($sql)
  121. }
  122.  
  123. $redirect = 'charlist.php';
  124. break;
  125.  
  126. case "Usuń moce":
  127. if ($powers != "") {
  128. $powerlist = implode(',', $powers);
  129.  
  130. $sql = "DELETE FROM char_power WHERE id IN ($powerlist)";
  131. $result = mysql_query($sql)
  132.  
  133. $sql = "DELETE FROM char_power_link " .
  134. "WHERE power_id IN ($powerlist)";
  135. $result = mysql_query($sql)
  136. }
  137.  
  138. $redirect = 'poweredit.php';
  139. break;
  140.  
  141. case "Dodaj moc":
  142. if ($newpower != '') {
  143. $sql = "INSERT IGNORE INTO char_power (id, power) " .
  144. "VALUES (NULL, '$newpower')";
  145. $result = mysql_query($sql)
  146. }
  147.  
  148. $redirect = 'poweredit.php';
  149. break;
  150.  
  151. default:
  152.  
  153. $redirect = 'charlist.php';
  154. }
  155. header("Location: $redirect");
  156. ?>



formularz ma wstawiać dane użytkownika imię nazwisko pseudonim itd..
blooregard
To może jeszcze ten kod formularzy.
Mgorka
Formularz
  1. <?php
  2. require('config.php');
  3.  
  4. if (!isset($_GET['c']) || $_GET['c'] == '' || !is_numeric($_GET['c'])) {
  5. $char='0';
  6. } else {
  7. $char = $_GET['c'];
  8. }
  9. $subtype = "Utwórz";
  10. $subhead = "Wpisz dane postaci i kliknij przycisk " .
  11. "'$subtype postać.'";
  12. $tablebg = '#EEEEFF';
  13.  
  14. $conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS)
  15. or die('Nie mogę połączyć się z bazą danych. ' . mysql_error());
  16. mysql_select_db(SQL_DB, $conn);
  17.  
  18. $sql = "SELECT id, power FROM char_power";
  19. $result = mysql_query($sql)
  20. if (mysql_num_rows($result) > 0) {
  21. while ($row = mysql_fetch_array($result)) {
  22. $pwrlist[$row['id']] = $row['power'];
  23. }
  24. }
  25.  
  26. $sql = "SELECT id, alias FROM char_main WHERE id != $char";
  27. $result = mysql_query($sql)
  28. if (mysql_num_rows($result) > 0) {
  29. $row = mysql_fetch_array($result);
  30. $charlist[$row['id']] = $row['alias'];
  31. }
  32.  
  33. if ($char != '0') {
  34. $sql = "SELECT c.alias, c.real_name AS name, c.align, " .
  35. "l.lair_addr AS address, z.city, z.state, z.id AS zip " .
  36. "FROM char_main c, char_lair l, char_zipcode z " .
  37. "WHERE z.id = l.zip_id " .
  38. "AND c.lair_id = l.id " .
  39. "AND c.id = $char";
  40. $result = mysql_query($sql)
  41. $ch = mysql_fetch_array($result);
  42.  
  43. if (is_array($ch)) {
  44. $subtype = "Uaktualnij";
  45. $tablebg = '#EEFFEE';
  46. $subhead = "Dokonaj edycji danych dla <i>" . $ch['alias'] .
  47. "</i> i kliknij przycisk '$subtype postać.'";
  48.  
  49. $sql = "SELECT p.id " .
  50. "FROM char_main c " .
  51. "JOIN char_power p " .
  52. "JOIN char_power_link pk " .
  53. "ON c.id = pk.char_id " .
  54. "AND p.id = pk.power_id " .
  55. "WHERE c.id = $char";
  56. $result = mysql_query($sql)
  57. if (mysql_num_rows($result) > 0) {
  58. while ($row = mysql_fetch_array($result)) {
  59. $powers[$row['id']] = 'selected';
  60. }
  61. }
  62.  
  63. // pobierz listę wrogów postaci
  64. $sql = "SELECT n.id " .
  65. "FROM char_main c " .
  66. "JOIN char_good_bad_link gb " .
  67. "JOIN char_main n " .
  68. "ON (c.id = gb.good_id AND n.id = gb.bad_id) " .
  69. "OR (n.id = gb.good_id AND c.id = gb.bad_id) " .
  70. "WHERE c.id = $char";
  71. $result = mysql_query($sql)
  72. if (mysql_num_rows($result) > 0) {
  73. while ($row = mysql_fetch_array($result)) {
  74. $enemies[$row['id']] = 'selected';
  75. }
  76. }
  77. }
  78. }
  79. ?>
  80.  
  81. <html>
  82. <head>
  83. <title>Edycja postaci</title>
  84. </head>
  85. <body>
  86. <img src="CBA_Tiny.gif" align="left" hspace="10">
  87. <h1>Witryna postaci<br />komiksowych</h1><br />
  88. <h3><?php echo $subhead; ?></h3>
  89.  
  90. <form action="char_transact.php" name="theform" method="post">
  91. <table border="0" cellpadding="15" bgcolor="<?php echo $tablebg; ?>">
  92. <tr>
  93. <td>Pseudonim postaci:</td>
  94. <td><input type="text" name="alias" size="41"
  95. value="<?php if (isset($ch)) { echo $ch['alias']; } ?>">
  96. </td>
  97. </tr>
  98. <tr>
  99. <td>Rzeczywiste imię i nazwisko:</td>
  100. <td><input type="text" name="name" size="41"
  101. value="<?php if (isset($ch)) { echo $ch['name']; } ?>">
  102. </td>
  103. </tr>
  104. <tr>
  105. <td>Moce:<br><font size="2" color="#990000">
  106. (Ctrl+klikniecie, aby<br>zaznaczyć wiele<br>mocy)</font>
  107. </td>
  108. <td>
  109. <select multiple name="powers[]" size="4">
  110. <?php
  111. foreach ($pwrlist as $key => $value) {
  112. echo "<option value=\"$key\" ";
  113. if (isset($powers) && array_key_exists($key,$powers)) {
  114. echo $powers[$key];
  115. }
  116. echo ">$value</option>\n";
  117. }
  118. ?>
  119. </select>
  120. </td>
  121. </tr>
  122.  
  123. <tr>
  124. <td>Lokalizacja kryjówki:<br><font size="2" color="#990000">
  125. (adres,<br>miasto, województwo, kod pocztowy)</font>
  126. </td>
  127. <td><input type="text" name="address" size="41"
  128. value="<?php if (isset($ch)) { echo $ch['address']; } ?>"><br>
  129. <input type="text" name="city"
  130. value="<?php if (isset($ch)) { echo $ch['city']; } ?>">
  131. <input type="text" name="state" size="2"
  132. value="<?php if (isset($ch)) { echo $ch['state']; } ?>">
  133. <input type="text" name="zip" size="10"
  134. value="<?php if (isset($ch)) { echo $ch['zip']; } ?>">
  135. </td>
  136. </tr>
  137.  
  138. <tr>
  139. <td>Charakter:</td>
  140.  
  141. <td>
  142. <input type="radio" name="align" value="dobry"
  143. <?php if (isset($ch)) {
  144. echo($ch['align']=='dobry' ? ' checked' : '');
  145. } ?>>
  146. dobry<br>
  147. <input type="radio" name="align" value="zły"
  148. <?php if (isset($ch)) {
  149. echo($ch['align']=='zły' ? ' checked' : '');
  150. } ?>>
  151. zły
  152. </td>
  153. </tr>
  154.  
  155. <?php if (isset($charlist) && is_array($charlist)) { ?>
  156. <tr>
  157. <td>Wrogowie:<br><font size="2" color="#990000">
  158. (Ctrl+kliknięcie, aby<br>zaznaczyć wielu<br>wrogów)</font>
  159. </td>
  160. <td>
  161. <select multiple name="enemies[]" size="4">
  162. <?php
  163. foreach ($charlist as $key => $value) {
  164. echo "<option value=\"$key\" ";
  165. if (isset($enemies)) {
  166. echo $enemies[$key];
  167. }
  168. echo ">$value</option>\n";
  169. }
  170. ?>
  171. </select>
  172. </td>
  173. </tr>
  174. <?php } ?>
  175. <tr>
  176. <td colspan="2">
  177. <input type="submit" name="action"
  178. value="<?php echo $subtype; ?> postać">
  179. <input type="reset">
  180. <?php if ($subtype == "Uaktualnij") { ?>
  181. &nbsp;&nbsp;&nbsp;&nbsp;
  182. <input type="submit" name="action" value="Usuń postać">
  183. <?php } ?>
  184. </td>
  185. </tr>
  186. </table>
  187. <input type="hidden" name="cid" value="<?php echo $char; ?>">
  188. </form>
  189. <a href="charlist.php">Powróć do strony głównej</a>
  190. </body>
  191. </html>
tehaha
nie czytałem kodu ale wiem co to za książka bo sam ją kiedyś przerobiłem i niestety muszę Cię poinformować, że w kilku miejscach w tej książce jest błąd w przykładowych kodach i możliwe, że to właśnie dlatego Ci nie działa

aczkolwiek bardzo możliwe, że źle przepisałeś kod, na stronie wydawcy możesz pobrać pliki robocze do każdego działu, spróbuj użyć tamtych plików i zobacz czy dalej nie działa http://www.wrox.com/WileyCDA/WroxTitle/Beg...d-DOWNLOAD.html, jest tam zakładka Download Code
Mgorka
Musze ci przyznać że już w jednym miejscu znalazłem błąd w wcześniejszym rozdziale. A w zamian tej książki jaką polecasz??
tehaha
jak dla mnie ta książka była bardzo dobra, a błędy dodatkowo przyczyniły się do mojej edukacji bo zanim znalazłem błąd to cały tydzień analizowałem kod krok po kroku, po książce to już raczej manual php, manual mysql i artykuły na wortalach no i pisanie swoich skryptów:) poczytaj sobie jeszcze o zabezpieczaniu swoich skryptów przed atakami sql injection, xss i o walidacji danych bo niestety te tematy słabo były poruszane w tej książce
Mgorka
A czy coś może mieć z tym związek z kodowaniem pliku questionmark.gif
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.