PDA

View Full Version : سوال: خواند از دیتابیس البته با url



yeksib
جمعه 06 بهمن 1391, 13:14 عصر
سلام من میخوام وقتی کاربر به آدرس زیر رفت به ترتیب

http://localhost/انقلاب/تهران/ایران

اول بیاد در دیتابیس ایران رو بخونه و همه شهر هاشو نشون بده بعدش بیاد شهر تهران و مناطقش رو نشون بده و بعدش بیاد منطقه خواسته شده رو نشون بده
البته این کشور ها و شهر ها همشون متغییر هستند؟

$ M 3 H R D A D $
جمعه 06 بهمن 1391, 13:40 عصر
htaccess
چند تا پست پایین تر آموزش داده شده

yeksib
جمعه 06 بهمن 1391, 13:43 عصر
یک لینکی چیزی میدادی!

yeksib
جمعه 06 بهمن 1391, 18:36 عصر
من توی سایت پیدا نکردم ، من با htaccess این کار رو کردم و هر رشته ای که کاربر توی url وارد میکنه میگیرم و میریزم توی یک آرایه ولی مشکل من اینه که نمیدونم چه طور باید این آرایه را به کوئری بفرستم برای select کردنش
دوستان کسی میتون کمک کنه؟
مثلا من رشته زیر رو از url میگیرم !

http://localhost/انقلاب/تهران/ایران
ایران
تهران
انقلاب
حالا چطوری طوری کوئری بزنم که اول ایران رو بخونه بعد تهران و بعد هم انقلاب ؟

MostafaEs3
شنبه 07 بهمن 1391, 21:15 عصر
شما اول با htaccess باید کاری کنی که مقدار اول روی یک چیزی ارسال بشه و مقدار دوم روی یک چیز دیگه ! اگه هم از معماری سه (یا چهار) لایه استفاده میکنی بطور معمول از این استفاده میشه و هرچی بعد از خود آدرس اصلی باشه توی _route_ ارسال میشه و توی یک کلاس جدا آدرس explode میشه و بعد هم شناسایی فرزند و .....


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]


