Сортировка с использованием jquery и php - PullRequest
0 голосов
/ 04 мая 2009

Что не так с этим кодом, он работает в первый раз, затем, когда я снова создаю заголовок, возникает ошибка, говорящая От не определено

Jquery

function sort(tableHeader,sortDir)
{
 $.ajax({
 url: "sort.php",
 type:"get",
 data: "tableHeader="+tableHeader +"&sortdirection="+sortDir,
 success:function(data){
 $("#t1").html(data);}});}

PHP

  $table_Header=$_GET['tableHeader'];
  $sort_Dir=$_GET['sortDir'];

 if ($table_Header == 'From')
 {
   $sort_By = 'player_name';
 }
 else if ($table_Header == 'To')
 {
  $sort_By = 'player_name';
 }   
 else if ($table_Header== 'Gr')
 {
   $sort_By = 'grp_abr';
 }

 if (isset($sort_Dir) && $sort_Dir == 'DESC')
 {
    $sort_Dir = 'DESC';
 }
else
  {
    $sort_Dir = 'ASC';
  }

   $str = stripslashes('From');
   echo $sortBy;
   $result = mysql_query("SELECT * FROM messages,Player
   where player_id = from_user
   ORDER BY player_name ".$sort_Dir);
   echo "<thead>
   <tr>
   <th style='color:royalblue;'>•</th>
   <th align='center'>Time</th>
   <th align='left' onClick='sort('From',$sort_Dir);'>De:</th>
   <th align='left'>To:</th>
   <th align='left'>Gr</th>
   </tr>
   </thead> ";

  while($row = mysql_fetch_array($result))
  {
  echo "<tbody>
  <tr class='highlight'>
  <td width='30' align='center' style='color:royalblue'>"."•"."</td>
  <td width='70' align='left'>".$row["Time_Date"]."</td>
  <td width='600' align='left'>".$row["player_name"]."</td>
  <td width='600' align='left'></td>
  <td width='100' align='left'></td>
  <tr class='highlight'>
  <td></td>
  <td colspan='4'>".$row["msg_desc"]."</td></tr>
 </tbody>";
  }

Ответы [ 2 ]

2 голосов
/ 12 мая 2009

здесь, после моих наблюдений, после просмотра вашего исходного кода.

sort.php:12 >>> элемент массива $ _GET для направления сортировки опечатан: вы вызываете его $_GET["sortDir"], в то время как функция javascript sort() создает запрос ajax с этой переменной в строке запроса, называемой sortdirection.

sort.php:28 >>> Вам не нужно менять порядок сортировки здесь, так как ваша функция javascript sortDirection() уже делает это. Таким образом, в строках комментариев с 28 по 35 и в строке 44 вместо переменной php $sort_Dir используется переменная javascript sortDir.

user.php:48 >>> сравнение для определения текущего порядка сортировки выполняется для строкового литерала "Desc", в то время как обычно вы используете "DESC" в качестве значения для этой переменной, поэтому первая попытка была в порядке, но вторая просто ничего не делает, "DESC" отличается от "Desc" в Javascript из-за двоичного сравнения строк. Так что замените "Desc" на "DESC" на вашу sortDirection() функцию.

Это должно заставить ваши вещи работать.

0 голосов
/ 04 мая 2009

сначала я бы попытался изменить onClick='sort('From',$sort_Dir);', переключаясь с одинарных кавычек вокруг sort(...) на двойные кавычки, избегая их с обратной косой чертой, когда вы там внутри строки php, таким образом:

onClick=\"sort('From',$sort_Dir);\"

Во-вторых, внутри того же фрагмента вы передаете $ sort_Dir, который будет переведен php в ASC или DESC. Поскольку в такой строке вы пишете некоторый исходный HTML-код, который будет вставлен где-то в ваш документ, чтобы слово ASC или DESC появлялось без кавычек вокруг него, это могло бы сбить с толку синтаксический анализатор javascript.

так что вы должны изменить материал onClick следующим образом:

onClick=\"sort('From','$sort_Dir');\"

Но, как я уже говорил в своем комментарии, вы должны дать более подробную информацию о первом (и, кажется, единственном успешном) вызове sort () (когда это произойдет, как и т. Д.).

Попробуйте и посмотрите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...