Trier affichage requète selon une variable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Trier affichage requète selon une variable

par ouckileou » 09 avr. 2008, 15:57

j'imagine de toute façon que ca marche :)
Oui :-)
- ta boucle "foreach($tableau as $data)" est à supprimer dans mon cas et à remplacer par while($data = mysql_fetch_assoc($req) : tu as uniquement remplacé mon while par un foreach étant donné que ton tableau était déjà fait, c'est bien ca ?
Oui, moi j'utilise un tableau à plusieurs dimensions (un tableau général qui contient plusieurs autres). Toi, tu utilises une ressource MySQL (voir doc) + mysql_fetch_assoc() qui te renvoie un tableau par ligne de résultats. C'est du détail, ne te prend pas la tête là dessus. La structure reste globalement la même.
- je ne comprends pas tout à fait "$tableau_articles[] = $data;" (ca sera sans doute plus clair une fois que j'aurais regardé plus en détail les deux tutoriels que j'ai trouvé). Pour moi $data se présentait exactement de la même forme que $tableau_articles soit :
C'est très simple :
$tableau_articles = $data; // $data est COPIE dans $tableau_articles, $tableau_articles contient ensuite $data, et uniquement $data, $tableau_articles == $data
$tableau_articles[] = $data; // $data est AJOUTE à $tableau_articles, dans une nouvelle cellule
Fais un test avec deux tableaux bidons avec et sans [] et des print_r(), tu verras bien la différence.
- je comprends pas tout à fait non plus pourquoi on passe le tableau en colonnes
Parceque c'est explicitement marqué dans la doc, dans l'exemple "trier des résultats de base de données. array_multisort() a besoin de cette entrée (elle trie des données dans un même tableau, pas dispersées entre plusieurs)

Il faut vraiment que tu comprennes le concept de tableaux multidimensionnels, fais des schémas s'il le fait, après ça roulera tout seul.

par Meyan » 09 avr. 2008, 15:10

D'accord merci pour ton code commenté. Je l'ai juste regardé en détail sans le tester pour l'instant, j'imagine de toute façon que ca marche :)


Je tiens à reprendre cette histoire d'arrays en détail parce que ca me semble important pour la suite. Je comptais pas vraiment voir ca tout de suite mais puisque j'ai commencé à mettre le nez dedans... J'ai trouvé deux tutoriels assez clairs et détaillés, j'ai déjà commencé à lire chaque étape pour mieux comprendre. C'est toujours pas totalement clair mais une fois que j'aurais testé chaque exemple ca sera sans doute mieux. Je tiens à bien comprendre cettte histoire de tableaux quand même, ca m'agace que ca soit aussi confus.

En ce qui concerne ton code, ca m'amène plusieurs questions en effet. C'est sans doute des questions qui vont te sembler évidentes... :

