[RESOLU] recuperer valeur minimum d'une variable

robin_sr
Invité n'ayant pas de compte PHPfrance

10 juil. 2013, 23:38

Bonjour, voila, je me casse la tête sur un problème certainement con et je viens donc solliciter votre aide

j'ai ce code qui récupère les valeurs de prix de mes produits, et je voudrais récupérer la valeur minimum de cette variable pour faire un affichage de type "à partir de: 20€"

<?php 
$link = mysql_connect('*********','*************','***********'); 
if (!$link) { 
	die('Impossible de se connecter à MySQL: ' . mysql_error()); 
} 
if(!mysql_select_db('***********')){
		@$script_error[] = "Base de donnée incorrect";
	}
			 
$print_id= '1';
$query= "
					SELECT price FROM options 
					LEFT JOIN option_grp 
					ON options.parent_id = option_grp.og_id 
					WHERE option_grp.parent_id = '$print_id' 
					ORDER BY price
					";
 

$result = mysql_query($query);
 

if (!$result) {
    $message  = 'Requête invalide : ' . mysql_error() . "</br>";
    $message .= 'Requête complète : ' . $query;
    die($message);
}
 
while ($row = mysql_fetch_assoc($result)) {
    echo $row['price']."</br>";
}
 mysql_close($link);
?> 
je vois pas comment trier le résultat et ne garder que la valeur minimum. au début j'ai essayé de gérer ça directement au moment de la requête sql mais je suis arriver a rien de bon...
j'ai vu certain dire d'utiliser la fonction sort(
bon après je suppose que le code n'est pas très propre non plus mais j'expérimente le php alors si vous avez des conseil au passage ;)

quelqu'un pourrais m'orienter, je vous en remercie d'avance.

Cordialement,
Robin

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 juil. 2013, 07:31

Salut,


Pourquoi un left join ? Y a pas forcement de données dans la seconde table ?

Sinon ajoute un : price > $plancher dans le where de ta requête ( supérieure ou égale si le plancher doit être compris dedans ;)

@+
Il en faut peu pour être heureux ......

robin_sr
Invité n'ayant pas de compte PHPfrance

11 juil. 2013, 12:23

Je pense que dans mon cas je suis obligé,

la structure des tables est la suivante

+++++++++++++++++++
+ option
+++++++++++++++++++
+++ op_id
+++ parent_id -----> fait référence à og_id dans option_grp
+++ price


+++++++++++++++++++
+ option_grp
+++++++++++++++++++
+++ og_id
+++ parent_id -----> fait référence à print_id dans prints


+++++++++++++++++++
+ prints
+++++++++++++++++++
+++ print_id


en gros sur ma page je ne dispose que du print_id et avec le print_id je récupère 'og_id' dans 'option_grp' et ensuite je cherche les lignes avec le même 'parent_id' dans 'option' pour en récupérer la valeur de 'price'

après ma démarche n'est peut être pas la bonne.

robin_sr
Invité n'ayant pas de compte PHPfrance

11 juil. 2013, 12:29

après la valeur peu être n'importe quelle nombre, et restreindre à un plancher serait trop restrictif.

voila le genre de retour que j'ai:

100 < ------- mon prix minimum
182
234
621

------------------------

246
432
58
26 < -------------- mon prix minimum
126

les prix ne sont pas toujours dans l'ordre sinon je récupérerai seulement la première entrée

robin_sr
Invité n'ayant pas de compte PHPfrance

11 juil. 2013, 12:36

j'avais pensé a trier les donnée dans un tableau et ensuite récupérer la première valeur, mais je vois pas comment faire ça, et tout ce que j'ai pu voir sur le net me semble être des usines à gaz pour une chose qui "parait" si simple à faire.

Avatar du membre
Mammouth du PHP | 1564 Messages

11 juil. 2013, 17:09

Salut,

je vais juste t'aider à mettre plus propre ton code car je ne vois d'autre solution comme moogli à donnée.

pour les lignes:
if(!mysql_select_db('***********')){
                @$script_error[] = "Base de donnée incorrect";
 }
met un exit; après
@$script_error[] = "Base de donnée incorrect";
pour arrêter l’exécution du reste de la page

soit:
if(!mysql_select_db('***********')){
                echo "Base de donnée incorrect";
                exit;
 }
tu peut éventuellement faire comme ceci:
if(!mysql_select_db('***********')){
                exit("Base de donnée incorrect");
 }

robin_sr
Invité n'ayant pas de compte PHPfrance

11 juil. 2013, 18:32

Me revoilà, problème résolut, voici le code final le site utilise smarty

ma fonction:
<?php
function getMinPrice($print_id)
	{	
				 
$opt_price= "
					SELECT price FROM options 
					LEFT JOIN option_grp 
					ON options.parent_id = option_grp.og_id 
					WHERE option_grp.parent_id = '$print_id' 
					ORDER BY price
					";
 
$opt_pricelist = mysql_query($opt_price);
 
$min_price_array = array();
	while ($price_list = mysql_fetch_assoc($opt_pricelist)) {
		$min_price_array[] =  $price_list['price'];
	}
		$minPrice = $min_price_array[0];
		return $minPrice;
	}
?>
le tri était déjà effectué lors de la requête sql et je m'en rappelais plus, du coup ça simplifie les choses

ensuite pour afficher mon prix un simple {$minPrice} suffit.

Et pour la connexion sur la db le site s'en occupe en amont, mon code était pour des tests mais je prend note pour l'avenir :)

Avatar du membre
Mammouth du PHP | 1564 Messages

11 juil. 2013, 18:52

OK d'acc 8-)

Tu peut mettre en "Résolu" du coup :wink:

Petit nouveau ! | 1 Messages

12 juil. 2013, 02:09

je vois pas comment faire, j'avais posté en invité et du coup j'ai aucune commande sur le billet

Avatar du membre
Mammouth du PHP | 1564 Messages

12 juil. 2013, 10:25

Je ne sais pas non plus, désolé