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

PHP & Base de données Discussion :

Aide pour terminer le code de traitement ! [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 8
    Points
    8
    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 : 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
    	$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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '$famille1 : '.$famille1.'<br />';
    echo '$famille2 : '.$famille2.'<br />';
    echo '$famille3 : '.$famille3.'<br />';

  3. #3
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 374
    Points
    19 374
    Par défaut
    Bonsoir,

    En gardant ta syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (empty($famille1) && empty($famille2) && empty($famille3)){
    Avant toute chose : lire le mode d'emploi du forum et ses règles.
    Je ne réponds pas aux questions techniques en MP.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour, et merci jreaux62 et FirePrawn !

    Je ne pouvais vous lire plus tôt ...!
    Je teste et reviens dans la matinée.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Invité
    Invité(e)
    Par défaut
    la concaténation se fait avec . (pas .=)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    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.

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

Discussions similaires

  1. Aide pour terminer un code
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/11/2014, 22h23
  2. Nouvelle aide pour terminer un code
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/09/2013, 15h20
  3. Aide pour terminer un code qui ne fonctionne pas
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 11/02/2013, 16h29
  4. [VB.NET] besoin d'aide pour déchiffrer un code
    Par pcdj dans le forum Windows Forms
    Réponses: 10
    Dernier message: 27/06/2006, 11h32
  5. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 06/11/2005, 23h30

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