Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapisywanie nowych ustawień w tabeli [CMS]
Forum PHP.pl > Forum > Przedszkole
KryQ
Jako że jestem nowiuśki na forum chciałbym palnąc na dzień dobry dziwne pytanko.
Otóż mam utworzoną tabele settings z kolumniami:

id(klucz, auto cos tam) key (nazwa ustawienia) key (wartość opcji)

otóż chciałbym sie dowiedzieć jak napisać skrypt ustawień w php smile.gif
tak żeby chapało wszystkie zmienione ustawienia naraz przy wysłaniu formularza
jeśli to potrzebne używam adoDB
Jeśli czegoś nie zrozumieliście dawajcie pytania biggrin.gif
Z góry dzięki za pomoc

PS: nie oczekuje gotowca tylko podpowiedzi!
Lars_18
Wystarczy, że po odebraniu formularza pobierzesz z bazy wartość wszystkich ustawień, a następnie zrobisz pętlę i sprawdzisz warunkiem czy zgadzają się dane z konkretnego wiersza i $_POST. Jeżeli się nie zgadzają wtedy wysyłasz zapytanie aktualizujące obecne dane. Nie ma w tym nic trudnego winksmiley.jpg.
KryQ
hah dlatego pytanie znalazło sie w dziale przedszkole biggrin.gif
hmmm nawet to co napisałeś ciężko mi przyswoić smile.gif

  1. if(empty($a) && $_POST['step']=='') {
  2. $settings = $db->Execute("SELECT * FROM `settings`") or die;
  3. echo "<form action=\"adm.html\" method=\"post\">
  4. <input type=\"hidden\" name=\"step\" value=\"next\" />
  5. <input type=\"hidden\" name=\"count\" value=\"".$settings->RowCount()."\" />
  6. <table>";
  7. while(!$settings -> EOF)
  8. for ($i=0, $max=$settings->RowCount(); $i < $max; $i++) {
  9. echo "<tr><td>".$settings->fields['name'].":</td><td><input type=\"hidden\" name=\"id$i\" value=\"".$settings->fields['id']."\" /><input type=\"text\" name=\"value$i\" value=\"".$settings->fields['value']."\" /></td></tr>";
  10. $settings->MoveNext();
  11. }
  12. echo "</table>
  13. <input type=\"submit\" value=\"Submit\" />
  14. </form>";
  15. }
  16. if ($_POST['step']=='next') {
  17. for ($i=0, $max=$_POST['count']; $i < $max; $i++) {
  18. $value = "value".$i;
  19. $ids = "id".$i;
  20. $db->execute("UPDATE settings SET value='".$_POST[$value]."' WHERE id = '".$_POST[$ids]."'") or die('Błąd zapytania: '.mysql_error());
  21. }
  22. echo "<div class='success'>Ustawienia zostały zmienione</div>";
  23. }


załatwiłem to w ten sposób jednak kod nie wydaje mi sie jakoś optymalny smile.gif
Macie może jeszcze jakieś pomysły jak to prościej załatwić?
maryaan
Przyjąłeś strategię, że każda "przysłana" wartość jest aktualizowana w bazie. Alternatywne rozwiązanie zaproponował powyżej Kolega, tzn przed aktualizacją danych pobierasz z bazy tabelę ustawień i sprawdzasz, czy nowa wartość jest różna od starej. Jeśli jest różna - aktualizacja, jeśli są takie same - pomijasz dany element.
KryQ
  1. if(empty($a) && empty($_POST['step'])) {
  2. $settings = $db->Execute("SELECT * FROM `settings`") or die;
  3. echo "<form action=\"adm.html\" method=\"post\">
  4. <input type=\"hidden\" name=\"step\" value=\"next\" />
  5. <input type=\"hidden\" name=\"count\" value=\"".$settings->RowCount()."\" />
  6. <table>";
  7. while(!$settings -> EOF)
  8. for ($i=0, $max=$settings->RowCount(); $i < $max; $i++) {
  9. echo "<tr><td>".$settings->fields['name'].":</td><td><input type=\"hidden\" name=\"id$i\" value=\"".$settings->fields['id']."\" /><input type=\"text\" name=\"value$i\" value=\"".$settings->fields['value']."\" /></td></tr>";
  10. $settings->MoveNext();
  11. }
  12. echo "</table>
  13. <input type=\"submit\" value=\"Submit\" />
  14. </form>";
  15. }
  16. if ($_POST['step']=='next') {
  17. for ($i=0, $max=$_POST['count']; $i < $max; $i++) {
  18. $value = "value".$i;
  19. $ids = "id".$i;
  20. $settings = $db->Execute("SELECT * FROM `settings` WHERE id = '".$_POST[$ids]."'") or die;
  21. if ($_POST[$value] != $settings->fields['value']){
  22. $db->execute("UPDATE settings SET value='".$_POST[$value]."' WHERE id = '".$_POST[$ids]."'") or die('Błąd zapytania: '.mysql_error());
  23. }
  24. }
  25. echo "<div class='success'>Ustawienia zostały zmienione</div>";
  26. }


Dla leniuchów panel admina smile.gif

Czyli już lepiej sie nie da? biggrin.gif
(nie chodzi mi tu o zabezpieczanie formularzy of course smile.gif

Jeszcze szybkie pytanko czy w ado jest funkcja zliczania wszystkich zapytań?
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.