PDA

View Full Version : سوال: ایجاد برچسب



mamali-mohammad
جمعه 19 فروردین 1390, 10:24 صبح
سلام
خوبید دوستان ؟
من یه سوال دارم

فرض کنید ما میخوایم یه پست جدید ارسال کنیم .
حالا یه کادر هم داریم که میتونیم برچسب های مورد نظرمون رو بزاریم توش و با , جداشون میکنیم
مثال : محمد , علی , حسن

حالا سوال اینجاست که چطوری میشه چنین کاریو کرد ؟
و مهمتر اینکه به هر تگ لینک به جستجو داد

فرض کنید صفحه سرچ ما این مسیره میشه :

search.php?a=
حالا اگه روی علی کلیک کرد این بیاد :

search.php?a=علی

یعنی هر تگ ، لینک خودش رو اتوماتیک بگیره
ممنون

binyaft
جمعه 19 فروردین 1390, 11:18 صبح
با explode جدا کن ، بعد با یه حلقه نشون بده

Cyletech
جمعه 19 فروردین 1390, 11:45 صبح
خیلی راحت. شما یک ستون در جدولی در پایگاه داده به نام مثلاً tags می سازید و همونطور که گفتید با "," جدا می کنیدشون. بعد حالا نوبت خواندن آنهاست. با استفاده از mysql_query و SELECT آنها رو می خونید حالا باید تکرار شوند تا همه نمایش داده بشند. برای همین با استفاده از while و mysql_fetch_array اینکارو می کنید. بعد باید جداکننده هارو بردارید و داخل یک آرایه بریزید که با explode اینکارو می کنید. حالا همه تگ های موجود داخل یک آرایه بدون جداکننده دارید و داخل عمل تکرار هستید. الآن می تونید بصورت ساده نمایششون بدید اما اگر بخوای لینک بدی به هر تگ باید اینطوری عمل کنید مثلا:



