PHP funkcja do budowania linku

PHP funkcja do budowania linku
NE
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 3 lata
  • Postów:41
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

Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
3

Pewnie jakoś tak:

Kopiuj
$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();

B1
  • Rejestracja:około 4 lata
  • Ostatnio:prawie 4 lata
  • Postów:51
0

@Freja Draco: mysqli i polskie nazewnictwo?

Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
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.


jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Postów:3510
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.

NE
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 3 lata
  • Postów:41
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:

Kopiuj
<a href="world-of-warcraft/the-burning-crusade">title</a>
<a href="world-of-warcraft/the-burning-crusade/kolejna-zagnieżdzenia">title</a>
Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
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:

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

Co?


NE
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 3 lata
  • Postów:41
0

@Freja Draco: linki.JPG

Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
1

Pisane z palca bez testowania:

Kopiuj
$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";
  }
}

TR
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Lokalizacja:700m n.p.m.
  • Postów:677
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.


DRY > SOLID (nie bierz tego zbyt poważnie)
edytowany 4x, ostatnio: TomRZ
masterc
  • Rejestracja:około 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:425
0

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


Wymyśliłem, że nie chce mi się.
hzmzp
A jak byś to zrobił w jednym zapytaniu?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.