Wątek przeniesiony 2015-01-03 11:33 z przez dzek69. Powód: Wątek dotyczący podstaw

Przejście do konkretnego artykułu z bazy danych

Odpowiedz Nowy wątek
2015-01-03 11:21
Krontar
0

Witajcie, mam taki problem ze nie dziala mi przejscie do artykulu z bazy danych. Wyglada to tak: mam 3 artykulu na stronie, ktore sa w bazie, chce aby klikajac na tytul artykulu przechodzic do niego. Wyglada to tak :

htaccess:

RewriteRule ^([a-zA-Z-_0-9_\-]+)/?$ artykul_strona.php?artykul_url=$1 [L]

strona:index.php

echo "<a href=\"".$row['artykul_url']."\"style=\"text-decoration:none; ; ;\"  '>" ; echo $row['Tytul_Artykulu']; echo "</a>";

strona dynamiczna dla kadego artykulu:

@$artykul_url = (string) $_GET['artykul_url'];   // BARDZO WAZNA ZMIENNA 
//$query=$mysqli->query("select * from artykuly where artykul_url = '@$artykul_url'");                   
$Q="select * from artykuly where artykul_url = '$artykul_url'";
    // echo "<div>[$Q]</div></br>";
             $query=$mysqli->query($Q);
 
    while($row=$query->fetch_array(MYSQLI_ASSOC))
{}

z góry wielkie dzieki :)

edytowany 2x, ostatnio: furious programming, 2016-12-13 18:26

Pozostało 580 znaków

2015-01-03 11:26
1

i z czym konkretnie masz problem? kod na pierwszy rzut oka wygląda ok.

a poza tym to załóż sobie konto, bo poprawianie Twoich postów nie było przyjemnoscią - i przy okazji - masz opcję podglądu posta przed wysłaniem - też fajna rzecz

edit: i jeszcze jedno: mieszasz kod php z html, i jeszcze z cssami - zero czytelności.
w systemie szablonów Smarty byś zrobił jakoś tak:

// index.php
$rows = query->fetch_all(MYSQLI_ASSOC);
$Smarty->assign('rows', $rows);
$Smarty->display('artykuly.tpl');
// artykuly.tpl
<div class=artykuly>
{foreach $rows as $row}
  <a href="{$row.artykul_url}">{$row.Tytul_Artykulu}</a>
{/foreach}
</div>

i kawałek kodu css

.artykuly a { text-decoration: none; }

prawda, że czytelniej? brak miliona cudzysłowiów, szczególnie escapeowanych \", poleceń echo, niepotrzebnego style - dodatkowo osobno masz kod html i wyświetlasz zebrane dane, a osobno zbierasz je w php


edytowany 2x, ostatnio: dzek69, 2015-01-03 11:33

Pozostało 580 znaków

2015-01-03 11:28
0

Problem jest taki ze jak klikam na ten title, to htaccess zmienia sie poprawnie, ale nie wczytuje sie wgl strona dynamiczna dla artykulu < ta gdzie jest

 GET['artykul_url']; 

Ok, udalo mi sie dojsc do tej dynamicznej strony (co mam na mysli: klikam w artykul i przechodze do niego, wszystko pobierane z bazy), ale tylko wtedy gdy link wyglada tak:

echo "<a href='artykul_strona.php?artykul_url=$row[artykul_url]' title='Przejdź '>" ;  

a "adres strroy wyglada tak":

/artykul_strona.php?artykul_url=Witam_na_poczatku

ps htaccess z gory nie zmieniony.

jakies sugetsie?

zauwazylem kolejna rzecz, mam 2 "htaccessy" i w zaleznosci ktory jest wyzej, to ten dziala. Jeden jest do tych artykulow, drugi do obrazkow, jezeli htacces obrazkow jest na gorze to jak klikam w artykul wchodze w strone obrazkow, to samo dziala w 2ga strone

htacces caly:

 RewriteEngine ON
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z-_0-9_\-]+)/?$ artykul_strona.php?artykul_url=$1 
RewriteRule ^([a-zA-Z-_0-9_\-]+)/?$ definicje_strona.php?title_url=$1 [L]
używaj opcji Edytuj, gdy coś dodajesz. - dzek69 2015-01-03 13:18

Pozostało 580 znaków

2015-01-03 13:21

Nie masz dwóch htaccessów, tylko co najwyżej dwie reguły w pliku htaccess.

Z tym, że obie reguły są takie same, więc nic dziwnego, że jedna nadpisuje drugą. Musisz jakoś rozróżniać dane podstrony, czyli np.:
http://domena.pl/Artykul/TUTAJ_NAZWA_ARTYKULU
i
http://domena.pl/Definicje/TUTAJ_NAZWA

Nie możesz mieć tej samej reguły do dwóch różnych plików, to chyba logiczne.

Pierwsze doszlifuj podstawy samego PHP może, zanim zabierzesz się za próby zrozumienia mechanizmu przepisywania linków (rewrite).


Pozostało 580 znaków

2015-01-03 14:11
0

ok dzieki za odp. dlugi czas bylem nieswiadomy z tymi regułami. Szlifuje, szlifuje, a człowiek na błedach sie uczy.

Pozdrawiam temat do zamkniecia.

edytowany 1x, ostatnio: Dissio, 2015-01-03 14:12
klikając w tę fajkę: http://i.imgur.com/f0ZS2L0.png przy poście rozwiązującym Twój problem - oznaczasz temat jako rozwiązany/zamknięty/zakończony - dzek69 2015-01-03 14:21
@dzek69 - @Dissio założył wątek z anonima, więc nie zaakceptuje posta; Więc zrobię to ja :) - furious programming 2015-01-04 15:17

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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