PHP funkcja do budowania linku

0

Witam
Potrzebuję napisać funkcję w vanilla php tak aby generowała mi link w oparciu o parent_id.

Chcę uzyskać:

<a hreff="world-of-warcraft/the-burning-crusade">title</a> <a hreff="world-of-warcraft/the-burning-crusade/kolejna-zagnieżdzenia">title</a>

baza.JPG

3

Pewnie jakoś tak:

$db =  new mysqli($host_nazwa, $uzer_nazwa, $uzer_haslo, $baza_nazwa);
$db -> query("SET NAMES 'utf8'");

$o_odczyt = $db -> query("SELECT * FROM twoja_nazwa_tabeli");
if ($o_odczyt -> num_rows > 0) {
  while($tab_wiersz = $o_odczyt -> fetch_assoc()) {
    echo "<a href='" . $tab_wiersz["slug"]. "'>". $tab_wiersz["title"]. "</a>\n";
  }
}

$db -> close();
0

@Freja Draco: mysqli i polskie nazewnictwo?

4
babel100 napisał(a):

@Freja Draco: mysqli i polskie nazewnictwo?

Jestem Polką i nie zamierzam się tego wstydzić. A już na pewno nie będę cudować z angielskim w prywatnym kodzie.

4

Jak napisała @Freja Draco
jedynie zamiast select * warto od razu podać tylko 2 potrzebne kolumny. Po co zaśmiecać pamięć i robić obciążenie na połączeniu do bazy.

0

Dzięki za odpowiedź jednak nie chodzi mi o wstawienie slugów z bazy do linku tylko zrobine zagnieżdźonych linków tak jak poniżej:

<a href="world-of-warcraft/the-burning-crusade">title</a>
<a href="world-of-warcraft/the-burning-crusade/kolejna-zagnieżdzenia">title</a>
0
nefren napisał(a):

Dzięki za odpowiedź jednak nie chodzi mi o wstawienie slugów z bazy do linku tylko zrobine zagnieżdźonych linków tak jak poniżej:

<a href="world-of-warcraft/the-burning-crusade">title</a>
<a href="world-of-warcraft/the-burning-crusade/kolejna-zagnieżdzenia">title</a>

Co?

0

@Freja Draco: linki.JPG

1

Pisane z palca bez testowania:

$db =  new mysqli($host_nazwa, $uzer_nazwa, $uzer_haslo, $baza_nazwa);
$db -> query("SET NAMES 'utf8'");

$id = 22;
$zapytanie = "SELECT * FROM twoja_nazwa_tabeli WHERE id = '$id' OR parent_id = '$id' ";

$o_odczyt = $db -> query($zapytanie);
if ($o_odczyt -> num_rows > 0) {
  while($tab_wiersz = $o_odczyt -> fetch_assoc()) {
    if ($tab_wiersz["parent_id"] == $id) $link_rodzica = $tab_wiersz["slug"];
    if ($tab_wiersz["id"] == $id) {
      $link_dziecka = $tab_wiersz["slug"];
      $tytul = $tab_wiersz["title"];
    }
    echo "<a href='" . . $link_rodzica . "/" . $link_dziecka . "'>". $tytul . "</a>\n";
  }
}
0

Tutaj najlepiej się posłużyć rekurencją,masz tak tabelę skonstruowaną, że teoretycznie nie ma limitu zagłębienia kategorii.

W takich przypadkach najsensowniejsza jest rekurencja.

Edit:

Dodatkowe rozwiązanie to trzymanie tam pełnej ścieżki w którymś miejscu, którą budujesz przy zmianach w tej tabeli.

Wtedy masz wszystko uproszczone jeżeli chodzi o generowanie linku a potem w drugą stronę - routing.

Przy czym to rozwiązanie nie kłóci się z rekurencją - wręcz odwrotnie, rekurencja tu ładnie współgra.

0

To jest jedna linijka w SQL, a nie tam jakies ify, pętle, to nie te czasy już

1 użytkowników online, w tym zalogowanych: 0, gości: 1