- ta boucle "foreach($tableau as $data)" est à supprimer dans mon cas et à remplacer par while($data = mysql_fetch_assoc($req) : tu as uniquement remplacé mon while par un foreach étant donné que ton tableau était déjà fait, c'est bien ca ?

- je ne comprends pas tout à fait "$tableau_articles[] = $data;" (ca sera sans doute plus clair une fois que j'aurais regardé plus en détail les deux tutoriels que j'ai trouvé). Pour moi $data se présentait exactement de la même forme que $tableau_articles soit :

Code : Tout sélectionner

$data[0] = | article | montant | coef | remise | $data[1] = | article | montant | coef | remise | $data[2] = | article | montant | coef | remise | $data[3] = | article | montant | coef | remise |
- je comprends pas tout à fait non plus pourquoi on passe le tableau en colonnes alors qu'en ligne la disposition me convenait tout à fait (ce qui équivaut donc à $tableau_articles dans ton code). Je sais que ca n'est pas bon mais intuitivement j'aurais bien bien fait ensuite directement quelque chose comme :

Code : Tout sélectionner

array_multisort($data['remise'], SORT_DESC, $tableau_articles);
puis ton foreach.


Donc en fait j'aurais zappé $tableau_articles[] = $data; , ainsi que la partie ou on met le tableau en colonnes : foreach ($tableau_articles as $key => $row) jusqu'à $remise[$key] = $row['remise'];

Cela vient déjà sans doute de ma confusion entre $data et $tableau_articles qui sont similaires pour moi. Je vais faire un print_r sur les deux pour mieux me les représenter et voir la différence.

par ouckileou » 09 avr. 2008, 12:22

Bon voici ce que j'ai fait :
<?php
$prix = 250; // tu récupères normalement cette variable depuis ton formulaire
echo 'Prix = '.$prix.'<br /> <br />'; // affichage

$tableau = array( // ce tableau serait dans ton cas la ressource renvoyée par mysql_query()
	array('article'=>'article A', 'montant' => 199, 'coef' => 0.5), // correspond à une ligne renvoyée par la requête "SELECT article, montant, coef FROM calcul WHERE min <= $prix AND max >= $prix'"
	array('article'=>'article B', 'montant' => 299, 'coef' => 1),
	array('article'=>'article C', 'montant' => 399, 'coef' => 1.2),
	array('article'=>'article D', 'montant' => 499, 'coef' => 1.5),
	array('article'=>'article E', 'montant' => 599, 'coef' => 3),
	array('article'=>'article F', 'montant' => 699, 'coef' => 1),
);

foreach($tableau as $data) {  // correspond chez toi à while($data = mysql_fetch_assoc($req) vu qu'ici on a un tableau

	// calcul de la remise
	if($data['montant'] < $prix) { 
		$res = $data['montant'];
	} else  {
		$res = ($data['coef'] * $prix);
	}

	if($data['montant'] < $res) { 
		$res = $data['montant'];
	}

	// stockage de la valeur calculée (remise) dans le tableau $data : on ajoute une nouvelle colonne 'remise' avec comme valeur $res
	$data['remise'] = $res;
	
	// on stocke le tableau $data dans une nouvelle cellule de $tableau_articles
	$tableau_articles[] = $data;
}

/* On a maintenant un tableau de lignes (tableau A)
$tableau_articles est un tableau à plusieurs dimensions, puisqu'on a $tableau_articles[0]['article'], $tableau_articles[0]['remise'] etc
$tableau_articles[0] = | article | montant | coef | remise |
$tableau_articles[1] = | article | montant | coef | remise |
$tableau_articles[2] = | article | montant | coef | remise |
$tableau_articles[3] = | article | montant | coef | remise |
*/
?>
<!-- le HTML ici  sert juste à l'affichage, pour présenter les données traitées -->
Tableau non trié :<br />
<table border="1">
	<tr>
		<td>Article</td><td>Prix</td><td>Coef</td><td>Remise</td>
	</tr>
<?php
	foreach($tableau_articles as $article) {
		echo '<tr>';
		echo '<td>'.$article['article'].'</td><td>'.$article['montant'].'</td><td>'.$article['coef'].'</td><td>'.$article['remise'].'</td>';
		echo '</tr>';
	}
	
?>
</table>
<br /> <br />
Tableau trié sur la remise :<br />
<table border="1">
	<tr>
		<td>Article</td><td>Prix</td><td>Coef</td><td>Remise</td>
	</tr>
<?php
	// On veut ici un tableau de colonnes
	// On regroupe dans chaque tableau les valeurs de même type (un tableau pour les articles, un pour les montants etc)
	// La correspondance entre un montant et sa remise se fera grâce aux clés numériques
	foreach ($tableau_articles as $key => $row) {
		// si on regarde le tableau A affiché plus haut, on voit que $key vaudra 0,1,2,3 et $row sera un tableau [| article | montant | coef | remise |]
	    $article[$key]  = $row['article'];
	    $montant[$key] = $row['montant'];
		$coef[$key] = $row['coef'];
		$remise[$key] = $row['remise'];
	}
	/* On obtient
	$article : | article 0 | article 1 | article 2 | article 3 |
	$montant : | montant 0 | montant 1 | montant 2 | montant 3 |
	$coef : | coef 0 | coef 1 | coef 2 | coef 3 |
	$remise : | remise 0 | remise 1 | remise 2 | remise 3 |
	*/
	
	// on demande ici  de trier le tableau $remise en ordre décroissant, en gardant les correspondances au sein du tableau $tableau_articles avec les clés numériques communes
	array_multisort($remise, SORT_DESC, $tableau_articles);
	
	// on l'affiche
	foreach($tableau_articles as $produit) {
		echo '<tr>';
		echo '<td>'.$produit['article'].'</td><td>'.$produit['montant'].'</td><td>'.$produit['coef'].'</td><td>'.$produit['remise'].'</td>';
		echo '</tr>';
	}
?>
</table>
J'ai commenté chaque ligne, maintenant si tu as une question sur un point précis, demande. Dès que tu vois un élément de syntaxe inconnu, ou que tu ne comprends pas dans le contexte, va voir dans la doc.

Quand tu es sur une page du manuel, pense à regarder les exemples (je suis d'accord que la signature d'une méthode et l'explication des paramètres ne sont pas toujours très facile à comprendre). Fais aussi de petits scripts de test pour manipuler les tableaux, utiliser les fonctions que tu découvres, ainsi tu comprendras bien chaque chose.

par Meyan » 09 avr. 2008, 02:54

Salut ouckileou


ne t'en fais pas, je sais bien que ce n'était pas méchant. Néanmoins je t'assure que j'ai bien fait et regardé ce que tu m'as dit (tes codes, le manuel etc...).

Je pensais pas que ca serait si compliqué de trier ces résultats, je me serais peut etre pas lancé la dedans comme ca le cas échéant. Pour parvenir plus facilement à la solution, je crois qu'il faudrait comme tu le suggères que je commence tout simplement par le début et essayer de mieux comprendre cette histoire de tableaux en commencant par un truc tout simple. Puis en y allant crescendo.

Le manuel php est sans doute une bonne référence quand on maitrise déjà un minimum mais c'est vraiment pas très clair pour un neophyte. Je vais essayer de trouver un "tutorial" plus simple et détaillé.

Si tu as le temps de me redonner une piste demain je veux bien, ca m'aidera certainement.


Mais t'embète pas non plus, je vais laisser ca de coté quelques jours et essaierai de me motiver pour comprendre le fonctionnement de ces tableaux multi-dimensionnels quand j'aurais retrouvé le courage de reprendre ca à plat.


Merci en tout cas pour ton aide jusqu'ici.

par ouckileou » 09 avr. 2008, 01:29

Précision : je ne disais pas ça pour méchamment. J'ai juste l'impression que tu avances à l'aveuglette, et ça ne sert à rien. Demain, je te redonnerai du code en essayant d'expliquer chaque partie.

Il faut vraiment que tu rentres bien dans le système de tes tableaux pour comprendre comment fonctionnera le tri ensuite. Je pense qu'il serait bien que tu travailles sur le problème en dehors de ton script général, avec un code particulier. En commençant avec un tableau rempli de manière statituqe (données écrites par toi-même, en dur) et en ajoutant petit à petit les éléments qui t'approcheront du résultat, ce sera plus simple. C'est d'ailleurs un bon moyen en général, isoler le problème, travailler dessus et comprendre le fonctionnement pour ENSUITE l'incorporer dans son code métier.

Faire une pause ça sera bien aussi :)

par Meyan » 09 avr. 2008, 01:04

J'ai mis le résultat du print_r dans mon message au dessus mais je ne l'ai pas détaillé car ca prenait beaucoup de place et ca ne sert pas réellement pour continuer. Je pensais que tu voulais juste me faire visualiser le résultat afin que je comprenne mieux. D'ailleurs ca a été le cas, j'ai l'impression que c'est un peu plus clair tout de même, au moins qu'il faut d'abord trier les résultats de la requète dans des tableaux puis englober le tout dans un autre tableau trié. Reste à trouver comment faire.

Je t'assure que j'ai vraiment bien regardé tous les codes que tu m'as donné et réfléchi à tes commentaires, plus qu'en détail puisque je les ai tous triturés dans tous les sens en espérant trouver la solution par moi même. Idem pour le manuel php, j'ai même essayé chacun des exemples un à un sur mon script l'un après l'autre ainsi que certains des codes donnés dans les commentaires et même en cherchant ailleurs.

C'est certain que j'ai pas du saisir en revanche si je galère comme ca et que ca n'est pas compliqué. Ca fait 3 jours que je passe 4 ou 5 heures dessus, j'avais déjà cherché pendant 1 journée avant de poster mon message mais c'est vraiment pas simple quand on commence. Il y a 1001 facons de faire une erreur et "une" seule pour que ca marche. Malgré ton aide, c'est loin d'être évident de savoir vers quoi me diriger, comment le mettre en place, éviter les erreurs. Si ca se trouve avec tout ce que j'ai fait, je suis passé juste à coté à un moment mais une erreur quelconque à fait que ca n'a pas marché.

J'ai peut etre aussi passé un peu trop de temps là dessus. Là je suis un peu découragé que ca soit aussi compliqué d'arriver au bout. Je vais laisser tomber ca pour l'instant et j'y reviendrais peut etre dans quelques jours en essayant de reprendre ca depuis le début.

En tout cas je te remercie d'avoir pris le temps de me répondre et de me donner des pistes à chaque fois pour me faire avancer. J'aurais préféré te "récompenser" en trouvant mais là c'est décourageant d'y avoir passé autant de temps sans résultat.

Je ne souhaite pas le code tout fait, j'essaierai de le trouver quand la motivation sera revenue. Merci quand même pour ton aide.

par ouckileou » 08 avr. 2008, 23:35

- qu'on a inséré le tableau $data à un nouveau tableau $tableau_articles (bien que je ne vois pas trop l'interet puisque $data existe déjà et est identique).
Ben non justement, ils ne sont pas identiques. le $tableau_articles contient plusieurs tableaux $data. $tableau_articles est donc un tableau à plusieurs dimensions.

