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 :

mettre la variable d'un while dans un autre while


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 66
    Par défaut mettre la variable d'un while dans un autre while
    Bonjour j'ai ce 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
     
     
     
    while(  $user = $user_sql->fetch()   ){
     
     
    $user_date = $user['date_plann'] ;
     
     
    }
     
    while(  $aplann = $all_sql->fetch()  ){
     
     /* je voudrais utiliser les données de $user_date dans
     
    ce while */
     
     
    }

    je voudrais utiliser les données de la variable $user_date

    dans le deuxième while mais j'ai que la dernière valeur

    comment faire pour avoir toute les valeurs dans le second while svp ?

  2. #2
    Membre chevronné Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Par défaut
    Bonjour,

    il suffit d'imbriquer tes boucles comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /* Pour chaque ligne de ma première requête. */
    while( $aplann = $all_sql->fetch() ) {
    	/* je parcour ma liste d'utilisateur. */
    	while( $user = $user_sql->fetch() ) {
    		$user_date = $user['date_plann'] ;
    		/* Içi je traite mes données. */
    	}
    }
    Mais attention, si tu as beaucoup d'enregistrement dans ta base de données ce script peut-être long à exécuter.
    Donc paramètre bien tes requêtes .

    Bon courage

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 66
    Par défaut
    merci pour ta réponse

    pour mieux expliquer la finalité du script voici les requêtes :


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
     
    $user_sql =  $bdd -> query("SELECT *  FROM  planning,cc  WHERE  date_plann  BETWEEN '". $dbx ."' AND '". $dfx ."'
     
    AND  planning.matricule = '". $_SESSION['login'] ."' AND cc.matricule = '". $_SESSION['login'] ."'
     
     ") ;
     
     
     
    $all_sql=  $bdd -> query("SELECT *  FROM  planning,cc  WHERE  date_plann  BETWEEN '". $dbx ."' AND '". $dfx ."'
     
    AND cc.matricule = planning.matricule AND services = '". $srv ."' AND canal = '". $canl ."' AND  planning.matricule != '". $_SESSION['login'] ."'
     
    AND  cc.matricule != '". $_SESSION['login'] ."' 
     
    ") ;  
     
     
     
     
     
     
    while(  $user = $user_sql->fetch()   ){
     
    $user_date = $user['date_plann'] ;
     
     
     
    }
     
     
     
     
    while(  $aplann = $all_sql->fetch()  ){
     
     
     
     
    }
    dans le premier while je récupère les données du conseiller connecté et dans le second while les données de tous les autre et je compare

    au final je veux faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    while(  $aplann = $all_sql->fetch()  ){
     
     
       if(  $aplann['date_plann'] == $user_plann ){
     
     
         /* mon traitement */
     
        }      
     
     
    }
    mais $user_plann ne contient que la dernière date


    j'ai essayer de faire comme tu as dit mais ça ne fonctionne pas


    et j'aimerais si possible faire autrement juste par souci esthétique xD

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonjour Amine. Ton problème est plus grave qu'esthétique.
    Travaille d'abord ton SQL.

    Dans ton PHPmyadmin, ta requête SQL all_users doit ressembler à ça


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select p.*,cc.*
    from planning p
    inner join cc on p.matricule=cc.matricule
    where 
    p.services="toto"
    and p.canal="schtroumpf"
    and p.date_plann between "2019-01-01" and "2019-02-05";

    Enlève les * et remets les bons champs qui t'intéressent sur les bonnes tables, ce sera plus clair pour tout le monde...

    Après, quand tu auras un bon tableau PHP, tu auras évidemment dans ton tableau le login que tu cherches.
    Que cherches-tu à comparer entre le login truc et les autres ?
    Le nombre de date_plann ? Le nombre de connexions de tes conseillers connectés ?
    Dans ce cas, tu muscleras ta requête avec un group by.
    Mais commence par faire une requête simple et propre (ne pas mélanger la jointure et les filtres) qui fonctionne à partir de mon modèle.

    Autre question essentielle : tu as bien posé un index dans tes 2 tables sur le champ matricule ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code php : 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
     
    // 1- Récupération et enregistrement dans un array
    $user_date_plann = []; // array
    while( $user = $user_sql->fetch() )
    {
    	$user_date_plann[] = $user['date_plann'];
    }
     
    while( $aplann = $all_sql->fetch() )
    {
    	// 2- si présent dans l'array
    	if( in_array($aplann['date_plann'], $user_date_plann) ) 
    	{
    		/* mon traitement */
    	}
    }

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 66
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    	if( in_array($aplann['date_plann'], $user_date_plann) ) 
    	{
     
    	}
    }


    ce code permet juste de savoir si c'est dans le tableau ou bien si elles sont égales aussi ?, car je veux comparer la même date pour l'utilisateur et les autre conseiller

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 66
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Bonjour Amine. Ton problème est plus grave qu'esthétique.
    Travaille d'abord ton SQL.

    Dans ton PHPmyadmin, ta requête SQL all_users doit ressembler à ça


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select p.*,cc.*
    from planning p
    inner join cc on p.matricule=cc.matricule
    where 
    p.services="toto"
    and p.canal="schtroumpf"
    and p.date_plann between "2019-01-01" and "2019-02-05";

    Enlève les * et remets les bons champs qui t'intéressent sur les bonnes tables, ce sera plus clair pour tout le monde...

    Après, quand tu auras un bon tableau PHP, tu auras évidemment dans ton tableau le login que tu cherches.
    Que cherches-tu à comparer entre le login truc et les autres ?
    Le nombre de date_plann ? Le nombre de connexions de tes conseillers connectés ?
    Dans ce cas, tu muscleras ta requête avec un group by.
    Mais commence par faire une requête simple et propre (ne pas mélanger la jointure et les filtres) qui fonctionne à partir de mon modèle.

    Autre question essentielle : tu as bien posé un index dans tes 2 tables sur le champ matricule ?

    la requêtes est bien , elle fonctionne et répond à mon besoin et je travaille avec tout les champs de la table



    en faite pour mieux expliquer dans le premier while j'affiche le planning rechercher de la personne connecter :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    while(  $user = $user_sql->fetch()   ){
     
     
    /* les dates rechercher et leurs vacation respective dans un tableau  */
     
     
     
    }
    après dans le second while le planning de tout les autres conseiller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
    while(  $aplann = $all_sql->fetch()  ){
     
     
     
    /* les dates rechercher et leurs vacation respective dans un tableau  */
     
     
     
     
    }

    maintenant ce que je veux faire c'est un code qui permet de répondre à cette condition :



    si dans une date x , l'utilisateur et un conseiller on une vacations différente : affiche le bouton permuter

    un truc du genre :




    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
     
     
     
    //
     
     if(  $aplann['date_plann'] == $user_plann 
     
    and $aplann[debut_vacation !==  $user_debut_vacation
     
     and   $aplann[fin_vacation !==  $user_fin_vacation  ){
     
     
    //affiche le bouton permuter 
     
     
     }      
     
     
    //   $aplann['date_plann'] == $user_plann  pour comparer les même dates et non deux date différentes 
     
    // sauf que     $user_plann  n'a que la dernière date

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/06/2009, 15h06
  2. Réponses: 17
    Dernier message: 12/11/2008, 10h04
  3. Réponses: 2
    Dernier message: 02/04/2008, 19h55
  4. Mettre un noyau d'une distri. dans un autre
    Par PhiberOptik dans le forum Distributions
    Réponses: 10
    Dernier message: 24/08/2007, 12h17
  5. Réponses: 1
    Dernier message: 15/02/2007, 00h24

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