Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Kategorie
Forum PHP.pl > Forum > Przedszkole
Kiore
Witam. Próbuję ostatnio zrobić system kategorii, tak aby do każdej można było dodawać artykuły. Skrypty wyglądają tak:

form.html
Cytat
<h1> Dodaj kategorię</h1>
<form action="dodart.php" method="post">
Tytuł<input type="text" name="nazwa"><br>
<input type=submit value="Wyślij">
<input type=reset><br>



dodart.php

Cytat
<?php
$uchwyt=mysqli_connect('localhost','root','')
or die('Nieudane połączenie z bazą danych...');


$nazwa=$_POST['nazwa'];

mysqli_select_db($uchwyt, "strona");

mysqli_query($uchwyt, "insert into category values('', '$nazwa')") or die(mysqli_error($uchwyt));
?>


wyborkat.php

Cytat
<?php
$uchwyt=mysqli_connect('localhost','root','')
or die('Nieudane połączenie z bazą danych...');
mysqli_select_db($uchwyt, "strona");
$query=mysqli_query($uchwyt, 'SELECT * FROM category ORDER BY id desc');

while($wiersz=mysqli_fetch_array($query))
{
$id=$wiersz['id'];
$nazwa=$wiersz['nazwa'];
$tab[$id] = $nazwa;
echo "<a href='kat.php'>$nazwa</a>";
}
?>


kat.php
(ma wyświetlać artykuły z kategorii)

Cytat
<?php
$uchwyt = mysqli_connect('localhost', 'root' , '');
mysqli_select_db($uchwyt, "strona");
$query = mysqli_query($uchwyt, "select * from category order by id desc limit 0,3");
$rekord = mysqli_fetch_array($query);
$nazwa = $rekord['nazwa'];
echo "$nazwa"
?>


Chciałbym wiedzieć, jak zrobić, aby $nazwa = nazwa wybranej wcześniej kategorii.

Poza tym, chciałbym zrobić później system artykułów z podziałem do odpowiednich kategorii. Tutaj też prosiłbym o pomoc (nie w formie kodu, tylko wytłumaczenia)

Z góry dziękuję za pomoc i przepraszam za swoje błędy
Kiore
marian84
Cytat(Kiore @ 11.09.2008, 20:12:06 ) *
Chciałbym wiedzieć, jak zrobić, aby $nazwa = nazwa wybranej wcześniej kategorii.

Poza tym, chciałbym zrobić później system artykułów z podziałem do odpowiednich kategorii. Tutaj też prosiłbym o pomoc (nie w formie kodu, tylko wytłumaczenia)

Z góry dziękuję za pomoc i przepraszam za swoje błędy
Kiore

Chodzi o utworzenie struktury drzewa:

+Kategoria 1
+podkategoria1.1
+podkategoria1.2
+podkategoria1.3
+Kategoria 2
+podkategoria2.1
+podkategoria2.2

questionmark.gif

Jeśli tak to przy dodawaniu kategorii musisz wybrać kategorie nadrzedną, jeśli glowna to zwracasz jako glowna jesli pod to zwracasz jako pod
Kiore
Nie. Chcę mieć po lewej stronie swojej witryny menu, w którym wyświetlają się kategorię. Po kliknięciu na kategorię, chciałbym, aby było widać artykuły dodane do tej kategorii.

Wydaje mi się, że do tego muszę użyć selecta i zrobić dodatkowe pole w tabeli artykułów, w którym zapisywane będą id kategorii, do której ma być przypisany dany artykuł, a potem za pomocą ifa (?) sprawdzane, czy się zgadzają.

Nie wiem, jak wybierać, że chcę pobrać i ustawić w $nazwa tytuł kategorii, którą wybrałem w wcześniejszym polu.

Czekam na dalszą pomoc
marian84
Dodaj do bazy jeszcze jedną kolumne o nazwie np. parent

SELECT:

Kod
<?php
  $pytam = "SELECT * FROM category WHERE ORDER BY id";
   $wynik = mysql_query($pytam);

          echo "<select name='parent'>";
          echo "<option value="0">** dział główny **</option>";
           while($wiersz = mysql_fetch_array($wynik))
              {
                  $sid = $wiersz["id"];
              $nazwa = $wiersz["nazwa"];

              echo "<option value=\"$sid\">$nazwa</option>";
          }
          echo "</select>";
?>


POwinno grać.
Pilsener
Ja polecam zrobić taką tabelę kategorii (zgodnie z sugestią jednego z forumowiczów, niestety nie mam linku):
ID||Nazwa||Rodzic||Sciezka||Glebokosc

I jak mamy np filmy z podziałem na sensacyjne i obyczajowe, a obyczajowe dzielą się na nudne i ciekawe:
1||Filmy||-||-||0
2||Sensacyjne||1||1.2||1
3||Obyczajowe||1||1.3||1
4||Nudne||3||1.3.4||2
5||Ciekawe||3||1.3.5||2

Pola ścieżka i głębokość mają charakter pomocniczy - dzięki nim korzystanie z bazy jest dużo prostsze, bo możemy łatwo poruszać się po strukturze "drzewa". Gdy chcemy np. wyświetlić np. strukturę kategorii "obyczajowe" to lecimy LIKE po scieżce tam, gdzie występuje ID tej kategorii - czyli 3. Jedno zapytanie zamiast nie wiadomo ilu...
Kiore
Cytat
<?php
$uchwyt = mysqli_connect('localhost', 'root' , '');
mysqli_select_db($uchwyt, "strona");
$query = mysqli_query($uchwyt, "select * from category order by id desc limit 0,3");
$rekord = mysqli_fetch_array($query);
$nazwa = $rekord['nazwa'];
echo "$nazwa"
?>


Chciałbym jeszcze wiedzieć, jak zrobić, aby $nazwa była równa nazwie wybranej wcześniej kategorii. Próbowałem za pomocą $_REQUEST ale nie zadziałało.
marian84
Cytat(Kiore @ 12.09.2008, 17:42:10 ) *
Chciałbym jeszcze wiedzieć, jak zrobić, aby $nazwa była równa nazwie wybranej wcześniej kategorii. Próbowałem za pomocą $_REQUEST ale nie zadziałało.


Nie wiem czy dobrze rozumiem, ale wydaje mi się że musisz odebraz id kategorii, której nazwe chcesz wyświetlić...
Spróbuj tak:

W linku przekaż zmienną id

www.adres.pl/kat.php?id=1

Kod
$uchwyt = mysqli_connect('localhost', 'root' , '');
mysqli_select_db($uchwyt, "strona");

$ids=$_GET['id'];

$query = mysqli_query($uchwyt, "select * from category where id=$ids order by id desc limit 0,3");
$rekord = mysqli_fetch_array($query);
$nazwa = $rekord['nazwa'];
echo "$nazwa"
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.