J'ai l'impression que tu n'as pas encore saisi ce que représentent les tableaux, et comment ils fonctionnent. Pas étonnant donc que le tri d'un tableau à plusieurs dimensions te semble compliqué.

Par exemple, tu me parles "d'incorporer la balise <table> quelquepart". <table> c'est du HTML, c'est juste pour l'affichage, c'était pour te montrer ce que cela donne visuellement. ça n'a rien à voir avec la manipulation de tes tableaux.

J'ai déjà fait ton code, avec juste un tableau statique qui simule ce que te renvoie ta requête SQL, ensuite je calcule les remises, et les trie. Mais je ne crois pas qu'ils soit utile que je te le donne sans que tu n'ais compris les bases.

Je t'ai donné des bouts de code pour expliquer pas à pas, avec des commentaires, mais je n'ai pas l'impression que tu les ais exécutés. Je t'ai demandé plusieurs fois de me donner le résultat d'un print_r() sur un tableau, tu ne l'as jamais fait. Par exemple pour qu'on voit de façon "structurée" (visuellement) ce que tu récupères comme données après ta requête.

Je veux bien continuer à t'expliquer les choses, et repasser dessus, mais on va perdre notre temps tous les deux si tu ne fais pas ce que je te dis.
Donc je te propose que tu reprennes mes messages, que tu exécutes le code, fasse ce que je te demande, essaies de comprendre en allant lire la doc, et qu'éventuellement tu me poses des questions précises sur l'utilité de telle ou telle ligne. Comme ça on avancera et tu comprendras ce que tu auras fait.

