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 :

parcourir 2 tableaux


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut parcourir 2 tableaux
    Bonjour,

    j'ai des serveurs qui disposent de coordonnées géographiques X et Y. Je souhaite faire un affichage du nom des serveurs selon ces coordonnées. Pour illustrer ce que je souhaite obtenir, voici un exemple :

    J'ai les serveurs suivants :
    nom-------X--Y
    mangue----30-30
    r-01-fr-----30-30
    Quevedo---30-35
    ega--------40-40

    et je souhaite obtenir l'affichage suivant :
    30-30
    mangue
    r-01-fr

    30-35
    Quevedo

    40-40
    ega

    Au départ, je dispose des informations sous la forme d'objets ; j'ai pensé à créer 2 tableaux $arrayX=[30,30,30,40] et $arrayY=[30,30,35,40].
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $sql='select name,positionX,positionY from machines_view order by positionX,positionY';
    $stmt = $bdd->query($sql);
    $arrAll = $stmt->fetchAll();
     
    $arrayX=array();
    $arrayY=array();
     
    foreach($arrAll as $req) {
    	$arrayX[]=$req->positionX;
    	$arrayY[]=$req->positionY;
    	}
    J'ai également pensé à parcourir les tableaux avec foreach sauf que pour un seul tableau facile, mais là, je coince. Donc comment peut-on s'y prendre ?

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    c'est un peu le système des table de multiplication que tu veux faire en faite
    essaye donc avec un système similaire

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Merci pour ta réponse mais à mon avis mon problème ne ressemble pas aux tables de multiplication car avec celles-ci pour chaque couple (X, Y ) une solution unique et pas dans mon cas (par exemple pour le couple (30,30) 2 solutions)...

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2016
    Messages : 216
    Points : 90
    Points
    90
    Par défaut
    bah justement tu rajoute simplement une condition , disant que si x et y de la ligne suivante sont = a la ligne en court ça écrit a la suite

    style tu lit le x et le y de ta 1er ligne , tu cherche dans ton tableau tt les ligne ayant les meme.
    et tu demande a afficher juste le nom prenom

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    je verrai plutôt un truc dans ce 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
    $sql   = 'SELECT `name`, `positionX`, `positionY`, CONCAT_WS("-", `positionX`, `positionY`) AS `coord` FROM machines_view ORDER BY `positionX`, `positionY`';
    $stmt  = $bdd->query($sql);
    $rows  = $stmt->fetchAll();
     
    $data  = [];
    $coord = false;
     
    foreach ($rows as $v)
    {
        if ($coord !== $v['coord'])
        {
            $coord  = $v['coord'];
            $data[] = $v['coord'];
        }
     
        $data[] = $v['name'];
    }

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Le problème, c'est qu'une partie est en objet et j'ai essayé de corriger, mais...

    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
    17
    18
    19
    20
    21
    22
    $sql   = 'SELECT `name`, `positionX`, `positionY`, CONCAT_WS("-", `positionX`, `positionY`) AS `coord` FROM machines_view ORDER BY `positionX`, `positionY`';
    $stmt  = $bdd->query($sql);
    $rows  = $stmt->fetchAll();
    var_dump($rows);
    echo $rows->coord;
    echo $rows->name;
     
     
    $data  = [];
    $coord = false;
     
    foreach ($rows as $v)
    {
    	echo $v->coord;
        if ($rows->coord !== $v->coord)
        {
            $rows->coord  = $v->coord;
            $data[] = $v->coord;
        }
     
        $data[] = $v->name;
    }

    donne
    array (size=4)
    0 =>
    object(stdClass)[5]
    public 'name' => string 'mangue' (length=6)
    public 'positionX' => int 30
    public 'positionY' => int 30
    public 'coord' => string '30-30' (length=5)
    1 =>
    object(stdClass)[11]
    public 'name' => string 'r-01-fr' (length=7)
    public 'positionX' => int 30
    public 'positionY' => int 30
    public 'coord' => string '30-30' (length=5)
    2 =>
    object(stdClass)[12]
    public 'name' => string 'Quevedo' (length=7)
    public 'positionX' => int 30
    public 'positionY' => int 35
    public 'coord' => string '30-35' (length=5)
    3 =>
    object(stdClass)[13]
    public 'name' => string 'ega' (length=3)
    public 'positionX' => int 40
    public 'positionY' => int 40
    public 'coord' => string '40-40' (length=5)



    ( ! ) Notice: Trying to get property of non-object in C:\wamp\www\eis2\eis\page\selmachinemap.htm on line 40


    Call Stack


    #

    Time

    Memory

    Function

    Location

    1 0.0010 153704 {main}( ) ..\index.php:0
    2 0.0910 257576 include( 'C:\wamp\www\eis2\eis\page\selmachinemap.htm' ) ..\index.php:97

    etc
    La ligne 40 correspond ici à la ligne 5

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    comme ça :
    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
    $sql   = 'SELECT `name`, `positionX`, `positionY`, CONCAT_WS("-", `positionX`, `positionY`) AS `coord` FROM machines_view ORDER BY `positionX`, `positionY`';
    $stmt  = $bdd->query($sql);
    $rows  = $stmt->fetchAll();
     
    $data  = [];
    $coord = false;
     
    foreach ($rows as $v)
    {
        if ($coord !== $v->coord)
        {
            $coord  = $v->coord;
            $data[] = $v->coord;
        }
     
        $data[] = $v->name;
    }

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Merci

    juste pour comprendre, le terme CONCAT_WS('-', `positionX`, `positionY`) est composé de colonnes de la table mais n'en est pas une ; donc pourquoi c'est quand même accepté ?

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    il est possible de créer des colonnes à la volée en SQL selon tes besoin avec un syntaxe dans ce genre
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    CONCAT_WS("-", `positionX`, `positionY`) AS `coord`
    heureusement d'ailleurs

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

Discussions similaires

  1. Parcourir deux tableaux avec une seule boucle
    Par Merevinh dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2013, 13h50
  2. Parcourir deux tableaux
    Par Viscapon dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 23/11/2008, 00h09
  3. Parcourir des tableaux, toutes combinaisons possibles ?
    Par seb92500 dans le forum Langage
    Réponses: 9
    Dernier message: 20/11/2008, 17h11
  4. Réponses: 8
    Dernier message: 01/12/2006, 09h05
  5. parcourir des tableaux pour faire des copies/renommages de fichiers
    Par Paloma dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 31/10/2006, 09h09

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