ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingphp จะวนลูปตัวแปร แล้วเอาไปใช้ใน link list ได้อย่างไรครับ??
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: php จะวนลูปตัวแปร แล้วเอาไปใช้ใน link list ได้อย่างไรครับ??  (อ่าน 2936 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
fogza
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 97
ออฟไลน์ ออฟไลน์

กระทู้: 1,307



ดูรายละเอียด
« เมื่อ: 01 สิงหาคม 2011, 22:52:49 »

คือผมทำหน้าสมัครสมาชิก แล้วมันต้องมี วัน เดือน ปีเกิด
ซึ่งมันเยอะมาก ต้องมานั่งพิมพ์ที่ละบรรทัด เลยอยากทำให้มันกระชับขึ้นด้วยการใช้ for แต่ตอนนี้ทำยังไม่ได้ซะทีครับ
อย่างเช่นปีเกิด ผมใช้ for แบบนี้
โค๊ด:
<?php 
function 
year(){
$last_year 2554;
$old_year 2550;
for($last_year >= $old_year$old_year++;){
"<option>".'$old_year'."</option>";
}
}
?>
เวลาเรียกใช้ ก็เรียกธรรมดาแบบนี้
โค๊ด:
<select name="year">
<option><?php echo year()?></option>
</select>
ท่านใดเคยทำผ่านมาแล้วช่วยแนะนำผมหน่อยนะครับ ว่าจะให้มันแสดงค่าที่ได้จากการวนลูปใน for ยังไง (html แทรกใน php ที่เขียนไปผมคิดว่ามันน่าจะผิด)
ขอบคุณสำหรับคำแนะนำครับ  wanwan017
« แก้ไขครั้งสุดท้าย: 01 สิงหาคม 2011, 22:56:29 โดย fogza » บันทึกการเข้า

:: สังคมจะดีได้ อยู่ที่เราทุกคน ไม่ใช่แค่ใครคนใดคนหนึ่ง ::
หนุกหนาน
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 106
ออฟไลน์ ออฟไลน์

กระทู้: 1,243



ดูรายละเอียด
« ตอบ #1 เมื่อ: 01 สิงหาคม 2011, 23:13:43 »

<?
function yearloop($oldyear,$lastyear)
{
   for ($curyear=$oldyear;$curyear<=$lastyear;$curyear++)
   {
                $yearloop .= "<option value=\"$curyear\">$curyear</option>";      
   }
return $yearloop;
}
?>
เวลาเรียกใช้ ก็เรียกธรรมดาแบบนี้
โค๊ด:
<select name="year">
<?echo yearloop(2550,2554);?>
</select>
บันทึกการเข้า
fogza
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 97
ออฟไลน์ ออฟไลน์

กระทู้: 1,307



ดูรายละเอียด
« ตอบ #2 เมื่อ: 01 สิงหาคม 2011, 23:21:33 »

+1 83 > 84 ครับ เยี่ยมมากเลย  wanwan013
รบกวนช่วยอธิบายตรงนี้นิดนึงครับ
value=\"$curyear\" ทำไมมันต้องใช้ \ ผมเห็นเค้าใช้กันเยอะ แต่ผมยังไม่รู้

ขอถามต่ออีกนิดนะครับ ถ้าเป็นเดือนที่จะแสดงเป็นภาษาไทย เช่น มกราคม กุมภาพันธ์ มีนาคม .... ธันว่าคม แต่ให้ value = 1, 2, 3, ......., 12 จะต้องทำยังไงหรอครับ

ขอรบกวนอีกนิดนะครับ
บันทึกการเข้า

:: สังคมจะดีได้ อยู่ที่เราทุกคน ไม่ใช่แค่ใครคนใดคนหนึ่ง ::
gootooyoo
ก๊วนเสียว
*

พลังน้ำใจ: 27
ออฟไลน์ ออฟไลน์

กระทู้: 464



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 01 สิงหาคม 2011, 23:27:31 »

+1 83 > 84 ครับ เยี่ยมมากเลย  wanwan013
รบกวนช่วยอธิบายตรงนี้นิดนึงครับ
value=\"$curyear\" ทำไมมันต้องใช้ \ ผมเห็นเค้าใช้กันเยอะ แต่ผมยังไม่รู้

ขอถามต่ออีกนิดนะครับ ถ้าเป็นเดือนที่จะแสดงเป็นภาษาไทย เช่น มกราคม กุมภาพันธ์ มีนาคม .... ธันว่าคม แต่ให้ value = 1, 2, 3, ......., 12 จะต้องทำยังไงหรอครับ

ขอรบกวนอีกนิดนะครับ
ที่ใช้ \ เพื่อให้แสดงเครื่องหมายหลังคำนั้น ครับ เช่น \# คือจะแสดง # โดยไม่นำไปใช้ร่วมคำสั้งครับ ส่วน เรื่อง มกราคม คุณลองไปศึกษาเรื่อง ARRAY ดูครับ
บันทึกการเข้า

ขวากหนาม ที่เราต้องข้ามผ่าน ถึงจะเจ็บก็จะไป (\◣_◢/) 
❤ 
fogza
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 97
ออฟไลน์ ออฟไลน์

กระทู้: 1,307



ดูรายละเอียด
« ตอบ #4 เมื่อ: 01 สิงหาคม 2011, 23:31:27 »

ที่ใช้ \ เพื่อให้แสดงเครื่องหมายหลังคำนั้น ครับ เช่น \# คือจะแสดง # โดยไม่นำไปใช้ร่วมคำสั้งครับ ส่วน เรื่อง มกราคม คุณลองไปศึกษาเรื่อง ARRAY ดูครับ
+1 25 < 26 ครับ!  wanwan003
ที่แท้มันก็คือตัดคำไม่เอาไปใช้ร่วมกับคำสั่งนี้เอง ขอบคุณสำหรับคำแนะนำมากๆ ครับ  wanwan017
บันทึกการเข้า

:: สังคมจะดีได้ อยู่ที่เราทุกคน ไม่ใช่แค่ใครคนใดคนหนึ่ง ::
thenetxx
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 1,986



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 01 สิงหาคม 2011, 23:33:26 »

หมายถึงอย่างงี้ปะ
โค๊ด:

<?
function yearloop($oldyear,$lastyear, $select_year = null)
{
   for ($curyear=$oldyear;$curyear<=$lastyear;$curyear++)
   {
                
                $yearloop .= "<option value=\"$curyear\"";
                if($select_year == $curyear)
                    $yearloop .=" selected ";
                $yearloop .= ">".$curyear."</option>";      
   }
return $yearloop;
}
?>

edit เพิ่ม = null เด๋ว error
« แก้ไขครั้งสุดท้าย: 01 สิงหาคม 2011, 23:38:49 โดย thenetxx » บันทึกการเข้า

Develop site but can't develop life
ASIA
*~เก้าคุง~*
สายตรวจเสียวบอร์ด
Moderator
เจ้าพ่อบอร์ดเสียว
*****

พลังน้ำใจ: 136
ออฟไลน์ ออฟไลน์

กระทู้: 4,097



ดูรายละเอียด
« ตอบ #6 เมื่อ: 01 สิงหาคม 2011, 23:34:57 »

<?php

$month = array(1=>"มกราคม", 2=>"กุมภาพันธ์", 3=>"มีนาคม", 4=>"เมษายน", 5=>"พฤษภาคม", 6=>"มิถุนายน", 7=>"กรกฎาคม", 8=>"สิงหาคม", 9=>"กันยายน", 10=>"ตุลาคม", 11=>"พฤศจิกายน", 12=>"ธันวาคม");
   for ($i=1;$i<=12;$i++)
   {
                $monthloop= "<option value=\"$i\">$month[$i]</option>"; 
 
   }
?>
ที่จริงใช้ foreach ก็จะได้อีกวิธีนึงเหมือนกันครับ
บันทึกการเข้า
fogza
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 97
ออฟไลน์ ออฟไลน์

กระทู้: 1,307



ดูรายละเอียด
« ตอบ #7 เมื่อ: 01 สิงหาคม 2011, 23:57:54 »

มันจำเป็นต้องเขียนแบบนี้ไหม๋ครับ ?
$arr= array(1=>"มกราคม", 2=>"กุมภาพันธ์");

ถ้าเขียนแบบนี้
โค๊ด:
$month= array("มกราคม","กุมภาพันธ์");
$i=1;
foreach($arr as $monthloop){
$monthloop= "<option value=\"$i\">$monthloop[$i]</option>";  
$i++;
}
พอจะได้ไหม๋ครับ?
ถ้าใช้ foreach จะกำหนดค่าให้ value=1, 2, 3,..., 12 ได้ยังไงครับ php มีคำสั่งนับจำนวนค่าที่อยู่ใน array บ้างไหม๋ครับ ?

หมายถึงอย่างงี้ปะ
โค๊ด:

<?
function yearloop($oldyear,$lastyear, $select_year = null)
{
   for ($curyear=$oldyear;$curyear<=$lastyear;$curyear++)
   {
                
                $yearloop .= "<option value=\"$curyear\"";
                if($select_year == $curyear)
                    $yearloop .=" selected ";
                $yearloop .= ">".$curyear."</option>";      
   }
return $yearloop;
}
?>

edit เพิ่ม = null เด๋ว error
เพิ่ม $select_year = null ... อ๋อคือจะกำหนดค่าเริ่มต้นให้เป็นค่า null แล้วเรียกใช้ก็ใส่ค่าแค่ 2 ค่าพอใช่ไหม๋ครับ ก็จะเป็น
<?echo yearloop(2500, 2554) ?>
เวลามันแสดงตอนแรกมันจะเป็นค่าว่างเปล่า(NULL) ผมเข้าใจถูกไหม๋ครับ
« แก้ไขครั้งสุดท้าย: 02 สิงหาคม 2011, 00:06:31 โดย fogza » บันทึกการเข้า

:: สังคมจะดีได้ อยู่ที่เราทุกคน ไม่ใช่แค่ใครคนใดคนหนึ่ง ::
sincere
สมุนแก๊งเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 717



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 02 สิงหาคม 2011, 00:17:41 »

โค๊ด:
for($i=date('Y')-80;$i<=date('Y');$i++){ 
<option value="<?=$i?>"><?=$i?></option>
 }

date('Y') = ปี ค.ศ. ปัจจุบัน 4 หลัก ก็จะเป็น 2011

ส่วนถ้าอยากจะให้ย้อนหลังไปกี่ปี ก็เปลี่ยนค่า -80 ให้เป็นจำนวนที่ต้องการ จาก code จะแสดง list ย้อนหลังปี 2011 ไป 80 ปี เริ่มตั้งแต่ 1931 ..... 2011

ส่วนถ้าอยากให้เป็นปี พ.ศ. ก็ใช้ ด้านล่าง

โค๊ด:
for($i=date('Y')+493;$i<=date('Y')+543;$i++){ 
<option value="<?=$i?>"><?=$i?></option>
 }

อันนี้จะแสดงเป็น ปี พ.ศ. ย้อนหลัง จากตัวอย่างจะย้อนหลัง 50 ปี อยากให้ย้อนหลังกี่ปี ก็ เอา 543 - 50 ปี = 493 ใครอยากได้เท่าไหร่ก็ ลบ แล้วเอาไปแทนที่กัน จ้า

 Embarrassed Embarrassed Embarrassed Embarrassed
บันทึกการเข้า

fogza
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 97
ออฟไลน์ ออฟไลน์

กระทู้: 1,307



ดูรายละเอียด
« ตอบ #9 เมื่อ: 02 สิงหาคม 2011, 00:26:40 »

โค๊ด:
for($i=date('Y')-80;$i<=date('Y');$i++){ 
<option value="<?=$i?>"><?=$i?></option>
 }

date('Y') = ปี ค.ศ. ปัจจุบัน 4 หลัก ก็จะเป็น 2011

ส่วนถ้าอยากจะให้ย้อนหลังไปกี่ปี ก็เปลี่ยนค่า -80 ให้เป็นจำนวนที่ต้องการ จาก code จะแสดง list ย้อนหลังปี 2011 ไป 80 ปี เริ่มตั้งแต่ 1931 ..... 2011

ส่วนถ้าอยากให้เป็นปี พ.ศ. ก็ใช้ ด้านล่าง

โค๊ด:
for($i=date('Y')+493;$i<=date('Y')+543;$i++){ 
<option value="<?=$i?>"><?=$i?></option>
 }

อันนี้จะแสดงเป็น ปี พ.ศ. ย้อนหลัง จากตัวอย่างจะย้อนหลัง 50 ปี อยากให้ย้อนหลังกี่ปี ก็ เอา 543 - 50 ปี = 493 ใครอยากได้เท่าไหร่ก็ ลบ แล้วเอาไปแทนที่กัน จ้า

 Embarrassed Embarrassed Embarrassed Embarrassed
+1 37 > 38ลึกซึ้ง  Cry
สั้นๆ ได้ใจความดีครับ
แต่ถ้าเอาไป + กันใน for($i=date('Y')+493;$i<=date('Y')+543) มันจะทำงานช้ากว่าแบบนี้ไหม๋ครับ
ex:
โค๊ด:
<?php
$oldyear 
year('Y')+493;
$lastyear year('Y')+543;
for(
$i=oldyeari<=$lastyear$i++)
{
               <
option value="<?=$i?>
"><?=$i?></option>
 }
?>
โปรดชี้แนะด้วยครับ  wanwan011
edit: ทดลองวิธีที่ผมลองเขียนแล้วมันไม่ขึ้นอะไรเลยครับ โดยผมเรียกใช้แบบนี้
yearloop(443);
แล้วฟังก์ชันเขียนแบบนี้ (ย้อนไป 100 ปี)
โค๊ด:
<?php
function yearloop($oldyear
{
$r_oldyeardate('Y')+$oldyear;
$lasyeardate('Y')+543;
   for ($curyear=$lastyear$curyear>=$r_oldyear$curyear--)
   {
        $yearloop .= "<option value=\"$curyear\">$curyear</option>"          
   }
return $yearloop;
}
?>

ทำไงต่อดีครับ

edit: ทำได้แล้วครับ ประกาศชื่อตัวแปรไม่ครบ $lasyear ที่จริงต้องเป็น $lastyear ขอบคุณมากๆ ครับ Smiley
« แก้ไขครั้งสุดท้าย: 02 สิงหาคม 2011, 00:46:51 โดย fogza » บันทึกการเข้า

:: สังคมจะดีได้ อยู่ที่เราทุกคน ไม่ใช่แค่ใครคนใดคนหนึ่ง ::
thenetxx
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 41
ออฟไลน์ ออฟไลน์

กระทู้: 1,986



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 03 สิงหาคม 2011, 00:18:18 »

อย่าลืมแบบที่ผมแจ้งไว้ละครับ

ใส่ $select ไว้ซะหน่อย คราวหลังพอดึงข้อมูลจาก db จะได้เอามาใช้ได้

$select = null ก็คือไม่ต้องใส่ ถ้าเป็น new form แต่พอมีการ submit เก็บข้อมูลไว้

ตอน edit form มันก็ต้องมีการรับค่า ก็คือ $select เพื่อมา select list ด้วยครับ
บันทึกการเข้า

Develop site but can't develop life
ASIA
*~เก้าคุง~*
สายตรวจเสียวบอร์ด
Moderator
เจ้าพ่อบอร์ดเสียว
*****

พลังน้ำใจ: 136
ออฟไลน์ ออฟไลน์

กระทู้: 4,097



ดูรายละเอียด
« ตอบ #11 เมื่อ: 03 สิงหาคม 2011, 00:40:05 »

มันจำเป็นต้องเขียนแบบนี้ไหม๋ครับ ?
$arr= array(1=>"มกราคม", 2=>"กุมภาพันธ์");

ถ้าเขียนแบบนี้
โค๊ด:
$month= array("มกราคม","กุมภาพันธ์");
$i=1;
foreach($arr as $monthloop){
$monthloop= "<option value=\"$i\">$monthloop[$i]</option>"; 
$i++;
}
พอจะได้ไหม๋ครับ?
ถ้าใช้ foreach จะกำหนดค่าให้ value=1, 2, 3,..., 12 ได้ยังไงครับ php มีคำสั่งนับจำนวนค่าที่อยู่ใน array บ้างไหม๋ครับ ?

หมายถึงอย่างงี้ปะ
โค๊ด:

<?
function yearloop($oldyear,$lastyear, $select_year = null)
{
   for ($curyear=$oldyear;$curyear<=$lastyear;$curyear++)
   {
               
                $yearloop .= "<option value=\"$curyear\"";
                if($select_year == $curyear)
                    $yearloop .=" selected ";
                $yearloop .= ">".$curyear."</option>";     
   }
return $yearloop;
}
?>

edit เพิ่ม = null เด๋ว error
เพิ่ม $select_year = null ... อ๋อคือจะกำหนดค่าเริ่มต้นให้เป็นค่า null แล้วเรียกใช้ก็ใส่ค่าแค่ 2 ค่าพอใช่ไหม๋ครับ ก็จะเป็น
<?echo yearloop(2500, 2554) ?>
เวลามันแสดงตอนแรกมันจะเป็นค่าว่างเปล่า(NULL) ผมเข้าใจถูกไหม๋ครับ
เขียนแบบที่คุณบอกก็ได้ครับง่ายดี ผมใส่ 1,2,3 เป็น key ไปด้วย เผื่อไม่เข้าใจเฉยๆครับ ปกติผมก็กำหนดค่าไปเลยไม่ได้ใส่ 1 2 3
ใช้ foreach แล้ว ถ้าจะให้มัน ปริ้นด้วย ว่าตอนนี้นี้อยู่ key ที่เท่าไหร่

ง่ายๆ ก็คือ ปกติเราเขียน
foreach($month as $value)

มันจะปริ้นเฉพาะค่าที่อยู่ในแต่ละ key ออกมา
ให้เราเปลี่ยนใหม่เป็น
foreach($month as $key => $value)

การแสดงผล และวนลูปเหมือนเดิมทุกอย่างครับ แค่สามารถปริ้นว่าตอนนี้กำลังอยู่ที่ $key เท่าไหร่ออกมาได้
ลอง
foreach($month as $key => $value){
echo "key:$key <br />";
echo "value:$value <br />";
}

ดูครับ จะได้เข้าใจมากขึ้น ที่นี้เราก็แค่เอา value="$key" ในตัว option ครับ
บันทึกการเข้า
SL_master
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 57
ออฟไลน์ ออฟไลน์

กระทู้: 1,188



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 03 สิงหาคม 2011, 01:02:20 »

จริงๆใส่แค่นี้ก็พอครับ

$month = array('','มกรา','กุมภา','มีนา',........'ธันวา')
เว้นตำแหน่งแรกไว้ เป็นค่าว่าง ''
เพราะเวลาเรียกใช้ จะใช้เป็น $month[ตัวเลขเดือน] ไม่ต้องเอามา คำนวนอีก
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์