Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Edycja danych - trudna sprawa
mariuszzzzzz
post 19.08.2008, 09:43:47
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.06.2005

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


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>


--------------------
Profesjonalne pozycjonowanie w Niemczech. Polecam i zobacz blog o pozycjonowaniu stron internetowych: http://pozycjonowaniestronniemcy.wordpress.com/
Go to the top of the page
+Quote Post
JoShiMa
post 19.08.2008, 13:11:06
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


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.


--------------------
Go to the top of the page
+Quote Post
kszychu
post 19.08.2008, 13:33:05
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


To raczej nadaje się na dział php niż mysql. Przenoszę.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
mariuszzzzzz
post 20.08.2008, 07:41:53
Post #4





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 27.06.2005

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


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"


--------------------
Profesjonalne pozycjonowanie w Niemczech. Polecam i zobacz blog o pozycjonowaniu stron internetowych: http://pozycjonowaniestronniemcy.wordpress.com/
Go to the top of the page
+Quote Post
JoShiMa
post 20.08.2008, 10:04:28
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


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.


--------------------
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: 19.04.2024 - 21:05