Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamiczne menu
Forum PHP.pl > Forum > PHP
Domin
Możecie powiedzieć, że cos takiego było... ale ja niestety nei znalazłem nic co mogło by mi pomóc. Mianowicie chciałbym stworzyć moduł zarządzania menu i opartego na abzie danych. Chodzi mi o coś podobnego jak zarządzanie forami w phpbb, z ta róznicą że zamiast for ma to byc menu... Doszłem do tego momentu, i stanełem...

  1. <div class="title2">Generowanie menu</div>
  2. <div class="text">
  3.  
  4. <?
  5. if (isset($_POST['kat'])) {
  6. $kat_title = escape_data( $_POST['kat_title'] );
  7.  
  8. $query = "INSERT INTO menu_kat ( kat_title ) VALUES ( '$kat_title')";
  9. $result = mysql_query($query);
  10.  echo '<div class="center">Dane dotyczące Menu zostały zaktualizowane<br>
  11.  Kliknij <a href="admin.php?dzial=menu"><b>Tutaj</b></a> aby powrócić do Generowania Menu</div>';
  12.  }else{
  13.  echo '<br>Operacja wykonana błędnie :( ==> Wykonaj ja poprawnie<br>';
  14.  }
  15. }
  16.  
  17.  else if (isset($_POST['new_link'])) {
  18. $podkat_title = escape_data( $_POST['podkat_title'] );
  19. $podkat_url = escape_data( $_POST['podkat_url'] );
  20. $kat_id = escape_data( $_POST['kat_id'] );
  21.  
  22. $query = "INSERT INTO menu_podkat ( kat_id, podkat_title, podkat_url ) VALUES ( '$kat_id', '$podkat_title', '$podkat_url')";
  23. $result = mysql_query($query);
  24.  echo '<div class="center">Dane dotyczące Menu zostały zaktualizowane<br>
  25.  Kliknij <a href="admin.php?dzial=menu"><b>Tutaj</b></a> aby powrócić do Generowania Menu</div>';
  26.  }else{
  27.  echo '<br>Operacja wykonana błędnie :( ==> Wykonaj ja poprawnie<br>';
  28.  }
  29. }
  30.  
  31.  else if (isset($_GET['link'])){
  32.  
  33.  
  34.  
  35. echo '<br><br><form action="admin.php?dzial=menu" method="post">
  36. <ul style="list-style-type: square; margin-left: 0px; margin-top: 0px;">
  37. <input type="hidden" name="kat_id" value="'.$kat_id.'">
  38. <li><input type="text" name="podkat_title" size="20px"> - Nazwa linku</li>
  39. <li><input type="text" name="podkat_url" value="np. news" size="20px"> - Url</li></ul>
  40. <div class="center"><input type="submit" value="Dodaj Link" name="new_link"><br><br></div></form>';
  41.  }
  42.  
  43. else {
  44.  
  45. $query = "SELECT * FROM menu_kat ORDER BY kat_order ASC";
  46. $result = mysql_query($query);
  47. $row = mysql_num_rows ($result);
  48.  
  49. if ($row>0){
  50.  while($row=mysql_fetch_array($result)){
  51.  
  52. echo '<div class="title">'.$row['kat_title'].'</div>
  53. <div class="text"><form action="admin.php?dzial=menu&link&kat_id='.$row['kat_id'].'" method="post">
  54. <div class="center"><input type="submit" value="Nowy Link"></div></form></div>';
  55. }
  56. }
  57.  
  58.  
  59.  
  60. ?>
  61.  
  62.  
  63. <div class="title"><form action="admin.php?dzial=menu" method="post">
  64. <input type="text" name="kat_title" size="20px">&nbsp;<input type="submit" value="Nowa Kategoria" name="kat"></form></div>
  65.  
  66. <? } ?>
  67.  
  68. </div>


- pierwszy problem to dodanie linku do odpowiedniej kategorii... Nie dodaje mi id kategorii do dodawanego linku, choć w linku ten id sie znajduje. Wydaje mi się że to nie duży problem, ale ze sposobów jakie próbowałem żaden nie pomaga... Może ktoś z Was zauważy błąd.

