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

Signaler
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
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

7 réponses

Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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'
Messages postés
46
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
27 janvier 2009

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;
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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
Messages postés
46
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
27 janvier 2009

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.
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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 :)
Messages postés
46
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
27 janvier 2009

C'est cool que tu aies trouvé!
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
1
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 :)