Wątek przeniesiony 2015-01-03 11:33 z PHP przez dzek69.

Przejście do konkretnego artykułu z bazy danych

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 :)

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

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]
2

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).

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.

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