par Meyan » 08 avr. 2008, 19:56

Ou peut etre en ajoutant un truc dans ce style là après le tableau $produit (et en rajoutant la balise <table> quelque part) :
    $tableau_fin = array_multisort($produit['remise'], SORT_DESC, $produit); 
    foreach($produit as $tri) { 
        echo '<tr>'; 
        echo '<td>'.$tri['articles'].'</td> <td>'.$tri['remise'].'</td>'; 
        echo '</tr>'; 
    } 

Ca fonctionne pas non plus mais ca doit pas être si loin...

par Meyan » 08 avr. 2008, 19:28

Quel bazar pour trier un tableau, c'est fou :shock: :)

Par contre c'est intéressant les deux lignes que tu as rajouté, je ne savais pas qu'on pouvait faire ca.

La modif que tu as faite dans ton message précédent donne le résultat suivant :

Code : Tout sélectionner

Array ( [0] => Array ( "liste des données de ma requete $data" ) ) Array ( [1] => Array ( "liste des données de ma requete $data" ) etc... pour chaque ligne de ma requète $data jusqu'à ce qu'il ait fait le tour de la table liée à la requète.


donc j'ai bien compris
- qu'on a intégré la variable $res (qui correspond à la remise) au tableau $data.
- qu'on a inséré le tableau $data à un nouveau tableau $tableau_articles (bien que je ne vois pas trop l'interet puisque $data existe déjà et est identique).


