Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Zadanie z ksiazki
Forum PHP.pl > Forum > Przedszkole
Gość
Witam!
Mam takie cos:
[codebox]
  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 = "Utworz";
  10. $subhead = "Wpisz dane postaci i kliknij przycisk " .
  11.           "'$subtype postac.'";
  12. $tablebg = '#EEEEFF';
  13.  
  14. $conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS)
  15.  or die('Nie moge polaczyc sie z baza 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.  or die(mysql_error());
  21. if (mysql_num_rows($result) > 0) {
  22.  while ($row = mysql_fetch_array($result)) {
  23.    $pwrlist[$row['id']] = $row['power'];
  24.  }
  25. }
  26.  
  27. $sql = "SELECT id, alias FROM char_main WHERE id != $char";
  28. $result = mysql_query($sql)
  29.  or die(mysql_error());
  30. if (mysql_num_rows($result) > 0) {
  31.  $row = mysql_fetch_array($result);
  32.  $charlist[$row['id']] = $row['alias'];
  33. }
  34.  
  35. if ($char != '0') {
  36.  $sql = "SELECT c.alias, c.real_name AS name, c.align, " .
  37.         "l.lair_addr AS address, z.city, z.state, z.id AS zip " .
  38.         "FROM char_main c, char_lair l, char_zipcode z " .
  39.         "WHERE z.id = l.zip_id " .
  40.         "AND c.lair_id = l.id " .
  41.         "AND c.id = $char";
  42.  $result = mysql_query($sql)
  43.    or die(mysql_error());
  44.  $ch = mysql_fetch_array($result);
  45.  
  46.  if (is_array($ch)) {
  47.    $subtype = "Uaktualnij";
  48.    $tablebg = '#EEFFEE';
  49.    $subhead = "Dokonaj edycji danych dla <i>" . $ch['alias'] .
  50.               "</i> i kliknij przycisk '$subtype postac.'";
  51.  
  52.    $sql = "SELECT p.id " .
  53.           "FROM char_main c " .
  54.           "JOIN char_power p " .
  55.           "JOIN char_power_link pk " .
  56.           "ON c.id = pk.char_id " .
  57.           "AND p.id = pk.power_id " .
  58.           "WHERE c.id = $char";
  59.    $result = mysql_query($sql)
  60.      or die(mysql_error());
  61.    if (mysql_num_rows($result) > 0) {
  62.      while ($row = mysql_fetch_array($result)) {
  63.        $powers[$row['id']] = 'selected';
  64.      }
  65.    }
  66.  
  67.    // pobierz liste wrogow postaci
  68.    $sql = "SELECT n.id " .
  69.           "FROM char_main c " .
  70.           "JOIN char_good_bad_link gb " .
  71.           "JOIN char_main n " .
  72.           "ON (c.id = gb.good_id AND n.id = gb.bad_id) " .
  73.           "OR (n.id = gb.good_id AND c.id = gb.bad_id) " .
  74.           "WHERE c.id = $char";
  75.    $result = mysql_query($sql)
  76.      or die(mysql_error());
  77.    if (mysql_num_rows($result) > 0) {
  78.      while ($row = mysql_fetch_array($result)) {
  79.        $enemies[$row['id']] = 'selected';
  80.      }
  81.    }
  82.  }
  83. }
  84. ?>
  85.  
  86. <html>
  87. <head>
  88. <title>Edycja postaci</title>
  89. </head>
  90. <body>
  91. <img src="CBA_Tiny.gif" align="left" hspace="10">
  92. <h1>Witryna postaci<br />komiksowych</h1><br />
  93. <h3><?php echo $subhead; ?></h3>
  94.  
  95. <form action="char_transact.php" name="theform" method="post">
  96. <table border="0" cellpadding="15" bgcolor="<?php echo $tablebg; ?>">
  97.  <tr>
  98.    <td>Pseudonim postaci:</td>
  99.    <td><input type="text" name="alias" size="41"
  100.          value="<?php if (isset($ch)) { echo $ch['alias']; } ?>">
  101.    </td>
  102.  </tr>
  103.  <tr>
  104.    <td>Rzeczywiste imie i nazwisko:</td>
  105.    <td><input type="text" name="name" size="41"
  106.          value="<?php if (isset($ch)) { echo $ch['name']; } ?>">
  107.    </td>
  108.  </tr>
  109.  <tr>
  110.    <td>Moce:<br><font size="2" color="#990000">
  111.      (Ctrl+klikniecie, aby<br>zaznaczyc wiele<br>mocy)</font>
  112.    </td>
  113.    <td>
  114.      <select multiple name="powers[]" size="4">
  115. <?php
  116. foreach ($pwrlist as $key => $value) {
  117.  echo "<option value=\"$key\" ";
  118.  if (isset($powers) && array_key_exists($key,$powers)) {
  119.    echo $powers[$key];
  120.  }
  121.  echo ">$value</option>\n";
  122. }
  123. ?>
  124.      </select>
  125.    </td>
  126.  </tr>
  127.  
  128.  <tr>
  129.    <td>Lokalizacja kryjowki:<br><font size="2" color="#990000">
  130.      (adres,<br>miasto, wojewodztwo, kod pocztowy)</font>
  131.    </td>
  132.    <td><input type="text" name="address" size="41"
  133.          value="<?php if (isset($ch)) { echo $ch['address']; } ?>"><br>
  134.        <input type="text" name="city"
  135.          value="<?php if (isset($ch)) { echo $ch['city']; } ?>">
  136.        <input type="text" name="state" size="2"
  137.          value="<?php if (isset($ch)) { echo $ch['state']; } ?>">
  138.        <input type="text" name="zip" size="10"
  139.          value="<?php if (isset($ch)) { echo $ch['zip']; } ?>">
  140.    </td>
  141.  </tr>
  142.  
  143.  <tr>
  144.    <td>Charakter:</td>
  145.  
  146.    <td>
  147.      <input type="radio" name="align" value="dobry"
  148.      <?php if (isset($ch)) {
  149.        echo($ch['align']=='dobry' ? ' checked' : '');
  150.      } ?>>
  151.      dobry<br>
  152.      <input type="radio" name="align" value="zly"
  153.      <?php if (isset($ch)) {
  154.        echo($ch['align']=='zly' ? ' checked' : '');
  155.      } ?>>
  156.      zly
  157.    </td>
  158.  </tr>
  159.  
  160. <?php if (isset($charlist) && is_array($charlist)) { ?>
  161.  <tr>
  162.    <td>Wrogowie:<br><font size="2" color="#990000">
  163.      (Ctrl+klikniecie, aby<br>zaznaczyc wielu<br>wrogow)</font>
  164.    </td>
  165.    <td>
  166.      <select multiple name="enemies[]" size="4">
  167. <?php
  168. foreach ($charlist as $key => $value) {
  169.  echo "<option value=\"$key\" ";
  170.  if (isset($enemies)) {
  171.    echo $enemies[$key];
  172.  }
  173.  echo ">$value</option>\n";
  174. }
  175. ?>
  176.      </select>
  177.    </td>
  178.  </tr>
  179. <?php } ?>
  180.  <tr>
  181.    <td colspan="2">
  182.      <input type="submit" name="action"
  183.        value="<?php echo $subtype; ?> postac">
  184.      <input type="reset">
  185. <?php if ($subtype == "Uaktualnij") { ?>
  186.          
  187.      <input type="submit" name="action" value="Usun postac">
  188. <?php } ?>
  189.    </td>
  190.  </tr>
  191. </table>
  192. <input type="hidden" name="cid" value="<?php echo $char; ?>">
  193. </form>
  194. <a href="charlist.php">Powroc do strony glownej</a>
  195. </body>
  196. </html>



Jest to zadanie z ksiazki lecz niestety nie dziala do konca tak jak powinno. Chodzi o linijki 28 i 163. Zadaniem tego skryptu jest dodanie nowej postaci z komiksu. Wszystko jest ok, ale w lini 28 pobieram wszystkie aktualnie znajdujace sie postacie a powinny sie one wyswietlic w lini 163. Niestety wyswietla mi sie tylko jedna postac oznaczona id=1. Dodam ze w zapytaniu SQL zmienilem zamiast !=$char na np =3 i wyswietla mi sie postac o id=3 czyli ok. Moze ktos ma ochote na to zerknac lub sam przerabial ta ksiazke i wie o co mi chodzi. Wszystkie skrypty odnoszace sie do tego oraz wyglad bazy pozna zobaczyc pod http://mln-web.cs.odu.edu/~mln/code/ch09.htm
Dzieki za pomoc!
saren_as
To ja zalozylem ten post, ale zapomialem sie zalogowac. Jest jakas mozliwosc, abym mogl edytowac teraz pierwszy post?
Dodam jeszcze, ze w momencie gdy zmienna $char przyjmie wartosc 0 (i taka tez przyjmuje) POWINNY sie pobrac wszystkie postacie, a wlasnie tak jak juz pisalem pobiera sie tylko pierwsza. Tu chyba cos nie tak z petla, ktora wyswietli wszystkie postacie.
rzymek01
w ogole ten kod jest jakiś dziwny i nieoptymalny smile.gif

zrób sobie dwa zapytania:
1. wszystkie rekotdy
2. ten inny warunek

nie rozumiem po co jest w zapytaniu `id!=$char` tongue.gif
saren_as
Cytat(rzymek01 @ 14.10.2008, 17:38:13 ) *
w ogole ten kod jest jakiś dziwny i nieoptymalny smile.gif

zrób sobie dwa zapytania:
1. wszystkie rekotdy
2. ten inny warunek

nie rozumiem po co jest w zapytaniu `id!=$char` tongue.gif


Co do optymalnosci kodu to sie nie wypowiem, ale jest to przyklad z ksiazki wiec powinien byc ok smile.gif
`id!=$char` - ten warunek jest po to, aby w momencie jak chce edytowac postac jako wrogow miec wybor wszystkich postaci oprocz tej edytowanej (nie mozna byc wrogiem samego siebie)

Jezeli chodzi o moj problem to prawie juz ok. Brakowalo w lini 32 napisu while () - w ksiazce tez nie bylo smile.gif
OKI ide walczyc dalej i jak cos to tu wroce.
Dzieki za odpowiedz!
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.