2009-05-04 10 views
0

Quel est le problème avec ce code, il fonctionne la première fois quand je construis l'en-tête encore une erreur qui vous dira De n'est pas définiTrier en utilisant jquery et php

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>"; 
    } 
+0

Veuillez spécifier "reconstruire l'en-tête". Invocations ultérieures de la fonction sort()? Recharger la page? Autre chose? Quand et comment ces invocations se produisent-elles? Merci. –

+0

... oh, et j'ai oublié: quand et comment se produit la première invocation de sort()? –

+0

et last but not least: sur quel navigateur (et la version associée) exécutez-vous cela? –

Répondre

2

suite à mes observations, après avoir regardé votre code source.

sort.php:12 >>> l'élément de _GET $ pour la direction de tri est une erreur de frappe: vous l'appelez $_GET["sortDir"] tandis que la fonction javascript sort() compose la demande ajax avec cette variable QueryString appelée « SortDirection ».

sort.php:28 >>> Vous n'avez pas besoin d'inverser l'ordre de tri, car votre fonction javascript sortDirection() le fait déjà. Ainsi, les lignes de commentaire de 28 à 35 et à la ligne 44 n'utilisent pas la variable php $sort_Dir, mais la variable javascript sortDir à la place.

user.php:48 >>> la comparaison pour déterminer l'ordre de tri actuel est fait contre la chaîne littérale "Desc", pendant que vous utilisez généralement "DESC" comme valeur de cette variable, de sorte que le premier essai était bien, mais la seconde ne fonctionne tout simplement rien, comme "DESC" est différent de "Desc" dans Javascript, en raison de la comparaison binaire entre les chaînes. Changez donc "Desc" en "DESC" en fonction sortDirection().

Cela devrait fonctionner.

+0

Merci Scarlet pour votre aide – Sarah

0

d'abord je voudrais essayer de changer le onClick='sort('From',$sort_Dir);' commutation de guillemets simples autour de sort(...) à des guillemets doubles, en leur échappant avec un backslash comme vous êtes à l'intérieur d'un php st anneau là, de cette façon:

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

En second lieu, dans le même extrait, vous passez $ sort_Dir, qui sera traduit par php en ASC ou DESC. Puisque dans une telle chaîne vous écrivez du code html source à insérer quelque part dans votre document, laisser le mot ASC ou DESC apparaître sans guillemets autour de celui-ci va perturber l'analyseur javascript.

donc vous devez changer les choses onClick comme ceci:

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

Mais comme je l'ai dit dans mon commentaire, vous devez donner plus de détails sur le premier (et le seul succès, il semble) invocation de tri () (quand cela se produit, comment etc.).

Essayez ceci et voyez.

+0

Merci pour la réponse Scarlet, la première fois est quand il est appelé depuis la page principale de l'index.php quand j'ai créé l'en-tête de la table la première fois index .php var sortDir = 'ASC'; var sortBy = 'Time_Date'; fonction sortDirection() { \t if (sortDir == 'Desc') \t {\t \t sortDir = 'ASC'; \t} \t autre \t { \t \t sortDir = 'DESC'; \t} \t } De: maintenant où dois-je ajouter direction de tri – Sarah

+0

Et je cours sur Mozilla firefox et safari – Sarah

+0

Bonjour Sarah, as-tu déjà essayé les changements que j'ai suggérés? SVP laissez-moi savoir si ils travaillent. S'ils ne me permettent pas de définir certains cas de test: a) la page est chargée pour la première fois; est la fonction sort() exécutée? Est-ce que ça marche? b) vous cliquez sur l'en-tête 'De' pour la première fois; fait trier() fonctionne? c) vous cliquez sur l'en-tête 'De' pour 5 fois supplémentaires; est-ce que trier() fonctionne à chaque fois? Commençons à partir d'ici, si nous ne venons pas à quelque chose de ce genre, je pense que je ne peux pas vous aider sans regarder le code entier, désolé. –

Questions connexes