J'ai compris qu'à ce stade j'ai une liste de tableaux triés pour chacune des réponses de ma requète. Il faut donc les incorporer dans un autre tableau qui triera ces "sous tableaux".

Ca avance ! :). Peut être en ajoutant après le tableau $produit une ligne du style
 $tableau_fin = array($produit['$articles'], $produit['remise'], SORT_DESC);

J'ai fait plusieurs essais mais ca n'a pas marché. Pour l'instant c'est ce qui me semble le plus logique, je réessaierai ce soir... :)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par ouckileou » 08 avr. 2008, 16:43

Il faut que tu insères les manipulations dans ton propre code, de sorte à obtenir à la fin un tableau, qui contient lui-même d'autres tableaux, un pour chaque article (avec prix et remise)

Voici une suggestion :

$sql = "SELECT * FROM calcul WHERE min <= $prix AND max >= $prix'"; 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());   


$num_rows = mysql_num_rows($req); 
if($num_rows == 0) { 
	echo "<b><center>Désolé, il n'y a aucune réponse pour cette somme.</center></b>"; 
} else {
	while($data = mysql_fetch_assoc($req)) {  
		if($data['montant'] < $prix) { 
			$res = $data['montant']; 
		} else  {
			$res = ($data['coef'] * $prix); 
		}
	
		if($data['montant'] < $res) { 
			$res = $data['montant']; 
		}

		// stockage de la valeur calculée (remise) dans le tableau $data (on crée une nouvelle colonne)
		$data['remise'] = $res;
		
		// stockage de ce tableau dans un autre qui servira pour le tri
		// les [] signifie qu'on l'ajoute aux autres tableaux déjà stockés dedans
		$tableau_articles[] = $data;
	}
}
echo '<pre>';
print_r($tableau_articles);
echo '</pre>';
Je n'ai rajouté que les deux lignes commentées.
Essaie et donne nous le résultat du print_r();

par Meyan » 08 avr. 2008, 15:42

J'ai eu quelques soucis à intégrer ton tableau trié à mon script parce que l'affichage était corrompu mais ca venait des balises <table> que j'avais mal placées.

Donc c'est réglé lorsque j'insère ton code dans mon script ca fonctionne bien, le tableau trié s'affiche (j'ai enlevé le non trié par souci de clarté). En revanche dès que je modifie les valeurs de l'array ca ne fonctionne plus.


