IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Tri tableau et conservation valeure liste déroulante


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Points : 179
    Points
    179
    Par défaut Tri tableau et conservation valeure liste déroulante
    Bonjour,

    Le développeur c# que je suis doit régler un problème PHP.
    Le problème : j'y connais absolument rien.

    J'ai un formulaire avec une liste déroulante de fournisseurs.
    Quand on sélectionne un fournisseur j'ai un tableau avec la liste des article qu'il vend, le prix, etc..

    Je dois mettre en place un tri asc/desc quand l'utilisateur clique sur l'entete d'une colonne.

    Code du form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    <?
    include("lib_articlesfournisseurs.php");
    $conn = ConnectDB();
     
    /** Liste des fournisseurs **/
    $fournisseurs = select_fournisseurs($conn,"fr_societe");
    $nb_fournisseurs = mysql_numrows($fournisseurs);
    if($nb_fournisseurs > 0){
    	$listeFournisseur = "<option value=\"\"></option>\n";
    	for($a = 0; $a < $nb_fournisseurs; $a++){
    		$rs_fournisseurs = mysql_fetch_array($fournisseurs);
    		$listeFournisseur.= "<option value=\"$rs_fournisseurs[fs_id]\" ";
    		if($rs_fournisseurs[fs_id] == $fournisseurChoisi){$listeFournisseur .= "selected";}
    		$listeFournisseur.= ">$rs_fournisseurs[fr_societe]</option>\n";
    	}
    }
     
    /** Sélection des article du fournisseur choisi **/
    if($fournisseurChoisi != ""){
    	$articles = select_articlesFournisseur($conn,$fournisseurChoisi);
    	$nb_articles = mysql_numrows($articles);
    }
    ?>
    <div id="bigliste" style="position:absolute;width:695;height:590;top:100;left:128;z-index:3;overflow:auto;">
    <table width="675" cellpadding="0" cellspacing="0" border="0">
       <!--<tr><td colspan="2">&nbsp;</td></tr>-->
       <tr>
       		<td colspan="2" class="titre1">
       			<form method=post>
    	   			<b>
    	   				Gestion des article du fournisseur : 
    	   				<select name="fournisseurChoisi" onChange="submit();">
    	   					<?=$listeFournisseur?>
    					</select>
    	   			</b>
    	   		</form>
       		</td>
       </tr>
       <tr>
       		<td colspan="2">
       		<?
       		if($nb_articles > 0){
       			?>			
     
    	   			<table width="675" cellpadding="2" cellspacing="0" class=impression height="100%">
    	   			 	<tr>
    						<td class="enteteTab" align="center" width=495><b>Article</b></td>
    						<td class="enteteTab" align="center" width=100><b>Prix</b></td>
    						<td class="enteteTab" align="center" width=100><b>Quantité</b></td>
    					</tr>
    	   			<?
    	   			for($b = 0; $b < $nb_articles; $b++){
    	   				$rs_articles = mysql_fetch_array($articles);
    	   				$monprix=$rs_articles["prix"];
     
    	   				$topprix=select_topPrixarticles($conn,$rs_articles["art_id"]);
    	   				$code_bulle="bulle_".$rs_articles["art_id"];
    	   				$bulle= "<DIV>";
    	   				$bulle.="<table border=0 width=100%>";
    	   				unset($topvariation);
    	   				while($prix=mysql_fetch_array($topprix))
    	   				{
    	   					$variation=intval(100*($prix["prix"]-$monprix)/$monprix);
    	   					if (!isset($topvariation)) $topvariation=$variation;
    	   					if ($prix["fs_id"]==$fournisseurChoisi) $bulle.= "<tr bgcolor=white><td>".$prix["societe"]."</td><td>".$prix["prix"]."</td><td>---</td></tr>";
    	   					else
    	   					{
    	   						if ($variation<0)$bulle.= "<tr bgcolor=green>";
    	   						else $bulle.= "<tr>";
    	   						$bulle.= "<td>".$prix["societe"]."</td><td>".$prix["prix"]."</td><td>$variation %</td></tr>";
    	   					}
    	   				}
    	   				$bulle.= "</table></DIV>";
    	   				//$les_bulles[]=$bulle;
    	   				if ($b%2==0){ $bg="#ffffff"; } else { $bg="#eeeeee"; }
    	   				if ($topvariation<0) $bg="red";
    	   			 		?>
    	   			 		<tr>
    							<td class="ligne" bgcolor="<?=$bg?>"><?=stripslashes($rs_articles[art_libelle])?></td>
    	   			 		<td class="ligne" bgcolor="<?=$bg?>" onmouseover="return escape('<?=$bulle ?>')"><?=$rs_articles[prix]?></td>
    							<td class="ligne" bgcolor="<?=$bg?>"><?=stripslashes($rs_articles[art_quantite])?></td>
    						</tr>
    	   			 		<?	
    	   			}
    	   			?>
    	   			</table>			
       			<?
       		}
       		?>
       		</td>
       </tr>
    </table>
    </div>
    <script language="JavaScript" type="text/javascript" src="/scripts/js/wz_tooltip.js"></script>
    <? 
    ConnexionFerme($conn);
    ?>
    Code des fonction php utilisés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?
    	//Sélection des fournisseurs
    	Function select_fournisseurs($conn,$ordre){
    		$requete = "SELECT * FROM fournisseurs order by $ordre";
    		$resultat = mysql_query($requete,$conn)or die("<b>Impossible de sélectionner les fournisseurs</b><br>".mysql_error());	
    		return $resultat;	
    	}
     
    	/** Sélection des article du fournisseur choisi **/
    	Function select_articlesFournisseur($conn,$fr_id){
    		$req = "select fournisseurs.fs_id,fournisseurs.fr_societe,fournisseurs.fs_contact,link_fournisArticles.lfa_prix as prix,articles.* ";
    		$req.= "from fournisseurs,articles,link_fournisArticles where link_fournisArticles.lfa_artID=articles.art_id ";
    		$req.= "and link_fournisArticles.lfa_frID=fournisseurs.fs_id and link_fournisArticles.lfa_frID=$fr_id order by fournisseurs.fs_id,articles.art_libelle";	
    		$resultat = mysql_query($req,$conn)or die("<b>Impossible de sélectionner les articles du fournisseur</b><br><br>".mysql_error());	
    		return $resultat;	
    	}
     
    ?>
    J'ai essayé d'ajouter une variable ?tri incluse dans une HREF dans l'entetes des tableau. J'arrive a m'en sortir a peu près.
    Le problème c'est que ça réinitialise la liste déroulante lorsqu'on clique sur le lien de l'en-tetes.

    Si vous aviez une solution

    Merci d'avance.
    Cdlt,
    Mvk

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Qu'est ce que tu veux pas dire "réinitialise la liste déroulante" ?

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Points : 179
    Points
    179
    Par défaut
    Hello merci de l’intérêt pour mon problème!

    Donc je sélectionne un fournisseur dans ma liste.
    Ça m'affiche le tableau classé par nom d'article.

    Si je clique sur l'en-tête "Prix", ça me redirige sur mon url avec "tri=prix" (code que j'ai ajouté)

    Mais ma liste déroulante est vide, je dois sélectionner à nouveau mon fournisseur dans la liste.

    Cdlt,
    MvK

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà, une façon un peu plus conforme de parcourir tes résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $fournisseurChoisi = $_REQUEST['fournisseur'];
    /** Liste des fournisseurs **/
    $fournisseurs = select_fournisseurs($conn,"fr_societe");
    $listeFournisseur = '<option value=""></option>' . "\n";
    while ($rs_fournisseurs = mysql_fetch_array($fournisseurs)) {
    	$listeFournisseur.= "<option value=\"$rs_fournisseurs[fs_id]\" ";
    	if($rs_fournisseurs[fs_id] == $fournisseurChoisi'){$listeFournisseur .= "selected";}
    	$listeFournisseur.= ">$rs_fournisseurs[fr_societe]</option>\n";
    	}
    }
    Tu l'avais peut être fait dans une autre partie du code mais même si ton serveur le permet, n'appelle pas directement $xxxx pour une valeur reçu en GET ou POST mais bien $_GET['xxxx'], $_POST['xxxx']

    Je ne vois pas dans le code que tu as mis ou est ton tri=prix mais tu as juste a ajouter également le fournisseur fournisseur=$fournisseurChoisi&tri=prix

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2012
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2012
    Messages : 87
    Points : 179
    Points
    179
    Par défaut
    Hello,

    Merci pour ton bout de code. Je l'ai au moins remis ici mais tout les parcours de résultats de l'appli sont pas très conformes apparemment ^^.
    Je m'en suis donc sorti en utilisant la variable $tri, je redirigie vers l'url qui va bien en utilisant $_GET['xxxx'] pour récupérer le fournisseur en cours sélectionné dans la lise déroulante.

    Pour le tri asc ou desc je récupère la valeur de $tri et adapte en fonction de son contenu.

    Bref je penses que mon code est un peu crade mais bon, il marche et c'est une application en fin de vie développé par un prestataire à l'époque qui mérite pas que je m'y attarde 3 jours non plus!

    J'aurais au moins appris quelques petits truc grâce à toi!

    Cdlt,
    Mvk

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] lier un tableau de données à une liste déroulante
    Par Sh4dow49 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/07/2008, 22h21
  2. Réponses: 2
    Dernier message: 20/03/2008, 10h19
  3. affichage =/= valeur (liste déroulante)
    Par laurent.c123 dans le forum JSF
    Réponses: 2
    Dernier message: 05/06/2007, 13h08
  4. Valeur liste déroulante dans un état
    Par guilpau dans le forum IHM
    Réponses: 4
    Dernier message: 29/01/2007, 11h52
  5. [VBA] choix valeur liste déroulante (champ texte d'1 table)
    Par Lou Pitchoun dans le forum Access
    Réponses: 14
    Dernier message: 22/02/2006, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo