Pagina 1 din 1
Problema link
Scris: Dum Sep 12, 2010
de marianchucky
Salut!
Am o mare problema cu mod_rewrite.
Eu am un site in care afisez cateva titluri de stiri sub forma de link ce ma trimit la o pagina articol.php unde este stirea completa.
Cod: Selectaţi tot
while( $row = mysql_fetch_assoc($result))
{
echo '<li><a href=\'articol.php?id='.$row['id'].'&titlu='.$row['url'].'\'><b>'.$row['titlu'].'</b></a></li>'; }
$row['url'] = titlul prelucrat la introducerea stirii, avand in loc de spatii caracterul "-" (ex: titlu-prelucrat-la-introducere).
In pagina articol.php am urmatorul cod
Cod: Selectaţi tot
if ( isset($_GET['id']) ) {
$id = intval($_GET['id']);
} else {
$id = 0;
echo 'Stirile nu au putut fi preluate din baza de date.';
}
$query = 'SELECT * FROM stiri WHERE id='.$id.'';
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_assoc($result)){
//pg web...
}
Afisarea stirilor in intregime si tot procesul merge bine, dar la pg unde este stirea completa am linkul: site/articol.php?id=**&titlu=titlul-stirii-respective .
Am incercat multe metode pt a rescrie url-ul cu rewrite rule in .htaccess. Am mai citit pe alte forumuri ca problema ar putea fi legata si de server.
Nu stiu ce sa cred..
Daca ma ajuta cineva i-as fi foarte recunoscator!
Multumesc anticipat!
Problema link
Scris: Lun Sep 13, 2010
de MarPlo
Nu prea inteleg care este exact problema, faptul ca in url sunt adaugate, la "...id=**..." cele doua caractere (*) in loc de numar?
Daca e asta, atunci nu are legatura cu .htaccess si mod-rewrite, ci cu mysql si php. Si anume, cum apar in tabelul mysql datele adaugate, cum preia si returneaza php datele. Acele caractere asterics, daca nu apar si in mysql, cel mai probabil sunt adaugate de php, ori din cauza formatului charset al tabelului ori ceva de la server. Trebuie sa testezi ce returneaza separat "$row['id'].
Daca problema e alta, explica exact care anume e.
Problema link
Scris: Lun Sep 13, 2010
de marianchucky
Pana la urma ai dreptate, problema nu este legata de mod_rewrite.
Sa o iau cu inceputul:
Eu cand introduc in bd o stire, introduc idul, titlul, stirea completa si intr-un camp url introduc titlul prelucrat astfel incat in loc de spatii am "-", iar la sfarsit '_id'. De ex: titlu-separat-prin-cratima_12 .
Cu ajutorul unui fisier afisare.php inclus in pagina de net, afisez linkurile stirilor :
Cod: Selectaţi tot
..
while( $row = mysql_fetch_assoc($result))
{ echo '<li><a href=\'articol.php?id='.$row['id'].'\' title="'.$row['titlu'].'"><b>'.$row['titlu'].'</b></a></li>';
}
In pagina articol.php am introdus codul:
Cod: Selectaţi tot
...
if ( isset($_GET['id']) ) {
$id = intval($_GET['id']);
} else {
$id = 0;
echo 'Stirea nu au putut fi preluata din baza de date.';
}
$query = 'SELECT * FROM stiri WHERE id='.$id.'';
$result = mysql_query($query) or die(mysql_error());
...
Daca dau click pe link-ul unei stiri afisate cu afisare.php ma duce, de ex, la pagina site.ro/articol.php?id=12 . Eu as vrea sa pot sa fac ca acest link sa arate ceva de genul: site.ro/articol/titlu-separat-prin-cratima_12 (valoarea din campul url).
Din cate am inteles de la altii, ar trebui schimbat codul din articol.php astfel incat sa ma folosesc de idul de la sfarsitul valorii din campul url (idul stirii). Nu stiu cum sa fac asta si speram sa ma ajute cineva sa inteleg
.
Multumesc anticipat!
Problema link
Scris: Lun Sep 13, 2010
de MarPlo
Acum am inteles, problema tine si de php si de mod-rewrite.
in .htaccess, pt. Mod-rewrite, ar trebui trecut codul:
Cod: Selectaţi tot
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^articol/([a-zA-Z0-9-]+)_([0-9]+)$ articol.php?id=$2 [NC,L]
Iar in "afisare.php", link-ul sa fie facut asa:
Cod: Selectaţi tot
...
while( $row = mysql_fetch_assoc($result))
{ echo '<li><a href="articol/'.$row['titlu'].'_'.$row['id'].'" title="'.$row['titlu'].'"><b>'.$row['titlu'].'</b></a></li>';
}
-
In "$row['titlu']" nu trebuie sa fie caracterul "_", acesta fiind folosit doar pt. separare de "id", si prin asta va fi recunoscuta in mod-rewrite partea din url pt 'id'
Problema link
Scris: Lun Sep 13, 2010
de marianchucky
Linkul arata exact cum am vrut si ma duce la pagina cu stirea completa dar a mai aparut o problema...
Din cate am vazut parca nu se mai respecta CSS-ul. (toate informatiile sunt insirate de sus in jos fara nici un aspect). La problema asta chiar nu ii gasesc rezolvare..
Problema link
Scris: Mar Sep 14, 2010
de MarPlo
CSS-ul nu se mai respecta fiindca ai adaugat un director "virtual" in link.
Inainte era "site.ro/pagina" si pagina lua css-ul relativ la pozitia ei in link, acum, fiind "site.ro/articol/pagina", a aparut 'articol/' ca director, dar in pagina calea catre CSS nu e modiicata ca sa tina cont de asta.
Solutia:
- modifici in codul HTML adresa de citire CSS cu un director inapoi "../"
- scrii calea de citire pt. CSS cu adresa absoluta, completa, adica http:// www. site.ro/cale_css
Problema link
Scris: Mar Sep 14, 2010
de marianchucky
Merge foarte bine acum.
Multumesc frumos pt ajutor si numai bine!