2010-08-15 15 views
15

मैं जानता हूँ कि यह इस तरह के एक बुनियादी बात है से कहा जाता है कैसे सॉर्ट करने के लिए, लेकिन एक गूगल खोज मुझे पता चला कैसे फिर से प्रकार के th लिंक पर क्लिक करने के बाद पंक्तियों नहीं किया है।HTML तालिका की पंक्तियों कि MySQL

मैं इस मिल गया है:

<table border="1"> 
    <tr> 
    <th>Type:</th> 
    <th>Description:</th> 
    <th>Recorded Date:</th> 
    <th>Added Date:</th> 
    </tr> 

<?php 
while($row = mysql_fetch_array($result)){ 
    ?> 
    <tr> 
     <td><?php echo $row['type'] ?></td> 
     <td><?php echo $row['description'] ?></td> 
     <td><?php echo $row['recorded_date'] ?></td> 
     <td><?php echo $row['added_date'] ?></td> 
    </tr> 
    <br /> 


    <?php 
} 
mysql_close(); 
?> 
</table> 

मैं क्लिक करने के लिए type और तरह वर्णानुक्रम, और क्लिक करें या तो Recorded Date या Added Date और तरह से आज की तारीख में सक्षम होना चाहिए। मुझे लगता है कि मुझे MySQL क्वेरी करने की आवश्यकता है, लेकिन क्या मैं उन्हें a href टैग के साथ सशर्त के रूप में सेट अप करता हूं?

उत्तर

37

ऐसा करने का सबसे आसान तरीका आपके कॉलम हेडर पर एक लिंक डालना होगा, जो एक ही पृष्ठ पर इंगित करेगा। क्वेरी स्ट्रिंग में, एक वैरिएबल डालें ताकि आप जान सकें कि उन्होंने क्या क्लिक किया है, और फिर ऑर्डर करने के लिए अपने SQL क्वेरी में ORDER BY का उपयोग करें।

एचटीएमएल इस प्रकार दिखाई देगा:

<?php 

$sql = "SELECT * FROM MyTable"; 

if ($_GET['sort'] == 'type') 
{ 
    $sql .= " ORDER BY type"; 
} 
elseif ($_GET['sort'] == 'desc') 
{ 
    $sql .= " ORDER BY Description"; 
} 
elseif ($_GET['sort'] == 'recorded') 
{ 
    $sql .= " ORDER BY DateRecorded"; 
} 
elseif($_GET['sort'] == 'added') 
{ 
    $sql .= " ORDER BY DateAdded"; 
} 

$> 

सूचना है कि आप $ _GET मूल्य सीधे नहीं लेने के लिए और संलग्न करना होगा:

<th><a href="mypage.php?sort=type">Type:</a></th> 
<th><a href="mypage.php?sort=desc">Description:</a></th> 
<th><a href="mypage.php?sort=recorded">Recorded Date:</a></th> 
<th><a href="mypage.php?sort=added">Added Date:</a></th> 

और PHP कोड में, कुछ इस तरह करते हैं यह आपकी पूछताछ के लिए है। चूंकि कुछ उपयोगकर्ता MyPage.php पर जा सकते हैं? Sort =; MyTable से हटाएं;

<table> 
    <tr> 
     <th> 
      <a href="?orderBy=type">Type:</a> 
     </th> 
     <th> 
      <a href="?orderBy=description">Description:</a> 
     </th> 
     <th> 
      <a href="?orderBy=recorded_date">Recorded Date:</a> 
     </th> 
     <th> 
      <a href="?orderBy=added_date">Added Date:</a> 
     </th> 
    </tr> 
</table> 
<?php 
$orderBy = array('type', 'description', 'recorded_date', 'added_date'); 

$order = 'type'; 
if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) { 
    $order = $_GET['orderBy']; 
} 

$query = 'SELECT * FROM aTable ORDER BY '.$order; 

// retrieve and show the data :) 
?> 

कि चाल करेंगे:

+0

हम्म। मुझे एक पार्स त्रुटि मिल रही है: वाक्यविन्यास त्रुटि, अप्रत्याशित T_IS_EQUAL उस पहले 'if' कथन – Joel

+1

हाँ, मेरा वाक्यविन्यास शायद सही नहीं है। मुझे लगता है कि यह अभी तय है। – Kibbee

+0

मैं इसे स्वयं संपादित नहीं कर सकता, लेकिन मुझे त्रुटियां मिलीं। मुख्य बात यह है कि आपको $ sql sql की आवश्यकता नहीं है। साथ ही, मेरे टेबल नाम दो कॉलम पर अलग हैं। लेकिन, ऐसा करने के लिए धन्यवाद! यह मुझे सही जवाब के साथ मिला! – Joel

