Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ช่วยด้วยๆๆๆ วิธี select ข้อมูลเพื่อแสดงผล ======***********



 

ช่วยด้วยๆๆๆ วิธี select ข้อมูลเพื่อแสดงผล ======***********

 



Topic : 046801



โพสกระทู้ ( 29 )
บทความ ( 0 )



สถานะออฟไลน์




the shortest route from class 2 to 20 is :
ต้นทาง 2 => ปลายทาง 20 = 44 (กิโลเมตร) destinations [4]: Follow the route to the classes (2-16-21-20).

อยากให้แสดงแบบนี้อะครับ ต้องทำอย่างไร

the shortest route from class 2 to 20 is :
ต้นทาง 2 => ปลายทาง 20 = 44 (กิโลเมตร)
destinations [4]: Follow the route to the classes (สารคาม - กันทร - ยางตลาด - กาฬสิน ).



ตารางฐานข้อมูล


tb_station



tb_busroute

Code (PHP)
 Dijkstra.php
<?php 
class Dijkstra { 

    var $visited = array(); 
    var $distance = array(); 
    var $previousNode = array(); 
    var $startnode =null; 
    var $map = array(); 
    var $infiniteDistance = 0; 
    var $numberOfNodes = 0; 
    var $bestPath = 0; 
    var $matrixWidth = 0; 

    function Dijkstra(&$ourMap, $infiniteDistance) { 
        $this -> infiniteDistance = $infiniteDistance; 
        $this -> map = &$ourMap; 
        $this -> numberOfNodes = count($ourMap); 
        $this -> bestPath = 0; 
    } 

    function findShortestPath($start,$to) { 
        $this -> startnode = $start; 
        for ($i=0;$i<$this -> numberOfNodes;$i++) { 
            if ($i == $this -> startnode) { 
                $this -> visited[$i] = true; 
                $this -> distance[$i] = 0; 
            } else { 
                $this -> visited[$i] = false; 
                $this -> distance[$i] = isset($this -> map[$this -> startnode][$i]) 
                    ? $this -> map[$this -> startnode][$i] 
                    : $this -> infiniteDistance; 
            } 
            $this -> previousNode[$i] = $this -> startnode; 
        } 
         
        $maxTries = $this -> numberOfNodes; 
        $tries = 0; 
        while (in_array(false,$this -> visited,true) && $tries <= $maxTries) {             
            $this -> bestPath = $this->findBestPath($this->distance,array_keys($this -> visited,false,true)); 
            if($to !== null && $this -> bestPath === $to) { 
                break; 
            } 
            $this -> updateDistanceAndPrevious($this -> bestPath);             
            $this -> visited[$this -> bestPath] = true; 
            $tries++; 
        } 
    } 

    function findBestPath($ourDistance, $ourNodesLeft) { 
        $bestPath = $this -> infiniteDistance; 
        $bestNode = 0; 
        for ($i = 0,$m=count($ourNodesLeft); $i < $m; $i++) { 
            if($ourDistance[$ourNodesLeft[$i]] < $bestPath) { 
                $bestPath = $ourDistance[$ourNodesLeft[$i]]; 
                $bestNode = $ourNodesLeft[$i]; 
            } 
        } 
        return $bestNode; 
    } 

    function updateDistanceAndPrevious($obp) {         
        for ($i=0;$i<$this -> numberOfNodes;$i++) { 
            if(     (isset($this->map[$obp][$i])) 
                &&    (!($this->map[$obp][$i] == $this->infiniteDistance) || ($this->map[$obp][$i] == 0 ))     
                &&    (($this->distance[$obp] + $this->map[$obp][$i]) < $this -> distance[$i]) 
            )      
            { 
                    $this -> distance[$i] = $this -> distance[$obp] + $this -> map[$obp][$i]; 
                    $this -> previousNode[$i] = $obp; 
            } 
        } 
    } 

    function printMap(&$map) { 
        $placeholder = ' %' . strlen($this -> infiniteDistance) .'d'; 
        $foo = ''; 
        for($i=0,$im=count($map);$i<$im;$i++) { 
            for ($k=0,$m=$im;$k<$m;$k++) { 
                $foo.= sprintf($placeholder, isset($map[$i][$k]) ? $map[$i][$k] : $this -> infiniteDistance); 
            } 
            $foo.= "\n"; 
        } 
        return $foo; 
    } 

