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

Langage PHP Discussion :

Factorisation de conditions php


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Points : 64
    Points
    64
    Par défaut Factorisation de conditions php
    Bonjour à tous,

    Voilà je souhaiterais factoriser une suite de conditions redondantes, pour réduire le nombres de lignes mais aussi parce que c'est plus propre à l'oeil !

    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
    	if (isset($_POST['s1'])) {
    		$s1 = "ok";
    	}
    	else {
    		$s1 = "";
    	}
    	if (isset($_POST['s2'])) {
    		$s2 = "ok";
    	}
    	else {
    		$s2 = "";
    	}
    ...
    	if (isset($_POST['sn'])) {
    		$sn = "ok";
    	}
    	else {
    		$sn = "";
    	}
    Le tout va jusqu'à 52, nombres de semaines dans une année.
    Avez-vous une idée de la procédure à suivre ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    pas testé mais je pense que c'est bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for (var ($i = 1; $i <= 52; $i++)
    {
    $var = 's' . $i;
    if (isset($_POST[$var])) {
    		$$var = "ok";
    	}
    	else {
    		$$var = "";
    	}
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    Salut j'ai teste, tu peux faire ca en 2 lignes comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for ($i=0 ; $i<=52 ; $i++) $tab['s'.$i] = isset($_POST['s'.$i]) ? "ok" : "" ;
    extract($tab) ;
    Ce qui se traduit en code lisible par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    for ($i=0; $i<=52 ; $i++)
    {
      if (isset($_POST["s".$i]))
      {
         $tab["s".$i] = "ok" ;
      }
      else
      {
         $tab["s".$i] = "" ;
      }
    }
     
    extract($tab) ;
    Mais sincerement je me pose de serieux doutes quant a ce que tu fais dans la suite de ton code ... C'est vraimment bizzare comme facon de proceder. Aussi tu remplacerait avantageusement tes 52 variables par un seul tableau unique !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    Il s'agit de mettre à jour la table "disponibilité" en fonction des semaines louées ou non louées. Il y a 52 entrées sous la forme s1 s2 s3 en base. La mise à jour se fait sous la forme d'un formulaire : on coche la checkbox correspondante à la semaine louée.

    Je pense effectivement qu'il y aurait une optimisation possible !
    Comme écrire le langage SQL en fonction des semaines cochées ce qui éviterait de mettre à jour les semaines non concernées.
    J'avoue que je vois le pb avec des yeux d'amateur

    En tout cas merci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	for ($i=0 ; $i<=52 ; $i++) $tab['s'.$i] = isset($_POST['s'.$i]) ? "ok" : "" ;
    	extract($tab) ;
    	$dispo = $_POST['dispo'];
    	$updateSQL = "UPDATE prestat SET dispo = '$dispo' WHERE id = '$id'";
        $SQL = mysql_query($updateSQL, $bdS) or die(mysql_error());
    	$updateSQL2 = "UPDATE dispos SET s1 = '$s1', s2 = '$s2', s3 = '$s3', s4 = '$s4', s5 = '$s5', s6 = '$s6', s7 = '$s7', s8 = '$s8', s9 = '$s9', s10 = '$s10', s11 = '$s11', s12 = '$s12', s13 = '$s13', s14 = '$s14', s15 = '$s15', s16 = '$s16', s17 = '$s17', s18 = '$s18', s19 = '$s19', s20 = '$s20', s21 = '$s21', s22 = '$s22', s23 = '$s23', s24 = '$s24', s25 = '$s25', s26 = '$s26', s27 = '$s27', s28 = '$s28', s29 = '$s29', s30 = '$s30', s31 = '$s31', s32 = '$s32', s33 = '$s33', s34 = '$s34', s35 = '$s35', s36 = '$s36', s37 = '$s37', s38 = '$s38', s39 = '$s39', s40 = '$s40', s41 = '$s41', s42 = '$s42', s43 = '$s43', s44 = '$s44', s45 = '$s45', s46 = '$s46', s47 = '$s47', s48 = '$s48', s49 = '$s49', s50 = '$s50', s51 = '$s51', s52 = '$s52', s53 = '$s53', maj = '$date' WHERE clef = '$id'";

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Points : 64
    Points
    64
    Par défaut
    Bon finalement je suis passé par java et son magique XMLHttpRequest qui me modifie à la volée la semaine cochée...
    MAJdispo(clef,semaine) indique la semaine à changée précisément pour l'enregistrement donné...

    Finalement bien plus simple dans mon cas !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Points : 114
    Points
    114
    Par défaut
    J'imagine que le sujet est un peu mort. Mais peut-etre veras-tu ma reponse.

    Tu n'est pas oblige de donner 52 noms a tes checkbox du style s1, s2, ... s52.
    Tu peux leur donner comme nom s[0], s[1], .... s[52] et alors tu recevras un tableau en php (post ou get) qui contiendra uniquement les elements selectionnes (checked).

    Evidement si tu ne savais pas cela, je comprends que tu aies utilise cette methode. Maintenant utiliser xmlhttprequest en "javascript" n'est pas necessairment une mauvaise solution. Mais ce n'etait pas necessaire.

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

Discussions similaires

  1. Condition php pour afficher html
    Par granchef dans le forum Langage
    Réponses: 4
    Dernier message: 15/04/2010, 17h28
  2. Condition php sur le champs select
    Par lunick dans le forum Langage
    Réponses: 7
    Dernier message: 18/09/2009, 10h18
  3. [XML] Pb XML et condition PHP
    Par vincentmallet dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/09/2007, 10h55
  4. [PHP-JS] Popup Javascript sous condition PHP
    Par franfr57 dans le forum Langage
    Réponses: 3
    Dernier message: 16/05/2006, 15h29
  5. Réponses: 8
    Dernier message: 10/11/2005, 15h58

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