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 22/08/2011, 18h18   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 12
Points : 3
Points : 3
Par défaut Aide pour terminer le code de traitement !

Suite à une requête Select, je récupère une ligne de résultat que je formate avant de l'envoyer sur la page d'édition.
Les conditions de formatage :
famille 1 non vide => famille 1 = 1
famille 2 non vide => famille 2 = 2
famille 3 non vide => famille 3 = 3
si les 3 familles sont vides => brancher sur page d'erreur et stop
si (famille1 < famille2 OU < famille3) alors souscrire = "Famille 1" (et session_Famille = 185,30 € TTC)
si (famille2 < famille3) alors souscrire = "Famille 2" (et session_Famille = 98,10 € TTC)
sinon souscrire = "Famille 3" et session_Famille = 76,30 € TTC

Voilà le code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
	$famille1 = $row['A10'] AND $row['A11'] AND $row['A17'];
		if (!empty($famille1)) {$famille1 = 1;}
	$famille2 = $row['A25'] AND $row['A13'] AND $row['A37'] AND $row['A38'] AND $row['A16'] AND $row['A12'] AND $row['A26'] AND $row['A23'] AND $row['A15'] AND $row['A14'] AND $row['A40'] AND $row['A20'];
		if (!empty($famille2)) {$famille2 = 2;}
	$famille3 = $row['A31'] AND $row['A36'] AND $row['A41'] AND $row['A35'] AND $row['A30'] AND $row['A28'] AND $row['A27'] AND $row['A21'] AND $row['A34'] AND $row['A32'] AND $row['A44'] AND $row['A43'] AND $row['A29'] AND $row['A42'] AND $row['A22'] AND $row['A24'] AND $row['A45'] AND $row['A46'];
		if (!empty($famille3)) {$famille3 = 3;} //A31
	if (($famille1 < $famille2) OR ($famille1 < $famille3)){
			$souscrire = $famille1;
			$montant = "185,30";
	    $_SESSION['carteEuros'] = "185,30";
	    $_SESSION['$carteMontant'] = "18530"; //montant Paybox
			//<INPUT TYPE = hidden NAME = PBX_TOTAL VALUE = '{$smarty.session.carteMontant}'>
		}
    if ($famille2 < $famille3) {
			$souscrire = $famille2;
			$montant = "98,10";
	    $_SESSION['carteEuros'] = "98,10";
	    $_SESSION['$carteMontant'] = "9810"; //montant Paybox
    }
			$souscrire = $famille3;
			$montant = "76,30";
	    $_SESSION['carteEuros'] = "76,30";
	    $_SESSION['$carteMontant'] = "7630"; //montant Paybox
L'ensemble fonctionne mais :
  • je ne trouve pas la bonne syntaxe pour coder l'envoi vers une page d'erreur si les trois variables de famille sont vides !
Mon code
Code :
1
2
3
4
if (empty ($famille1) AND ($famille2) AND ($famille3)){
	header("Location:index.php?page=famillesVides");
	exit;
}
  • Comment optimiser mon code ?
Merci de votre aide.
plorton est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 18h43   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
Code :
1
2
3
4
if ( !($famille1) AND !($famille2) AND !($famille3) ){
	header("Location:index.php?page=famillesVides");
	exit;
}
Je pense que tu utilises mal !empty(...)

Si je comprends bien, $famille1, $famille2 et $famille3 sont des "conditions" (booleen) : ... AND ... AND ...
-> ils ne peuvent donc prendre que les valeurs 0(false) ou 1(true)

Tu devrais pouvoir remplacer les !empty($famille..) par ($famille..)

Pour en être sûr fait des echo :
Code :
1
2
3
echo '$famille1 : '.$famille1.'<br />';
echo '$famille2 : '.$famille2.'<br />';
echo '$famille3 : '.$famille3.'<br />';
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 19h42   #3
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
Bonsoir,

En gardant ta syntaxe :
Code :
1
2
 
if (empty($famille1) && empty($famille2) && empty($famille3)){
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 08h22   #4
Invité de passage
 
Inscription : décembre 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 12
Points : 3
Points : 3
Bonjour, et merci jreaux62 et FirePrawn !

Je ne pouvais vous lire plus tôt ...!
Je teste et reviens dans la matinée.
plorton est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 10h43   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 12
Points : 3
Points : 3
Bonjour,
Je reviens ce matin, une bonne solution !
Vos propositions m'ont permis de comprendre que mon erreur avait deux causes :
  • Une mauvaise utilisation des opérateurs logiques (je faisait des tests sur un résultat en valeur et non sur une réponse VRAI/FAUX
  • Une mauvaise constitution des objets à tester.
Voilà où j'en suis :
  1. l'analyse en français !
    $famille1 = concaténer le contenu des 3 items utiles
    $famille2 = concaténer le contenu des 12 items utiles
    $famille3 = concaténer le contenu des 18 items utiles
    si les 3 familles sont vides => brancher sur page d erreur et stop
    si (famille1 non vide) alors $souscrire = "Famille 1"
    si (famille2 non vide) alors $souscrire = "Famille 2"
    sinon $souscrire = "Famille 3"
Mon code, qui fonctionne maintenant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
	// grouper les spécialités par famille
	$famille1 = $row['A10'] .= $row['A11'] .= $row['A17'];
	$famille2 = $row['A25'] .= $row['A13'] .= $row['A37'] .= $row['A38'] .= $row['A16'] .= $row['A12'] .= $row['A26'] .= $row['A23'] .= $row['A15'] .= $row['A14'] .= $row['A40'] .= $row['A20'];
	$famille3 = $row['A31'] .= $row['A36'] .= $row['A41'] .= $row['A35'] .= $row['A30'] .= $row['A28'] .= $row['A27'] .= $row['A21'] .= $row['A34'] .= $row['A32'] .= $row['A44'] .= $row['A43'] .= $row['A29'] .= $row['A42'] .= $row['A22'] .= $row['A24'] .= $row['A45'] .= $row['A46'];
	// Sortir si les 3 familles sont vides
	if (empty($famille1) && empty($famille2) && empty($famille3))
   { header("Location:index.php?page=famillesVides");
      exit;
   }
   // tester la famille de niveau supérieur pour affichage
      if (!empty($famille1)){$souscrire = "1";}
           elseif (!empty($famille2)){$souscrire = "2";}
           else{$souscrire = "3";}
Je vais avoir à faire une grosse mise à jour de mes mauvaises habitudes,et me "faire" à l'utilisation des symboles plutôt que de mots signifiants pour coder !

Merci de m'avoir mis sur la bonne pratique !
Si vous avez proposition de simplification/optimisation, je suis preneur.
plorton est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 10h52   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
la concaténation se fait avec . (pas .=)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 13h07   #7
Invité de passage
 
Inscription : décembre 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 12
Points : 3
Points : 3
Citation:
Envoyé par jreaux62 Voir le message
la concaténation se fait avec . (pas .=)
Merci Jreaux62, en effet ... et c'est moi qui ne suis pas assez précis !
J'utilise .= pour concaténer le contenu de chaque champs lu ET l'ajouter au résultat dans la variable de gauche !

En utilisant la concaténation seule, le résultat n'était pas conforme à mon besoin.
plorton 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 09h49.


 
 
 
 
Partenaires

Hébergement Web