Pour remplacer les valeurs de l'array par les données que je récupère dans ma requète j'ai mis ca :
$tableau = array( 
    array('articles'=>$data['article'], 'remise' => $res), 
); 

A la place de ce que tu avais mis pour ton exemple :
<?php  
$tableau = array(  
    // tri attendu suivant la remise : F, B, D, A, E, C  
    array('article'=>'article A', 'prix' => 199, 'remise' => '20'),  
    array('article'=>'article B', 'prix' => 299, 'remise' => '50'),  
    array('article'=>'article C', 'prix' => 399, 'remise' => '10'),  
    array('article'=>'article D', 'prix' => 499, 'remise' => '40'),  
    array('article'=>'article E', 'prix' => 599, 'remise' => '15'),  
    array('article'=>'article F', 'prix' => 699, 'remise' => '75'),  
);  
?>

Le problème c'est qu'avec mon array modifié tel que je l'ai mis juste au dessus, il me créé un tableau pour chaque valeur de la requète au lieu de toutes les regrouper dans un seul tableau.

Donc à priori si j'arrive à remplir correctement l'array pour qu'il regroupe toutes les réponses de la requète dans un même tableau ca sera bon mais je ne vois pas trop quoi mettre d'autre...

par ouckileou » 08 avr. 2008, 10:35

Bah cette partie c'est juste pour créer un tableau de test, moi je ne l'ai pas ta base faut bien que je me débrouille autrement :)

Mais si je ne m'abuse tu dois obtenir le même genre de tableau, "prix" et "article" récupérés en base, et "remise" calculée ensuite.

par Meyan » 07 avr. 2008, 19:12