38

वास्तव में बहुत आसान है कि, यहाँ एक संभव दृष्टिकोण है! :)

+0

क्यों -1 वोट? संपादित करें: -3 ..:/क्यों !? –

+3

निश्चित रूप से ** नहीं ** संभव एसक्यूएल इंजेक्शन है, करीब देखो! आदेश के लिए संभव फ़ील्ड Whitelisted। –

+1

मैंने डाउनवोट नहीं किया, लेकिन किसी कारण से, मुझे पहली बार जवाब देने पर चेक को याद नहीं आया। हालांकि मैं इसे याद कर सकता हूं, और कुछ अन्य इसे भी याद कर सकते हैं। मैं आपकी शैली को मेरी तुलना में बेहतर पसंद करता हूं, इसलिए मैं आपको एक अपवित्र भी दे रहा हूं। – Kibbee

1

एक सरल तालिका को वर्गीकृत पीएचपी कोड:

(कई मूल्यों प्रसंस्करण और छँटाई के लिए सरल मेज, इस sortable.js स्क्रिप्ट का उपयोग)

<html><head> 
<script src="sorttable.js"></script> 

<style> 
tbody tr td {color:green;border-right:1px solid;width:200px;} 
</style> 
</head><body> 

<?php 
$First = array('a', 'b', 'c', 'd'); 
$Second = array('1', '2', '3', '4'); 

if (!empty($_POST['myFirstvalues'])) 
{ $First = explode("\r\n",$_POST['myFirstvalues']); $Second = explode("\r\n",$_POST['mySecondvalues']);} 

?> 

</br>Hi User. PUT your values</br></br> 
<form action="" method="POST"> 
projectX</br> 
<textarea cols="20" rows="20" name="myFirstvalues" style="width:200px;background:url(untitled.PNG);position:relative;top:19px;Float:left;"> 
<?php foreach($First as $vv) {echo $vv."\r\n";}?> 
</textarea> 

The due amount</br> 
<textarea cols="20" rows="20" name="mySecondvalues" style="width:200px;background:url(untitled.PNG);Float:left;"> 
<?php foreach($Second as $vv) {echo $vv."\r\n";}?> 
</textarea> 
<input type="submit"> 
</form> 

<table class="sortable" style="padding:100px 0 0 300px;"> 
<thead style="background-color:#999999; color:red; font-weight: bold; cursor: default; position:relative;"> 
    <tr><th>ProjectX</th><th>Due amount</th></tr> 
</thead> 
<tbody> 

<?php 
foreach($First as $indx => $value) { 
    echo '<tr><td>'.$First[$indx].'</td><td>'.$Second[$indx].'</td></tr>'; 
} 
?> 
</tbody> 
<tfoot><tr><td>TOTAL = &nbsp;<b>111111111</b></td><td>Still to spend = &nbsp;<b>5555555</b></td></tr></tfoot></br></br> 
</table> 
</body> 
</html> 

स्रोत: php sortable table

0
//this is a php file 

