Tri d'un SELECT par case à cocher

Résolu
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 30 déc. 2008 à 13:52
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 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

7 réponses

payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
31 déc. 2008 à 10:18
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'
3
Noreaga10000 Messages postés 46 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 27 janvier 2009
30 déc. 2008 à 16:38
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;
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
30 déc. 2008 à 17:22
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
0
Noreaga10000 Messages postés 46 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 27 janvier 2009
30 déc. 2008 à 19:38
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
31 déc. 2008 à 09:50
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 :)
0
Noreaga10000 Messages postés 46 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 27 janvier 2009
2 janv. 2009 à 11:14
C'est cool que tu aies trouvé!
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
2 janv. 2009 à 11:49
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 :)
0
Rejoignez-nous