Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Kategorie
-Kiore-
post
Post #1





Goście







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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
marian84
post
Post #2





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


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

(IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
-Kiore-
post
Post #3





Goście







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
Go to the top of the page
+Quote Post
marian84
post
Post #4





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


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ć.
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


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...
Go to the top of the page
+Quote Post
-Kiore-
post
Post #6





Goście







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.
Go to the top of the page
+Quote Post
marian84
post
Post #7





Grupa: Zarejestrowani
Postów: 185
Pomógł: 10
Dołączył: 29.01.2008

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


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"
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 13:04