<html> 
<head> 
<style> 
a:link {color:green;} 
a:visited {color:purple;} 
A:active {color: red;} 
A:hover {color: red;} 
table 
{ 
    width:50%; 
    height:50%; 
} 
table,th,td 
{ 
    border:1px solid black; 
} 
th,td 
{ 
    text-align:center; 
    background-color:yellow; 
} 
th 
{ 
    background-color:green; 
    color:white;  
} 
</style> 
<script type="text/javascript"> 
function working(str) 
{ 
if (str=="") 
    { 
    document.getElementById("tump").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("tump").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","getsort.php?q="+str,true); 
xmlhttp.send(); 
} 
</script> 
</head> 
<body bgcolor="pink"> 
<form method="post"> 
<select name="sortitems" onchange="working(this.value)"> 
<option value="">Select</option> 
<option value="Id">Id</option> 
<option value="Name">Name</option> 
<option value="Email">Email</option> 
<option value="Password">Password</option> 
</select> 
<?php 
$connect=mysql_connect("localhost","root",""); 
$db=mysql_select_db("test1",$connect); 
$sql=mysql_query("select * from mine"); 
echo "<center><br><br><br><br><table id='tump' border='1'> 
<tr> 
<th>Id</th> 
<th>Name</th> 
<th>Email</th> 
<th>Password</th> 
</tr>"; 
echo "<tr>"; 
while ($row=mysql_fetch_array($sql)) 
{?> 
<td><?php echo "$row[Id]";?></td> 
<td><?php echo "$row[Name]";?></td> 
<td><?php echo "$row[Email]";?></td> 
<td><?php echo "$row[Password]";?></td> 
<?php echo "</tr>"; 
} 
echo "</table></center>";?> 
</form> 
<br> 
<div id="tump"></div> 
</body> 
</html> 
------------------------------------------------------------------------ 
that is another php file 

<html> 
<body bgcolor="pink"> 
<head> 
<style> 
a:link {color:green;} 
a:visited {color:purple;} 
A:active {color: red;} 
A:hover {color: red;} 
table 
{ 
    width:50%; 
    height:50%; 
} 
table,th,td 
{ 
    border:1px solid black; 
} 
th,td 
{ 
    text-align:center; 
    background-color:yellow; 
} 
th 
{ 
    background-color:green; 
    color:white;  
} 
</style> 
</head> 
<?php 
$q=$_GET['q']; 
$connect=mysql_connect("localhost","root",""); 
$db=mysql_select_db("test1",$connect); 
$sql=mysql_query("select * from mine order by $q"); 
echo "<table id='tump' border='1'> 
<tr> 
<th>Id</th> 
<th>Name</th> 
<th>Email</th> 
<th>Password</th> 
</tr>"; 
echo "<tr>"; 
while ($row=mysql_fetch_array($sql)) 
{?> 
<td><?php echo "$row[Id]";?></td> 
<td><?php echo "$row[Name]";?></td> 
<td><?php echo "$row[Email]";?></td> 
<td><?php echo "$row[Password]";?></td> 
<?php echo "</tr>"; 
} 
echo "</table>";?> 
</body> 
</html> 



that will sort the table using ajax 
+0

यदि मेरे पास उदाहरण के लिए गतिशील तालिकाओं हैं तो क्या होगा। प्रत्येक रिकॉर्ड या पंक्ति एक अलग टेबल है। क्या यह समाधान इसके लिए काम करेगा? –

1

यह सबसे आसान समाधान है जो उपयोग करता है:

// इस तब बस प्रकार है कि चर

$sql="SELECT * FROM tracks ORDER BY $sort"; 

echo '<tr>'; 
echo '<td><a href="report_tracks.php?s=title">Title</a><td>'; 
echo '<td><a href="report_tracks.php?s=album">Album</a><td>'; 
echo '<td><a href="report_tracks.php?s=artist">Artist</a><td>'; 
echo '<td><a href="report_tracks.php?s=count">Count</a><td>'; 
echo '</tr>'; 
0

यह अपने डेटा की प्रकृति पर निर्भर करता है के अनुसार पेज

$sort = $_GET['s']; 

// का लोड पर पहली पंक्ति के रूप का प्रयोग करें। इसका जवाब इसके आकार और डेटा प्रकार के आधार पर भिन्न होता है। मैंने ORDER BY पर आधारित कई SQL समाधान देखा। मैं जावास्क्रिप्ट विकल्पों का सुझाव देना चाहता हूं।

सभी उत्तरों में, मैं किसी को आपकी भविष्य की तालिका के लिए पेजिनेशन समस्या का उल्लेख नहीं करता हूं। आइए आपके लिए इसे आसान बनाएं। यदि आपकी तालिका में अंकन नहीं है, तो यह अधिक संभावना है कि जावास्क्रिप्ट समाधान क्लाइंट साइड पर आपके लिए सब कुछ साफ और साफ बनाता है। यदि आपको लगता है कि इसमें डेटा डालने के बाद यह तालिका विस्फोट हो जाएगी, तो आपको पेजिनेशन के बारे में भी सोचना होगा।(जब आप सॉर्टिंग कॉलम बदलते हैं तो आपको हर बार पहले पृष्ठ पर जाना होगा)

डेटा का एक और पहलू डेटा प्रकार है। यदि आप एसक्यूएल का उपयोग करते हैं तो आपको अपने डेटा के प्रकार और इसके लिए किस प्रकार के सॉर्टिंग सूट के बारे में सावधान रहना होगा। उदाहरण के लिए, यदि आपके VARCHAR कॉलम में से एक में आप पूर्णांक संख्याएं संग्रहीत करते हैं, तो सॉर्टिंग उनके पूर्णांक मान को खाते में नहीं ले जाएगी: 1, 2, 11, 22 के बजाय आपको 1, 11, 2, 22 मिल जाएगा।

आप Google पर jquery प्लगइन्स या standalone javascript sortable tables पा सकते हैं। यह उल्लेखनीय है कि एचटीएमएल 5 में <table> में sortable विशेषता है, लेकिन स्पष्ट रूप से यह अभी तक लागू नहीं हुआ है।

संबंधित मुद्दे