اما برای مثالی که مثلا (ایران) توی یک متد و (تهران) توی یک متد دیگه ارسال بشه باید اینجوری عمل کنی :


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^locations/([^/]*)/([^/]*)/*$ index.php?country=$1&city=$2 [QSA,NC,L]

توی این مثال اگر شما این آدرس رو فراخوانی کنی :

http://localhost/locations/ایران/تهران
عملا این آدرس لود میشه :

http://localhost/index.php?country=ایران&city=تهران

yeksib
شنبه 07 بهمن 1391, 22:31 عصر
خیلی عالی بود ولی خواهش میکنم بیشتر توضیح بدید!
مثلا من میخواهم بجای locations بتونم چیز دیگه ای هم اضافه کنم مثلا group یعنی مثل فیس بوک که برای ما پیج شخصی ساخته میشه آدرسش هم آخر url اضافه بشه
mysite.com/alireza به این شکل؟
یعنی اگه آدرس پیج آخر صفحه بود alireza، بره توی پیج ها بگرده و اگه location پر شده بود بره توی شهر ها؟!

MostafaEs3
شنبه 07 بهمن 1391, 22:38 عصر
خیلی عالی بود ولی خواهش میکنم بیشتر توضیح بدید!
مثلا من میخواهم بجای locations بتونم چیز دیگه ای هم اضافه کنم مثلا group یعنی مثل فیس بوک که برای ما پیج شخصی ساخته میشه آدرسش هم آخر url اضافه بشه
mysite.com/alireza به این شکل؟
یعنی اگه آدرس پیج آخر صفحه بود alireza، بره توی پیج ها بگرده و اگه location پر شده بود بره توی شهر ها؟!


برای این مورد چندین راه وجود داره !! یکی گرفتن کلمه کلیدی از کاربران و صفحات و ... هست که توی یک جدول جدا ذخیره میشه و بعد از ارسال پارامتر اول بعد از آدرس ، یک کوئری گرفته میشه - همزمان با کلمه کلیدی پیدا شده نوع اون هم برمیگرده مثلا میگه alireza جزو کاربران هست

ولی معمولا فقط برای یک مورد اینکارو انجام میدن که با بقیه موارد اختلال پیدا نکنه - راحتترین راه همینه که پارامتر اول رو برای مشخص کردن نوع صفحه یا هدف قرار بدید که مثلا من اینجا location گذاشتم - شما میتونید یکی دیگه هم برای group یا هرچیز دیگه ای قرار بدید

مثال ::


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^locations/([^/]*)/([^/]*)/*$ index.php?country=$1&city=$2 [QSA,NC,L]
RewriteRule ^group/([^/]*)/*$ index.php?group=$1&type=show_group [QSA,NC,L]

منظور از پارامتر همون بخش های بعد از آدرس هست مثلا : http://example.com/part

yeksib
شنبه 07 بهمن 1391, 22:56 عصر
ولی یک مشکلی، من وقتی به این آدرس میرم
http://localhost/locations/ایران/تهران ایران و تهران رو میگیره ولی تموم css وhtml ها رو از کار میندازه برای چی اینطوری میشه؟
متغیر ها رو هم با get میگیرم!
راستی این چیه؟type=show_group

MostafaEs3
شنبه 07 بهمن 1391, 23:01 عصر
آفرین خیلی به نکته خوبی اشاره کردی !! :لبخند:

دراین حالت توی تگ های وبسایت (توی تگ head) باید اینو اضافه کنی ::

<base href="http://example.com/" />

بجای http://example.com باید آدرس صفحه اصلی وبسایتت باشه - و اینکه بهتره این تگ رو اوایل head (مثلا بعد از title و قبل از استایل ها و link ها) قرار بدی که بهتر کار کنه :چشمک:

yeksib
شنبه 07 بهمن 1391, 23:07 عصر
یک مشکل دیگه ،البته شرمنده ها من کد htaccess شما رو به شکل زیر تغییر دادم

RewriteRule ^([^/]*)/*$ index.php?group=$1&type=show_group [QSA,NC,L]
آخه میخواهم وقتی کاربر همچین آدرسی وارد کردmysite.com/alireza بره به پبجش ولی وقتی روی هر صفحه کلیک میشه میاردش به ایندکس و بقه صفحه ها کار نمیکنند؟

MostafaEs3
شنبه 07 بهمن 1391, 23:14 عصر
یک مشکل دیگه ،البته شرمنده ها من کد htaccess شما رو به شکل زیر تغییر دادم

RewriteRule ^([^/]*)/*$ index.php?group=$1&type=show_group [QSA,NC,L]
آخه میخواهم وقتی کاربر همچین آدرسی وارد کردmysite.com/alireza بره به پبجش ولی وقتی روی هر صفحه کلیک میشه میاردش به ایندکس و بقه صفحه ها کار نمیکنند؟

بهتره بجای mysite.com/alireza از آدرس mysite.com/profile/alireza استفاده کنی که دردسر کمتری داشته باشه ... دقت کن که آدرس مقابل اون چیزی باشه که شما بر اساسش پروفایل طرف رو لود میکنی - یک مثال کلی تر ::



<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profie/([^/]*)/*$ index.php?profile=$1 [QSA,NC,L]
</IfModule>

حالا اگه مثلا نخواستی از profile استفاده کنی بازهم راه داره - منتها دقیقا یادم نیست چطوری بود (اگه اشتباه نکنم یک اسلش قبل از عبارت هم باید میزدیم) :متفکر:

yeksib
شنبه 07 بهمن 1391, 23:19 عصر
بهتره بجای mysite.com/alireza از آدرس mysite.com/profile/alireza استفاده کنی که دردسر کمتری داشته باشه ... دقت کن که آدرس مقابل اون چیزی باشه که شما بر اساسش پروفایل طرف رو لود میکنی - یک مثال کلی تر ::



<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profie/([^/]*)/*$ index.php?profile=$1 [QSA,NC,L]
</IfModule>

حالا اگه مثلا نخواستی از profile استفاده کنی بازهم راه داره - منتها دقیقا یادم نیست چطوری بود (اگه اشتباه نکنم یک اسلش قبل از عبارت هم باید میزدیم) :متفکر:
آقا خیلی کارتون درسته دمتون گرم ولی خوب فکراتون رو بکنید ببینید میشه کاریش کرد که بشه profile رو حذف کرد و بدون اون بره تو پیجش
باز هم ازتون تشکر میکنم

yeksib
یک شنبه 08 بهمن 1391, 19:51 عصر
ببین من میخوام کدم بصورت زیر باشه ولی با یک مشکلی برخورد میکنم مثلا اگر کاربر بعد از country یکی پر کنه اصلا نمیگیردش
http://localhost/country/iran
چرا اینطوریه؟


RewriteRule ^country/([^/]*)/([^/]*)/([^/]*)/*$ index.php?country=$1&city=$2&region=$3&ti=ss [QSA,NC,L]

MostafaEs3
یک شنبه 08 بهمن 1391, 20:16 عصر
عملا این نوع Rewrite برای اینه که تمامی قسمت های تعریف شده پرشده باشه که ریرایت انجام بشه - درغیر اینصورت باید از ساختار route استفاده کنید که پردازش آدرس توی خود اسکریپت انجام میشه

yeksib
یک شنبه 08 بهمن 1391, 20:28 عصر
عملا این نوع Rewrite برای اینه که تمامی قسمت های تعریف شده پرشده باشه که ریرایت انجام بشه - درغیر اینصورت باید از ساختار route استفاده کنید که پردازش آدرس توی خود اسکریپت انجام میشه
این ساختار route که میگید چیه!
البته من خودم با کد زیر هر آدرس که وارد میشه رو میندازم توی صفحه ی اصلی و بعدش میریزم توی یک آرایه . ولی خیلی کار سختیه بیرون کشیدنش از آرایه و ترتیب select هاش.شما راه بهتری سراغ ندارید!

RewriteRule !\.(js|ico|gif|jpg|css)$ /index.php [L]