A druga sprawa to już coś poważniejszego. Mianowicie...
Chciałbym zarówno kategorie jaki i pokategorie (linki) móc przenosić wyżej i niżej, tak jak to jest w phpbb... Moze ktoś miał kiedyś już podobny problem...questionmark.gif

Przedstawie strukture bazy danych:

zawartosć tabelki "menu_kat":
- kat_id
- kat_title
- kat_order

zawartość tabelki "menu_podkat"
- podkat_id
- kat_id
- podkat_title
- podkat_url
- podkat_order


PROSZE o POMOC!!!
akubiczek
Wyprintuj sobie swoje query, wtedy będziesz widział czy zmienna $kat_id zawiera odpowiednią wartość.. Jeżeli tak, sprawdź czy struktura tabeli jest poprawna, bo może się okazać np., że pole jest typu numerycznego, a ty próbujesz wkładać jakiegoś stringa..

Generalnie, ludzie, debugowanie nie boli!
TomASS
Czessc smile.gif
Próbowałeś sposobów z tego tematu? (pkt 1 i pkt 2)

Cytat
Chciałbym zarówno kategorie jaki i pokategorie (linki) móc przenosić wyżej i niżej, tak jak to jest w phpbb... Moze ktoś miał kiedyś już podobny problem...questionmark.gif

Zainteresuj się dzrzewkami, wtedy prznoszenie pozycji (linkow) to kewstia zmiany jednego pola w bazie danych.


@akubiczek :
Cytat
Jeżeli tak, sprawdź czy struktura tabeli jest poprawna, bo może się okazać np., że pole jest typu numerycznego, a ty próbujesz wkładać jakiegoś stringa..

Ale wtedy zapytanie wykona się tylko będzie 'przekłamanie' na tym jednym polu, więc raczej to nie jest przyczyna niedodwania rekordu do bazy winksmiley.jpg

Cytat
Wyprintuj sobie swoje query, wtedy będziesz widział czy zmienna $kat_id zawiera odpowiednią wartość

Tak, to jest zdecydowanie dobry pomysł.
Domin
Dzięki za podpowiedź w sprawie dodawania. Wyprintowałem sobie zmienną i nie byłą widoczna, zmieniłem odpowiednio kod aby ja pobierał i teraz jest już OK.

Jeżeli chodzi o przenoszenie wyżej, niżej to chcę to zrobić właśnie za pomocą jednego zapytania. I dlatego tez w bazie mam komórkę kat_order i podkat_order... Będę musiał tylko pomyśleć jakiego zapytania użyć, aby odpowiednio modyfikować wartosci. Np. przy przenoszeniu do góry do linku wyzej (od przenoszonego dodać np. 1) a przenoszonego odjąć 1. Ale najpierw musze się uporać z problemem wstawiania odpowiednich wartości właśnie w tej komórce przy dodawaniu (aby dodany link miał wartość najwyższą w danej kategori przez co bedzie znajdował sie na samym dole).

A Wy jakiego zapytania byście użyli przy zmianie wartosci?questionmark.gif
thornag
Moze jakies auto_increment ?

Teoretycznie mozesz tez sprawdzic wszystkie wartosci wybrac najwieksza a pozniej przy dodawaniu ja zwiekszyc tongue.gif

Ja w sortowaniu aktualnosci zrobilem to tak ze pole z orderem ma domyslna wartosc przy dodawaniu 999 i mam a w zapytaniu mam ORDER BY pozycja asc, dodano desc. Oczywiscie wtedy w tabeli jest tez pole z data dodania rekordu. W tym przypadku jesli nie istawisz pozycji np na 1wsza sortowanie nastepuje po dacie dodania wiec najswierzsza aktualnosc jest dodana na sama gore pod warunkiem ze inna nie ma ustawionego wyzszego priorytetu. Jesli ktos ma bardziej optymalny sposob (bo mam swiadomosc ze ten nie musi byc genialny tongue.gif) to jestem bardzo zainteresowany.
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.