Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Mod_rewrite jak wyświetlić linki na stronie po zmianie
Forum PHP.pl > Forum > Przedszkole
slewin
Chodzi o to że wyskrobie sobie skrypt typu( taki na szybko pisany)
  1. <?php
  2. if ($_GET['numer']>0) {                
  3.        $wynik = mysql_query (&#092;"SELECT * FROM informacje WHERE numer=\".$_GET['numer'].\" ;\");
  4.        if ($wynik && $rekord = mysql_fetch_assoc ($wynik)) {
  5.          foreach($r as $klucz => &$wartosc) {$wartosc = stripslashes($wartosc);}                    
  6.                                                 print $r['tytul'].&#092;"
  7. &#092;".$r['tresc'];
  8. }} $wynik = mysql_query (&#092;"SELECT * FROM informacje  ;\");
  9. while ($wynik && $rekord = mysql_fetch_array ($wynik)) {
  10.          foreach($r as $klucz => &$wartosc) {$wartosc = stripslashes($wartosc);}
  11. print ''.$r['tytul'].''; // tu wyswieltana jest lista linkow do informacji
  12. }
  13. ?>


i mam plik .htaccess a w nim reguły
Kod
RewriteEngine on
    RewriteRule ^info-numer-(.*).html  /informacje.php?numer=$2[L,NC,NS]


Oto moje pytanie : mam napisać jakiś paser aby podmienial droge linka informacje.php?numer=2 na ^info-numer-2.html czy może jakoś ładować wcześniej linki do tablicy i wtedy jakos podmieniac nazwy questionmark.gif brak koncepcji !

Jak ma się pare stron to ok ,samamu to mozna zmienic ,ale jezeli tych informacji na stronie ma byc 1000 to zmieniac zazwy 1000 linkow to droga ku męce .

Macje jakiś pomysł lub informacje na temat takiego problemu questionmark.gif
(jeszcze raz piszę że jesłi był taki temat to może go nie zauwazyłem bo jest ich naprawdę bardzo duzo tu na forum i z góry przepraszam)


czy serio nikt mi nie odpowie ?
Maxik
Nie $2, a $1 to po pierwsze.

Na początku definiujesz sobie funkcję dla przykładu "ob_handler":
  1. <?php
  2. function ob_handler($buf){
  3. $buf = preg_replace("|informacje.php?numer=([0-9]*)|i", "info-numer-$1.html", $buf);
  4. return $buf;
  5. }
  6. ?>


Potem na początku swojej strony dodajesz ob_start("ob_handler"); , a na końcu ob_end_flush(); zamieni Ci to każde informacje.php?numer=<numer> na info-numer-<numer>.html
slewin
nie bangla ,chyba coś źle robię .
oto cały plik testowy informacje.php
  1. <?php
  2. ob_start("ob_handler");
  3. include('../config.php');
  4. function ob_handler($buf){
  5. $buf = preg_replace("|informacje.php?nr=([0-9]*)|i", "info-nr-$1.html", $buf);
  6. return $buf;
  7. }
  8. if ($_GET['nr']>0) {                 // wyświetlamy pojedynczego newsa
  9.        $wynik = mysql_query (&#092;"SELECT * FROM informacje WHERE nr=\".$_GET['nr'].\" ;\");
  10.        if ($wynik && $r = mysql_fetch_assoc ($wynik)) {
  11.          foreach($r as $klucz => &$wartosc) {$wartosc = stripslashes($wartosc);}                  
  12.                                                 print $r['tresc'];
  13. }
  14. }
  15. $wynik = mysql_query (&#092;"SELECT * FROM informacje \".
  16. while ($wynik && $r = mysql_fetch_array ($wynik)) {
  17.          foreach($r as $klucz => &$wartosc) {$wartosc = stripslashes($wartosc);}
  18. print "<A HREF=\"informacje.php?nr=".$r['nr']."\"> <h1>".$r['tytul']."</h1>";// index informacji
  19. }
  20. ?>

poprawiłem też plik .htaccess
Kod
RewriteEngine on
      RewriteRule ^info-nr-(.*).html  /informacje.php?nr=$1 [L,NC,NS]


Nie działa ta funkcja ;( może ją miałem gdzie indziej umieścić questionmark.gif [/url]
Maxik
Umieść ją przed ob_start winksmiley.jpg
slewin
też nie działa sadsmiley02.gif
-----------------------

A jeszcze mam pytanie tego typu . Czy zamiast $_GET['nr'] pobierac numer mogę pobierać nazwę lub tytul informacji questionmark.gif
próbowałem zrobić pobobnie jak z numerem ( czyli pokaz informacje o numerze jakims tam po kliknieciu w link o numerze jakims tam ) ale po kliknieciu w link ciagle bylem na tej samej stronie . Więc nie wiem jak to zrobic ? Jakieś sugestię ?
erix
Cytat
Nie działa ta funkcja ;( może ją miałem gdzie indziej umieścić

Kropka w Twoim wyrażeniu oznacza dowolny znak, a nie kropkę. tongue.gif backslashem ją poprzedź.


Cytat
ale po kliknieciu w link ciagle bylem na tej samej stronie . Więc nie wiem jak to zrobic ? Jakieś sugestię ?

A Waść jakiegokolwiek tutoriala o mod_rewrite przeczytał?
slewin
skopiowalem funkcje tak jak ją Maxik napisał . A poźniej testowalem ,wstawialem backslesha i usuwalem bo nie dzialala kombinowalem teraz juz wiem po co ten slesh byl wstawielm go ponownie winksmiley.jpg) .


czytalem tego o tu smile.gif http://corz.org/serv/tricks/htaccess2.php

Wracajac do mojego drugiego zapytania to chciałbym uzyskac efekt taki informacje?tytul=jestem-gosc-co-zlamal-kosc . Przykład
Kod
if ($_GET['tytul']) {                 // wyświetlamy pojedyncza informacje
        $wynik = mysql_query ("SELECT * FROM informacje WHERE tytul=\".$_GET['tytyl'].\" ");
        if ($wynik && $r = mysql_fetch_assoc ($wynik)) {
          foreach($r as $klucz => &$wartosc) {$wartosc = stripslashes($wartosc);}                  
                                                 print $r['tresc'];
}
}
$wynik = mysql_query (\"SELECT * FROM informacje \");
while ($wynik && $r = mysql_fetch_array ($wynik)) {
          foreach($r as $klucz => &$wartosc) {$wartosc = stripslashes($wartosc);}
print "<A HREF=\"informacje.php?tytul=".$r['tytul']."\"> <h1>".$r['tytul']."</h1>";//
a w bazie mam tytuly z myslnikami oraz bez polskich znakow to taki skrypcik nie dziala .
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.