Tri d'un SELECT par case à cocher [Résolu]

payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 30 déc. 2008 à 13:52 - Dernière réponse : payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention
- 2 janv. 2009 à 11:49
Bonjour,

Je vais essayer de faire simple.
J'ai mis en place un petit outil de gestion d'articles en internes, j'ai un select qui lit dans la base et qui affiche toutes els references des articles et toutes les noms des articles à coté (dans le meme select).
J'aimerais que, juste a côté, il y ait 2 cases à cocher : "trier par nom" et "trier par reference"...
Comment metter en place ce tri SVP ?
Voici le code de mon select (si ça peut vous aider) :

<SELECT NAME= "reference_mod" ID="reference_mod"> 
<?php

  $connect=ODBC_connect("TESTPHP5","sa","sasa");
  $sql="select CODEPRODUIT,DESIGNATION from produits  ORDER BY CODEPRODUIT ";
  $res =odbc_exec($connect, $sql) or die($sql."
".odbc_error());
  while (odbc_fetch_row($res))
  { 
    
    $CodeProduit_mod = trim(odbc_result($res,"CODEPRODUIT"));
    $Designation_mod = trim(odbc_result($res,"DESIGNATION"));
    if( $reference_mod == $CodeProduit_mod )
    {
      echo "<OPTION value='".$CodeProduit_mod."' selected='selected'>".$CodeProduit_mod." - ".$Designation_mod."</OPTION>";
    }
    else
    {
      echo "<OPTION value='".$CodeProduit_mod."'>".$CodeProduit_mod." - ".$Designation_mod."</OPTION>";
    }
     
    // $sql="select DESIGNATION from produit where CODEPRODUIT='$CodeProduit_mod'";
  }

ODBC_close($connect);

?> </SELECT>


J'ai souligné et mis en gras la requete qui fait que ça affiche par ordre de REFERENCE...
Enfin je pense que j'ai été clair.

SVP aidez moi
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 31 déc. 2008 à 10:18
3
Merci
Bon je met a jour ce petit POST pour dire que j'ai trouvé la solution

J'ai fais tout simplement :

if(isset($_GET['tri']))
{
  $sql="select CODEPRODUIT,DESIGNATION from produits ORDER BY DESIGNATION";
  $res=odbc_exec($connect, $sql) or die($sql."
".odbc_error());
}
else
{
  $sql="select CODEPRODUIT,DESIGNATION from produits ORDER BY CODEPRODUIT";
  $res=odbc_exec($connect, $sql) or die($sql."
".odbc_error());
}

Et pour mes liens :

[gestion_base_interne.php Tri par ref]

[gestion_base_interne.php?tri=1 Tri par nom]

En tout cas merci d'avoir répondu et d'avoir passé du temps pour moi.
bonne journée et bonnes fetes ;)

Ju'

Merci payetonju 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de payetonju
Noreaga10000 46 Messages postés vendredi 24 octobre 2008Date d'inscription 27 janvier 2009 Dernière intervention - 30 déc. 2008 à 16:38
0
Merci
Bonjour,

A tester, car je n'ai jamais essayer.
Ajoute ta case à cocher (bouton radio, soit un tri soit l'autre) où tu souhaite la faire apparaître, avec un peu de javascript:
<form>
Tri par réf
Tri par nom
</form>

Dans le head de ton fichier, essaie le javascript suivant:
<script type="text/javascript" >

function changeTri()
{
var triRef=document.getElementById("btnTriRef");

if(triRef==null)

{window.location.href="tonfichier.php?order=$orderByRef";}

else
{window.location.href="tonfichier.php?order=$orderByNom";}

}
</script>

Ajoute aussi dans le head:
$orderByRef = "ORDER BY codeproduit ASC";
$orderByNom = "ORDER BY designation ASC";

et dans to variable $sql:
$sql="select CODEPRODUIT,DESIGNATION from produits".$order;
Commenter la réponse de Noreaga10000
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 30 déc. 2008 à 17:22
0
Merci
Bonjour et merci de ta réponse.
J'ai testé et non ça ne marche pas.
Pour résumer, tout en haut de ma page j'ai mis tel quel :
<?php
$orderByRef = "ORDER BY codeproduit ASC";
$orderByNom = "ORDER BY designation ASC";
?>

apres j'ai tout un tas de code dont on s'en fou pour notre traitement. Et apres j'ai ceci :

<SCRIPT TYPE="text/javascript" >



function changeTri()
{
    var triRef=document.getElementById("btnTriRef");



    if(triRef==null)



    {window.location.href="tonfichier.php?order=$orderByRef";}



    else
    {window.location.href="tonfichier.php?order=$orderByNom";}



}
</SCRIPT>
Tri
par réf
Tri
par nom
</TD>
<TD HEIGHT="30">
<SELECT NAME="reference_mod" ID="reference_mod">
<?php

  $connect=ODBC_connect("TESTPHP5","sa","sasa");
  //$sql="select CODEPRODUIT,DESIGNATION from produits ORDER BY CODEPRODUIT";
  $sql="select CODEPRODUIT,DESIGNATION from produits".$order;
  $res=odbc_exec($connect, $sql) or die($sql."
".odbc_error());
  while (odbc_fetch_row($res))
  {
   
    $CodeProduit_mod = trim(odbc_result($res,"CODEPRODUIT"));
    $Designation_mod = trim(odbc_result($res,"DESIGNATION"));
    if( $reference_mod == $CodeProduit_mod )
    {
      echo "<OPTION value='".$CodeProduit_mod."' selected='selected'>".$CodeProduit_mod." - ".$Designation_mod."</OPTION>";
    }
    else
    {
      echo "<OPTION value='".$CodeProduit_mod."'>".$CodeProduit_mod." - ".$Designation_mod."</OPTION>";
    }
    
    // $sql="select DESIGNATION from produit where CODEPRODUIT='$CodeProduit_mod'";
  }



ODBC_close($connect);



?>
 </SELECT>

les bouton radio ne sont pas cliquables, il refuse le clic dessus
Merci
Commenter la réponse de payetonju
Noreaga10000 46 Messages postés vendredi 24 octobre 2008Date d'inscription 27 janvier 2009 Dernière intervention - 30 déc. 2008 à 19:38
0
Merci
T'as raison c'est n'importe quoi mon code.
Essayes ça:
<head>
<title></title>
<SCRIPT TYPE="text/javascript" >
function changeTri()
{
    if ( document.formulaire.btnTri[0].checked) {
        window.location.href="tonfichier.php?order=1";}
    if ( document.formulaire.btnTri[1].checked ) {
        window.location.href="tonfichier.php?order=2";}
}
</SCRIPT>
</head>

<form name="formulaire" onchange="javascript: changeTri();return false">
Tri
par réf
Tri
par nom
</form>

<?php
if ($order==2)
{
    $orderBy = "ORDER BY designation DESC";   
}
else
{
    $orderBy = "ORDER BY codeproduit DESC";
}

la variable $sql doit rester inchangée.
Commenter la réponse de Noreaga10000
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 31 déc. 2008 à 09:50
0
Merci
Bonjour,
Alors ça ne marche pas non plus... En me creusant un peu, je l'ai fait par 2 méthodes ( a peu pres similaires) mais j'ai un souci :




if(isset($_GET['tri'])&& ($GET['tri']=nom))
{
  $sql="select CODEPRODUIT,DESIGNATION from produits ORDER BY DESIGNATION";
  $res=odbc_exec($connect, $sql) or die($sql."
".odbc_error());
}
elseif(isset($_GET['tri'])&& ($GET['tri']=ref))
{
  $sql="select CODEPRODUIT,DESIGNATION from produits ORDER BY CODEPRODUIT";
  $res=odbc_exec($connect, $sql) or die($sql."
".odbc_error()); 
}
else
{
$sql="select CODEPRODUIT,DESIGNATION from produits ORDER BY CODEPRODUIT";
$res=odbc_exec($connect, $sql) or die($sql."
".odbc_error()); 
}



et




if(isset($_GET['tri']))
{
  if ($GET['tri']=nom)
  {
    $sql="select CODEPRODUIT,DESIGNATION from produits ORDER BY DESIGNATION";
    $res=odbc_exec($connect, $sql) or die($sql."
".odbc_error());
  }
  else
  {
    $sql="select CODEPRODUIT,DESIGNATION from produits ORDER BY CODEPRODUIT";
    $res=odbc_exec($connect, $sql) or die($sql."
".odbc_error());
  }
}
else
{
$sql="select CODEPRODUIT,DESIGNATION from produits ORDER BY CODEPRODUIT";
$res=odbc_exec($connect, $sql) or die($sql."
".odbc_error());
}



et les 2 liens sur lesquels je clique (c'est plus simple par lien en fait) :
[gestion_base_interne.php?tri=ref Tri par ref]

[gestion_base_interne.php?tri=nom Tri par nom]


Quand je touche a rien, au départ, cela tri par CODEPRODUIT (comme je voulais !) mais peut importe le lien sur lequel je clique il me tri toujours par nom , comment est possible ? (dans les 2 cas de figure, d'ailleurs je ne sais pas quel est le plus fiable)


merci beaucoup :)
Commenter la réponse de payetonju
Noreaga10000 46 Messages postés vendredi 24 octobre 2008Date d'inscription 27 janvier 2009 Dernière intervention - 2 janv. 2009 à 11:14
0
Merci
C'est cool que tu aies trouvé!
Commenter la réponse de Noreaga10000
payetonju 437 Messages postés mercredi 26 septembre 2007Date d'inscription 2 juillet 2014 Dernière intervention - 2 janv. 2009 à 11:49
0
Merci
bah oui mais si j'ai trouvé c'est grâce à tous ceux qui postent pour moi, dont toi :) je reprend les idées à droite a gauche et ça me donne ceci :)
Commenter la réponse de payetonju

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.