echo( '<a href="search.php?a=' . $array . '"
target="_blank">test</a>');

فقط توجه داشته باش که $array همون نام آرایه هست که قراره تک تک مقادیرش در عمل تکرار نمایش داده بشند.

mamali-mohammad
جمعه 19 فروردین 1390, 11:50 صبح
خوش مشکل اینه : فرض کن من چند تا تگ دادم : a,b,c,d,f,r,t,y هر ده تاشو با هم اینطوری در دیتابیس ذخیره می کنه : a,b,c,d,f,r,t,y کد کاملترشو محبت میکنید ؟ ممنون

binyaft
جمعه 19 فروردین 1390, 12:11 عصر
اول select کن بعد با explode جدا کن


$tags=explode(',',$text);

و نمایش بده


for($i=0;$i<count($tags);++$i){
echo $tags[$i]."<br> ";
}

mamali-mohammad
جمعه 19 فروردین 1390, 14:04 عصر
الان تست کردم ردیفه
فقط مشکل اینه که همه تگ هارو با هم نشون میده .
این کدی که نوشتم برای نمایش هر پست در صفحه :


$sql = mysql_query("SELECT * FROM products ORDER BY id DESC limit 6");
$dynamicList="";
while($row = mysql_fetch_array($sql)){
$id=$row["id"];
$category=$row["category"];
$price=$row["price"];
$product_name=$row["product_name"];
$date_added=strftime("%b,%d,%Y",strtotime($row["date_added"]));
$pids = $row['id'];
if (file_exists('inventory_images/'.$pids.'s.jpg')){
$m = "jpg";}
elseif(file_exists('inventory_images/'.$pids.'s.swf')){
$m = "swf"; }
$tag=$row["tag"];
$tags=explode(',',$tag);
for($i=0;$i<count($tags);++$i){
$mytag=$tags[$i]." ";
$dt .= '<a href="search.php?a=' . $mytag .'" target="_blank">' . $mytag .'</a>';
}
$dynamicList .='

<table width="500" border="1">
<tr>
<td width="300"><p>'. $product_name .'</p>
<p>$ '. $price .'</p>
<p>'. $dt .'</p>
</tr>
</table>';
}
?>

UnnamE
جمعه 19 فروردین 1390, 14:21 عصر
بعد از اينكه كارتون تموم يه benchmark‌ بكنيد روي مدت زمان اجراي query‌ ها..
تا متوجه بشيد Databse overload يعني چي!!!!

mamali-mohammad
جمعه 19 فروردین 1390, 14:38 عصر
یعنی چی ؟؟؟؟

Cyletech
جمعه 19 فروردین 1390, 18:44 عصر
فقط مشکل اینه که همه تگ هارو با هم نشون میده .

احتمالاً شما در SELECT کردن همه مقادیر ستون tags رو انتخاب کردید. در حالی که باید اینطوری عمل کنید. مثلاً شماره صفحه 12 هست ، و آدرس اینطوریه index.php?id=12 حالا در بخشی که صفحه ساختیم باید تگ های همون صفحه رو select کنیم. اینطوری:



musql_query( "SELECT * FROM `tags` WHERE `tag` = '" . $_GET['id'] . "'"
);

mamali-mohammad
جمعه 19 فروردین 1390, 19:41 عصر
خب من دارم کل صفحه رو یجا نمایش میدم
در کدی که گذاشتم معلومه
پس مجبورم اینو داشته باشم :

$sql = mysql_query("SELECT * FROM products ORDER BY id DESC limit 6");

mamali-mohammad
جمعه 19 فروردین 1390, 22:53 عصر
اینم از این :


if (isset($_GET['id'])){
$ir=$_GET['id'];
$sql = mysql_query("SELECT * FROM products ORDER BY id='$ir'");
while($row = mysql_fetch_array($sql)){
$id=$row["id"];
$category=$row["category"];
$price=$row["price"];
$product_name=$row["product_name"];
$date_added=strftime("%b,%d,%Y",strtotime($row["date_added"]));
}
$sql1 = mysql_query("SELECT * FROM products WHERE tag='$ir'");
while($row = mysql_fetch_array($sql)){
$tag=$row["tag"];
$tags=explode(',',$tag);
for($i=0;$i<count($tags);++$i){
$mytag=$tags[$i]." ";
$dt .=$mytag;}
}

}
?>

جواب نمیده !

mamali-mohammad
شنبه 20 فروردین 1390, 12:23 عصر
دوستان
کسی هست کمک کنه ؟

Cyletech
شنبه 20 فروردین 1390, 13:49 عصر
خب من دارم کل صفحه رو یجا نمایش میدممیشه بگی تگ برای هر مطلب هست یا ابر برچسب که در همه صفحات موجوده؟

mamali-mohammad
شنبه 20 فروردین 1390, 14:29 عصر
خیر
می خوام برای مطلب درست باشه
یه تیبل درست کردم به نام مثلا SEND
این تیبل نام ، ای دی ، قیمت ، تاریخ و تگ هر پست رو جدا ذخیره میکنه
حالا میخوام هر پست تگ خودش رو نشون میده

این کدهایی گذاشتم نشون میده
اما همرو با هم میاره
در صورتی که میخوام فقط از پست خودش رو نشون بده

Cyletech
یک شنبه 21 فروردین 1390, 20:18 عصر
خب من که راهنمایی کردم. شما اومدین و کل مقادیر موجود در ستون tags از پایگاه داده رو خارج کردید. در صورتی که باید محدود بشه به فقط ستون هایی که مربوط به پست فلان شماره میشن. اونم که فقط با کد زیر امکان پذیره.

mysql_query("SELECT `column_name` FROM `table_name WHERE `post_id` = '" . $_GET'id'] . "'" );
دقت کن که $_GET['id'] که نوشتم روش منه و وقتی اجرا میشه که هر مطلب یک صفحه بصورت مثلاً index.php?id=post_id داشته باشه که post_id شماره اون مطلب هست.

mamali-mohammad
یک شنبه 21 فروردین 1390, 21:23 عصر
ممنون
بنده عرض کردم هیمن رو استفاده کدم و جواب نداد
این کد بنده هست :

if (isset($_GET['id'])){
$isr=$_GET['id'];
$sql1 = mysql_query("SELECT tag FROM products WHERE id= '" . $_GET['id'] . "'" );
while($row = mysql_fetch_array($sql1)){
$tag=$row["tag"];
$tags=explode(',',$tag);
for($i=0;$i<count($tags);++$i){
$mytag=$tags[$i]." ";
$dt .=$mytag;}
}
}
اگه جایی اشتباه نوشتم بگید
ممنون

mamali-mohammad
سه شنبه 23 فروردین 1390, 13:58 عصر
به نظرتون حلقه for رو درست نوشتم ؟
حلقه for در حلقه while قرار داره

yakouza
سه شنبه 23 فروردین 1390, 14:15 عصر
فقط از حلقه فور استفاده کن

mamali-mohammad
سه شنبه 23 فروردین 1390, 15:14 عصر
چطوری Tags رو از تیبل select کنم ؟ ( اگه فقط از For استفاده کنم )
ممنونم

yakouza
سه شنبه 23 فروردین 1390, 15:56 عصر
تابع mysql_fetch_array() تو هر اجرا فقط یه رکورد رو بر میگردونه.


$r=mysql_query("select tag from table where post_id='$_GET[id]'");
$row=mysql_fetch_array($r);
$tag=explode(',',$row[tag]);
for($i=0; $i<sizeof($tag); $i++)
{
echo "<a href=\"#\">$tag[$i]</a>";
}

mamali-mohammad
سه شنبه 23 فروردین 1390, 17:58 عصر
دوستان مشکل حل شد !
من اشتباها بجای WHERE میزاشتم ORDER BY !!!