Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/03/2011, 16h55   #1
Nouveau Membre du Club
 
Homme Hervé VILLANI
Développeur Web
Inscription : juillet 2006
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Hervé VILLANI
Âge : 35
Localisation : France, Ardennes (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2006
Messages : 84
Points : 29
Points : 29
Envoyer un message via MSN à Donald08
Par défaut Trouvez une valeur entre X et Y

Bonjour,

Pour un tableau de prix progressif, je ne trouve pas à faire en sorte que mon panier trouve le prix à appliquer selon la quantité choisit.

Ma base de donnée :

ID | ID_PRODUIT | PV_HT | Q_MIN
1 | 128 | 12 | 1
2 | 128 | 11 | 5
3 | 128 | 10 | 100
etc.

Si le client met 75 en quantité, il me faut le prix qui est à 11 €
Merci pour votre aide. Je pense qu'il faut un foreach, mais je ne comprends rien à foreach
__________________
Hervé
Mon portail
Création web
Imprimerie
Donald08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 17h06   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Citation:
Je pense qu'il faut un foreach, mais je ne comprends rien à foreach
La syntaxe est tout bête:
Code :
1
2
3
4
5
6
 
$arr = array(1,2,3,4);
foreach ($arr as $value) { echo $value; }
 
// identique à
for ($i=0;$i<count($arr);$i++) { echo $value; }
On va faire une cherche simple:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
// on suppose que $produits contiends ces resultats
// ID | ID_PRODUIT | PV_HT | Q_MIN
// 1  | 128        | 12    | 1
// 2  | 128        | 11    | 5
// 3  | 128        | 10    | 100
 
$qt = '5'; // 5 produits
$pvht = false;
 
foreach ($produits as $prices) {
  if ($prices['Q_MIN'] > $qt) break;
  $pvht = $prices['PV_HT'];
}
 
if ($pvht) {
   echo "$qt produits coutent " . ($qt * $pvht) . "€";
}
else {
   echo "Damned, je n'ai pas trouvé de prix: c'est gratos!"
}
Donc on parcours la liste de prix pour le produit donné (on suppose ici que la requête séléctionne uniquement les prix pour le produit demandé bien sûr).
On suppose également que la liste de prix est ordonée par Q_MIN (à mettre dans la requête SQL).
On initialise la variable prix ($pvht) à false pour déterminer si le prix à été trouvé (toujours bien se protéger des cas d'erreur).
On connait la quantité ($qt).

Si l'élément prix ($price) courant concerne une quantité supérieure à la quantité voulue, on sort de la boucle: l'élément précédent étant celui qu'on cherchais, la recherche s'arrête.
Sinon, on conserve le prix unitaire courant dans la variable $pvht.

A la sortie de la boucle on a bien le prix unitaire qui correspond à notre quantité commandée.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 17h16   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 465
Points : 8 465
c'est à faire dans ta requête SQL
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 17h21   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
En effet, stealth35 à encore raison (il a toujours raison celui là )

La requête pourrait être:
Code :
1
2
 
SELECT MAX(PV_HT) AS PV_HT FROM produits WHERE Q_MIN <= '$qt';
Enfin, un peu d'algo c'est toujours marrant...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 17h30   #5
Nouveau Membre du Club
 
Homme Hervé VILLANI
Développeur Web
Inscription : juillet 2006
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Hervé VILLANI
Âge : 35
Localisation : France, Ardennes (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2006
Messages : 84
Points : 29
Points : 29
Envoyer un message via MSN à Donald08
Merci Benjamin pour tes explications détaillées avec foreach et en requete

Je vais essayé tout çA.
__________________
Hervé
Mon portail
Création web
Imprimerie
Donald08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 17h36   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Utilise plutôt la requête, ce sera plus simple et surtout plus rapide.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 17h54   #7
Nouveau Membre du Club
 
Homme Hervé VILLANI
Développeur Web
Inscription : juillet 2006
Messages : 84
Détails du profil
Informations personnelles :
Nom : Homme Hervé VILLANI
Âge : 35
Localisation : France, Ardennes (Champagne Ardenne)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2006
Messages : 84
Points : 29
Points : 29
Envoyer un message via MSN à Donald08
Ca fonctionne mais en mettant MIN au lieu de MAX
__________________
Hervé
Mon portail
Création web
Imprimerie
Donald08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 18h01   #8
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Une coquille de ma part, désolé.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h57.


 
 
 
 
Partenaires

Hébergement Web