Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyświetlanie dwuwyrazowe
Forum PHP.pl > Forum > Przedszkole
Kaarpiik
  1. if($_GET['users'] == 'pokaz'){
  2. baza();
  3. $query = "SELECT * FROM users ORDER BY userid";
  4. $result = mysql_query($query);
  5.  
  6. while($row=mysql_fetch_array($result)){
  7. echo '<a href="/pokoj.php?pokoj=wyswietl&login='.$row['login'].'">'.$row['login'].'</a>';
  8. echo "<br>";
  9. }
  10. }

Skrypt ten pobiera informacje z bazy danych i wyświetla zarejestrowanych użytkowników tworząc jednocześnie link do jego pokoju (panelu usera)

  1. if($_GET['pokoj'] == 'wyswietl' && ($_GET['login'])){
  2. baza();
  3. $login = $_GET['login'];
  4. $query = "SELECT * FROM users WHERE login = '$login'";
  5. $result = mysql_query($query);
  6. echo $login;

Ten natomiast wyświetla pokój tego usera. Wszystko jest pięknie i ładnie. Wyświetla także dwuwyrazowe nazwy użytkowników. W pliku .htaccess mam następujący wpis:

RewriteRule ^pokoj/([a-zA-Z]+)$ pokoj.php?pokoj=wyswietl&login=$1 [L]

Zatem url powinien wyglądać tak: localhost/pokoj/login

zamieniam w pierwszym skrypcie

  1. echo '<a href="/pokoj.php?pokoj=wyswietl&login='.$row['login'].'">'.$row['login'].'</a>';

na
  1. echo '<a href="/pokoj/'.$row['login'].'">'.$row['login'].'</a>';


I tutaj się pojawia problem. Nie wyświetla mi loginu gdy on składa się z dwóch wyrazów. Próbowałem również z urlencode:

  1. echo '<a href="/pokoj.php?pokoj=wyswietl&login='.urlencode($row['login']).'">'.$row['login'].'</a>';

RewriteRule ^pokoj/([a-zA-Z]+)$ pokoj.php?pokoj=wyswietl&login=urlencode($1) [L]

Niestety nie pomaga. Co może być przyczyną i jakie jest rozwiązanie?

Odświeżam ponieważ nie mogę ruszyć z miejsca smile.gif

Cała noc bez odpowiedzi... Odświeżam
nospor
Cytat
Cała noc bez odpowiedzi...
A ty w nocy spales czy siedziales całą noc przed kompem?

([a-zA-Z]+) - twoje wyrażenie regularne nie łyka spacji. Trudno więc by lykało login dwuwyrazowy. Chyba wiesz jak do tego dodac spacje?
Kaarpiik
Cytat(nospor @ 29.04.2010, 08:48:50 ) *
A ty w nocy spales czy siedziales całą noc przed kompem?


Nie, poprostu całą noc nikt odpowiedzi nie dał smile.gif

Cytat(nospor @ 29.04.2010, 08:48:50 ) *
([a-zA-Z]+) - twoje wyrażenie regularne nie łyka spacji. Trudno więc by lykało login dwuwyrazowy. Chyba wiesz jak do tego dodac spacje?


Właśnie o tym czytam ale nie mogę znaleść rozwiązania.
nospor
Cytat
Nie, poprostu całą noc nikt odpowiedzi nie da
No wlasnie. Ty spales to i wiekszosc ludzi spala. trudno wiec by dali ci odpowiedź przez noc - do tego zmierzałem.

Jak juz mowilem - masz dodac spacje.
([a-zA-Z ]+)
Widzisz, dodałem spację. Tyle smile.gif

ps: jakbys nie widzial: spacja jest między Z a ]
Kaarpiik
RewriteRule ^pokoj/([a-zA-Z]+)$ pokoj.php?pokoj=wyswietl&login=$1 [L]

Próbuje na wszystkie sposoby
( [a-zA-Z]+)
([ a-zA-Z]+)
([a-z A-Z]+)
([a-zA-Z] +)

Błąd zawsze ten sam: "Wystąpił wewnętrzny błąd serwera. Prosimy później spróbować ponownie."

p.s. tak jak Ty napisałeś też próbowałem smile.gif

zmieniłem kod na:
  1. while($row=mysql_fetch_array($result)){
  2. $str = strtolower($row['login']);
  3. echo '<a href="/pokoj/'.$str.'">'.$row['login'].'</a>';
  4. echo "<br>";
  5. }


Teraz w linku wyświetla tylko małe litery. Znów kombinowałem w htaccess ale bez rezultatów

RewriteRule ^pokoj/([a-z ]+)$ pokoj.php?pokoj=wyswietl&login=$1 [L]

Jednak wolałbym żeby były duże litery.
nospor
([a-zA-Z\s]+)
Kaarpiik
Dziękuje smile.gif
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.