    function getResults($to) { 
        $ourShortestPath = array(); 
        $foo = ''; 
        for ($i = 0; $i < $this -> numberOfNodes; $i++) { 
            if($to !== null && $to !== $i) { 
                continue; 
            } 
            $ourShortestPath[$i] = array(); 
            $endNode = null; 
            $currNode = $i; 
            $ourShortestPath[$i][] = $i; 
            while ($endNode === null || $endNode != $this -> startnode) { 
                $ourShortestPath[$i][] = $this -> previousNode[$currNode]; 
                $endNode = $this -> previousNode[$currNode]; 
                $currNode = $this -> previousNode[$currNode]; 
            } 
            $ourShortestPath[$i] = array_reverse($ourShortestPath[$i]); 
            if ($to === null || $to === $i) { 
            if($this -> distance[$i] >= $this -> infiniteDistance) { 
                $foo .= sprintf("no route from %d to %d. \n",$this -> startnode,$i); 
            } else { 
                $foo .= sprintf(' ต้นทาง %d => ปลายทาง  %d = %d (กิโลเมตร) <br> destinations [%d]: Follow the route to the classes (%s).'."\n" , 
                        $this -> startnode,$i,$this -> distance[$i], 
                        count($ourShortestPath[$i]), 
                        implode('-',$ourShortestPath[$i])); 
            } 
            $foo .= str_repeat('-',20) . "\n"; 
                if ($to === $i) { 
                    break; 
                } 
            } 
        } 
        return $foo; 
    } 
} // end class 
?> 


ไฟล์ ทั้งหมด
http://www.upload-thai.com/download.php?id=b82e24e941ddc74fa2714f2c40c298e8



Tag : PHP, MySQL, JavaScript, Ajax, jQuery









ประวัติการแก้ไข
2010-08-09 20:43:44
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-08-09 20:26:08 By : wisan191 View : 1430 Reply : 4
 

 

No. 1



โพสกระทู้ ( 29 )
บทความ ( 0 )



สถานะออฟไลน์


map.php
Code (PHP)
<html>
<head>
<title>Find shortest route!</title>

<script>

function clickMap(classID)
{
    if (document.form1.fromClass.value.length == 0)
    {
        document.form1.fromClass.value = classID;
    }
    else
    {
        document.form1.toClass.value = classID;
    }
}

</script>
</head>
<body>

<img src="teiMap.jpg"  usemap="#routes" border="0">

<MAP name="routes" >
    <AREA SHAPE="rect" COORDS="225,50, 300, 100"  href="java script:clickMap('1');" class="mymap" >
    <AREA SHAPE="rect" COORDS="400,400,500,500" href="java script:clickMap('3');"  class="mymap" >
</MAP>

<br><br>
<form name="form1" action="calPath.php" method="post">

From :
<input type="text" name="fromClass"/>

<br>
To :
<input type="text" name="toClass"/>
<br>
<input name=b1 type=submit value="Enter!">

</form>

<br></body></html>







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 20:28:38 By : wisan191
 


 

No. 2



โพสกระทู้ ( 29 )
บทความ ( 0 )



สถานะออฟไลน์


calPath.php
Code (PHP)
<?php 

include("dijkstra.php"); 
include("connect.php");

// I is the infinite distance. 
define('I',1000); 

// Size of the matrix 
$sql="SELECT * FROM tb_busstop";
$query=mysql_query($sql); 
$num_row=mysql_num_rows($query);//?????????????

$matrixWidth = $num_row; //????????????????????????????
$i=0;
// $points is an array in the following format: (router1,router2,distance-between-them) 
$points[] = array();
	while ($row = mysql_fetch_assoc($query)) {
		$points[] = array(
			$row['station_id'], 
			$row['station_id2'], 
			$row['distance'],
			$row['route_id']
		);
		$i++;
	}

$ourMap = array(); 

// Read in the points and push them into the map 

for ($i=0,$m=count($points); $i<$m; $i++) { 
    $x = $points[$i][0]; 
    $y = $points[$i][1]; 
    $c = $points[$i][2];
	$r = $points[$i][3]; 
    $ourMap[$x][$y] = $c; 
    $ourMap[$y][$x] = $c; 
} 

// ensure that the distance from a node to itself is always zero 
// Purists may want to edit this bit out. 

for ($i=0; $i < $matrixWidth; $i++) { 
    for ($k=0; $k < $matrixWidth; $k++) { 
        if ($i == $k) $ourMap[$i][$k] = 0; 
    } 
} 


// initialize the algorithm class 
$dijkstra = new Dijkstra($ourMap, I,$matrixWidth); 

// $dijkstra->findShortestPath(0,13); to find only path from field 0 to field 13... 
$fromClass = $_POST['fromClass']; 
$toClass = $_POST['toClass']; 

$dijkstra->findShortestPath($fromClass, $toClass); 

// Display the results 

echo '<pre>'; 
//echo "the map looks like:\n\n"; 
//echo $dijkstra -> printMap($ourMap); 
echo "\n\n the shortest route from class  ".$fromClass." to ".$toClass." is  :\n"; 
echo $dijkstra -> getResults((int)$toClass); 
echo '</pre>'; 

?> 


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 20:31:34 By : wisan191
 

 

No. 3



โพสกระทู้ ( 29 )
บทความ ( 0 )



สถานะออฟไลน์


ช่วยด้วยนะคราบ


ประวัติการแก้ไข
2010-08-09 20:44:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-08-09 20:34:08 By : wisan191
 


 

No. 4

Guest


can u upload database file again
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-23 02:07:42 By : H
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยด้วยๆๆๆ วิธี select ข้อมูลเพื่อแสดงผล ======***********
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่