Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Edycja danych - trudna sprawa
Forum PHP.pl > Forum > PHP
mariuszzzzzz
Witam wszystkich,

chcialbym zmienic dane w bazie danych za pomoca formularzy. Szlo bardzo pieknie az natrafilem na (jak dla mnie) powazny problem, ktorego nie moge przeskoczyc.

Mam baze z noclegami. Edycja nazwy, adresu funkcjonuje ale jak mam zmienic "wyposazenie" noclegu to juz problem.

Przy dodaniu noclegu w polu "wyposazenie" uzytkownik ma mozliwosc wyboru jednego lub wiecej opcji za pomoca checkbox. Do bazy jest do pola "wyposazenie" taki tekst wpisany np.: "- radio<br>- tv<br>- pokoje dwuosobowe"

I moj problem polega na tym jak to zrobic aby wyswietlilo sie wszystkie pola z tabeli "wyposazenie" do wyboru (checkbox) i te dane ktore juz wczesniej byly wybrane zeby byly zaznaczone.

Oto moj kod edytora wpisów:
  1. <?php
  2. include "configg.php";
  3. $IDspedytora = intval($_REQUEST['id']);
  4. ?>
  5. <html>
  6. <head>
  7. <title></title>
  8. <link href="style.css" rel="stylesheet" type="text/css">
  9.  
  10. </head>
  11. <body>
  12. <center><h3>Aktualizacja danych obiektu noclegowego</h3></center>
  13. <?php
  14. if (isset($_POST['submit'])) {
  15. $nf = $_POST['Nazwa'];
  16. $ulica = $_POST['ulica'];
  17. echo $nf, $IDspedytora;
  18.  
  19. $query_update = "UPDATE obiekty SET nazwa = '" . $_POST['Nazwa'] . "', ul = '" . $_POST['ulica'] . "' WHERE id = '" . $_POST['IDspedytora'] . "'";
  20. $result_update = mysql_query($query_update) or die(mysql_error());
  21. $query = "SELECT * FROM obiekty WHERE id = '" . $_REQUEST['id'] . "' ";
  22. $result = mysql_query($query) or die(mysql_error());
  23. $row = mysql_fetch_array($result); mysql_close();
  24. ?>
  25.  
  26. <b>Dane zosta&sup3;y uaktualnione.</b><br> <a href="index.php">Strona g&sup3;ówna panelu</a></p>
  27.  
  28. <?php
  29. } 
  30.  
  31. else 
  32. {
  33. $query = "SELECT * FROM obiekty WHERE id = '" . $_REQUEST['id'] . "' ";
  34. $result = mysql_query($query) or die(mysql_error());
  35. $row = mysql_fetch_array($result);
  36.  
  37. ?><p> 
  38. <div id='witajpier'>
  39.  <form action="edytujopis.php" method="post">
  40.  <table >
  41.  <tr><td><input type="hidden" name="IDspedytora" value="<?php echo $_REQUEST['id']; ?>"> </td></tr>
  42.  <tr><td>Nazwa obiektu: </td><td><input type="text" name="Nazwa"  value="<?php echo $row['nazwa']; ?>"></td></tr><br> 
  43.  <tr><td>Ulica: </td><td><input type="text" name="ulica"  value="<?php echo $row['ul']; ?>"></td></tr><br>  
  44.  <tr><td><input type="submit" name="submit" value="Uaktualnij"> <a href="index.php">Wróc</a> </td></tr>
  45.  </table></form></div></p>
  46.  <?php
  47.  }
  48.  ?>
  49.  </body>
  50.  </html>
JoShiMa
Nie wiem jak masz w bazie, ale powinieneś mieć trzy tabele
1. Tabela noclegów np. noclegi z polem id_nocleg
2. Tabela wyposażenia np. wyposazenie z polami id_wyp i nazwa_wyp
3. Tabela łącząca noclegi i wyposażenie np. nocleg_wypos z polami id_nocleg i id_wyp

Wtedy zapytanie mogłoby wyglądać tak:
  1. SELECT w.nazwa, w.id_wyp, nw.id_nocleg
  2. FROM wyposazenie w
  3. LEFT OUTER JOIN nocleg_wypos nw ON w.id_wyp=nw.id_wyp
  4. WHERE nw.id_nocleg=15 OR nw.id_nocleg IS NULL

gdzie 15 to id wybranego noclegu.

Warunek zapewnia Ci wczytanie wszystkich nazw wyposażenia z wyszczególnieniem tych, które są skojarzone z id_nocleg=15

Potem w php:
  1. <?php
  2. $wynik_zapytania = mysql_query($zapytanie);
  3.  
  4. while($rekord = mysql_fetch_array($wynik_zapytania){
  5.  if($rekord['id_nocleg'] != ''){
  6.  $checked = 'checked="checked"';
  7.  }else{
  8.  $checked = '';
  9.  }
  10.  
  11.  echo '<input type="checkbox" name="nazwa_wyp[]" value="'.$rekord['id_wyp'].'">'.$rekord['nazwa'].'<br>';
  12. }
  13. ?>


Nie sprawdziłam, ale powinno być OK.
kszychu
To raczej nadaje się na dział php niż mysql. Przenoszę.
mariuszzzzzz
Moja baza wyglada nastepujaco:
Posiadam dwie tabele:
Tabela z noclegami posiada feld "id_nocleg" i tez "wyposazenie" do ktorego wpisuje sie automatycznie tekst jakie nocleg ma wyposazenie
a ten tekst bierze z innej tabeli ktora posiada "id_wyp" i "nazwa_wyp"
JoShiMa
No to masz beznadzieją konstrukcję bazy i zrób to po ludzku, czyli tak jak Ci zaproponowałam. W tabeli powiązań muszą być rekordy wiążące każdy nocleg z każdym elementem wyposażenia z tabeli wyposażenia. Tak jak masz to zrobione się tego nie konstruuje, chociażby dlatego, że później sprawia takie trudności na jakie się natknąłeś. Jeszcze trudniej jest modyfikować takie stringowe rekordy jakie masz kiedy Ci jakieś wyposażenie dojdzie, albo odpadnie.
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.