Oui je l'avais vu aussi et c'est d'ailleurs celui que j'ai le plus testé hier soir et dont je parle dans mon message de 15h16 (j'avais recopié le code modifié). Seulement j'ai pas réussi à l'appliquer à mon script... :oops:

C'est pas si évident que ca quand on débute, on a vite fait de mélanger les données qu'il faut mettre, ou les mettre etc... J'espère que j'arriverais plus facilement avec celui que tu m'as donné.


Ce que je ne comprends pas du tout c'est cette première partie :
<?php 
$tableau = array( 
    // tri attendu suivant la remise : F, B, D, A, E, C 
    array('article'=>'article A', 'prix' => 199, 'remise' => '20'), 
    array('article'=>'article B', 'prix' => 299, 'remise' => '50'), 
    array('article'=>'article C', 'prix' => 399, 'remise' => '10'), 
    array('article'=>'article D', 'prix' => 499, 'remise' => '40'), 
    array('article'=>'article E', 'prix' => 599, 'remise' => '15'), 
    array('article'=>'article F', 'prix' => 699, 'remise' => '75'), 
); 
?>

Dans ce tableau les données semblent déjà renseignées alors que moi je veux afficher les données triées par ma requète. Donc ca colle pas du tout, je comprends pas la logique. Je ne peux pas renseigner les valeurs de ce tableau étant donné que je ne les connais pas. Il faut peut etre que je mette la variable à la place, par exemple $data['article'] ? :-k

Je vais essayer ca, et d'autres dispositions si ca ne fonctionne pas...


merci d'avoir pris le temps de modifier cet exemple pour l'appliquer à mon script, je vais regarder ca ce soir !

par ouckileou » 07 avr. 2008, 18:01

Fais un print_r() du tableau que tu essaies de trier et poste le
echo '<pre>';
print_r($tableau);
echo '</pre>';
Edition :

Tu as lu la doc de array_multisort() ? Notamment les exemples qui y sont donnés ?
Parcequ'il y en a un qui s'appelle "Example#3 Classer les résultats d'une base de données" et qui correspond exactement à ce que tu veux faire.

J'ai quasiment copié/collé le code de l'exemple et ça fonctionne très bien :
<?php
$tableau = array(
	// tri attendu suivant la remise : F, B, D, A, E, C
	array('article'=>'article A', 'prix' => 199, 'remise' => '20'),
	array('article'=>'article B', 'prix' => 299, 'remise' => '50'),
	array('article'=>'article C', 'prix' => 399, 'remise' => '10'),
	array('article'=>'article D', 'prix' => 499, 'remise' => '40'),
	array('article'=>'article E', 'prix' => 599, 'remise' => '15'),
	array('article'=>'article F', 'prix' => 699, 'remise' => '75'),
);
?>
Tableau non trié :<br />
<table border="1">
	<tr>
		<td>Article</td><td>Prix</td><td>Remise</td>
	</tr>
<?php
	foreach($tableau as $produit) {
		echo '<tr>';
		echo '<td>'.$produit['article'].'</td><td>'.$produit['prix'].'</td><td>'.$produit['remise'].'</td>';
		echo '</tr>';
	}
	
?>
</table>
<br /> <br />
Tableau trié sur la remise :<br />
<table border="1">
	<tr>
		<td>Article</td><td>Prix</td><td>Remise</td>
	</tr>
<?php
	// Obtient une liste de colonnes
	foreach ($tableau as $key => $row) {
	    $article[$key]  = $row['article'];
	    $prix[$key] = $row['prix'];
		$remise[$key] = $row['remise'];
	}
	$tableau_trie = array_multisort($remise, SORT_DESC, $tableau);
	foreach($tableau as $produit) {
		echo '<tr>';
		echo '<td>'.$produit['article'].'</td><td>'.$produit['prix'].'</td><td>'.$produit['remise'].'</td>';
		echo '</tr>';
	}
?>
</table>
Avant de reprendre ce code, essaie de regarder l'exemple et de faire toi-même, ce n'est pas si compliqué et bien expliqué.

par Meyan » 07 avr. 2008, 17:31

(Je me suis enregistré avec un autre pseudo mais c'est Kanta)


Oui j'ai lu ca en effet (pour le select *). Il se trouve que j'ai besoin de tous les champs de ma table mais merci pour ta remarque, ca aurait pu m'apprendre quelque chose de nouveau.


En ce qui concerne ma requète, je récupère plusieurs champs de ma table mais pour simplifier je préfèrais éviter de tous les énumérer car je ne souhaite en afficher que 3 dans le tableau et j'ai déjà assez de mal avec ces 3 là. Les autres champs appellés dans ma requète servent uniquement à calculer $res.


Les champs que je veux afficher sont :
- lien_article : lien vers la page descriptive de l'article
- article : l'article en question
- $res : le montant de la remise


Mon tableau serait tout simplement de la forme :

article remise

aaa xxx
bbb yyy


Sauf que je voudrais que ca s'affiche ainsi : avec aaa votre remise sera de xxx
avec bbb votre remise sera de yyy
etc pour chaque ligne correspondant à la requète.


array_multisort est peut être la fonction la mieux adaptée ici mais j'ai du mal à comprendre la logique de cette fonction et à quoi correspondent les variables etc...


Je remet mon script de départ ici pour plus de clarté :
$sql = "SELECT * FROM calcul WHERE min <= $prix AND max >= $prix'"; 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());   


$num_rows = mysql_num_rows($req); 
if($num_rows == 0) 
        { 
echo "<b><center>Désolé, il n'y a aucune réponse pour cette somme.</center></b>"; 
        } 
  else 


while($data = mysql_fetch_assoc($req))  

    {  
if($data['montant'] < $prix) 
        { 
$res = $data['montant']; 
       } 
else 

$res = ($data['coef'] * $prix); 

if($data['montant'] < $res) 
        { 
$res = $data['montant']; 
        } 


    echo '- avec <b><a href='.$data['lien_article'].' class="tit3">'.$data['article'].'</a></b> votre remise sera de '.$res.'.br>'; 
    } 
(je rappelle que $prix est déterminé auparavant dans un formulaire)


Si tu as quelque chose à me suggérer, c'est avec grand plaisir :P