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 :

[Tableaux] Tableau multidimensionnel associatif


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut [Tableaux] Tableau multidimensionnel associatif
    Hello,

    je m'emmèle un peu les pinceaux avec les tableaux multidimensionnels...

    Voici mon problème : je voudrais créer un tableau de tarifs transports me permettant de trouver facilement le tarif entre tel bled intermédiaire et tel autre...je récupèrerais un fichier plat qui pourrait ressembler à ça et il faudrait que je remplisse un tableau:

    Vide- Ville1 Ville2 Ville3
    Ville1 0€ 1€ 3€
    Ville2 1€ 0€ 1,5€
    Ville3 3€ 1,5€ 0€

    Ainsi si je pouvais remplir un tel tableau, je pourrais en récupérer les valeurs
    de cette façon :

    $mon_tarif=$tab['ville2']['ville3']

    Ce qui me donnerait 1,5€ comme résultat.

    Pensez vous que créer un tel tableau soit possible ? Comment ?

    Merci
    Anne

  2. #2
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    et avec une BD ?

    table tarifs_trajets
    id_trajet, ville_depart, ville_arrivee, tarif

  3. #3
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Ca devrait être très simple, mais ça dépend beaucoup du format de tes données d'entrée. C'est vraiment un fichier plat, ou autre chose ?

    Si tu cherches à faire de la cartographie, j'ai l'impression que mysql possède des fonctions puissantes, mais je ne les connais pas.
    En entrant la distance entre les points sous forme de tarifs, on doit pouvoir faire des choses étonnantes.
    http://dev.mysql.com/doc/refman/5.0/...xtensions.html

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Oui c'est vrai mais il se trouve que j'ai déjà crée ma base de la façon suivante:

    id_ligne, ville, heure, ordre

    De sorte que j'ai une table qui ressemble à ça :

    1, ville1, 8:00, 1
    1, ville2, 9:00, 2
    1, ville3, 9:30, 3
    1, ville4, 10:00, 4
    2, ville1, 8:30, 1
    2, ville2, 9:00, 2
    2, ville5, 9:30, 3
    2, ville10, 11:00, 4
    2, ville3, 11:10, 5

    Et je récupère mon trajet avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT a.id_ligne AS ligne, a.ville AS Ville_départ,a.heure AS Heure_départ, b.ville AS Ville_arrivée, b.heure, AS Heure_arrivée 
    FROM horaires a, horaires b
    WHERE a.id_ligne = b.id_ligne and (a.ville like '$depart%') AND (b.ville like '$arrivee%') AND a.ordre < b.ordre
    et maintenant je voudrais intégrer cette notion de tarification mais je ne vois pas comment? Je pensais que je pourrais récuperer auprès du transporteur leur grille de tarification par ligne qui serait de la forme que j'ai décrite plus haut et que du coup je pourrais en faire un tableau multidimensionnel pour en récupérer les valeurs mais ça n'est peut-être effectivement pas la meilleure solution...

    Merci

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par guidav
    Ca devrait être très simple, mais ça dépend beaucoup du format de tes données d'entrée. C'est vraiment un fichier plat, ou autre chose ?

    Si tu cherches à faire de la cartographie, j'ai l'impression que mysql possède des fonctions puissantes, mais je ne les connais pas.
    En entrant la distance entre les points sous forme de tarifs, on doit pouvoir faire des choses étonnantes.
    http://dev.mysql.com/doc/refman/5.0/...xtensions.html
    Merci pour ce tuyau mais alors là je suis dépassée : en plus je n'ai pas de notion dans ma base de distances...

  6. #6
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Tout dépend si ta tarification est exactement proportionnelle au temps de parcours. Sinon il faut la récupérer auprès de ton transporteur.
    Avec par exemple
    id_ligne, ville, heure, ordre, prix
    1, ville1, 8:00, 1,0
    1, ville2, 9:00, 2,10
    1, ville3, 9:30, 3,15
    1, ville4, 10:00, 4,20
    2, ville1, 8:30, 1,0
    2, ville2, 9:00, 2,5
    2, ville5, 9:30, 3,10
    2, ville10, 11:00, 4,25
    2, ville3, 11:10, 5,28
    Avec des prix incrémentaux d'une ville à l'autre.
    Mais je pense que l'idéal serait de connaître la règle de calcul du prix, et d'ajouter les données nécessaires (la distance par exemple) dans ta table.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par guidav
    connaître la règle de calcul du prix, et d'ajouter les données nécessaires (la distance par exemple) dans ta table.
    Et oui mais tout le problème est là, les transporteurs ne sont pas disposés à me fournir ces données (qu'ils n'ont même pas à mon avis)...

  8. #8
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Si tu as des données suffisantes, tu peux essayer d'établir une corrélation entre le prix et le temps de trajet, avec un peu de chance c'est linéaire (je crois par exemple qu'à la sncf, les prix sont linéaires avec la distance, selon le type de ligne).
    Sinon il faut intégrer les tarifs, les transporteurs les ont forcément. Après, encore faut-ils qu'ils soient disposés à te les passer, en effet.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par guidav
    Sinon il faut intégrer les tarifs, les transporteurs les ont forcément. Après, encore faut-ils qu'ils soient disposés à te les passer, en effet.
    oUI mais mon souçi c'est comment les intégrer ces données justement avec mon système...c'est pour ça que je pensais à une grille de tarification sous forme de tableau multidimensionnel...

  10. #10
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    ca me paraît pas mal comme idée, mais sous quelle forme sont tes tarifs ?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par guidav
    ca me paraît pas mal comme idée, mais sous quelle forme sont tes tarifs ?
    Et bien cela pourrait être un fichier plat avec tabulation comme séparateur:

    -vide- ville1 ville2 ville3
    ville1 0,00 € 1,00 € 4,00 €
    ville2 1,00 € 0,00 € 2,50 €
    ville3 4,00 € 2,50 € 0,00 €

    j'importerais ce fichier et j'en ferais un explode pour l'intégrer à un tableau multudimensionnel avec les villes comme indices mais ma question était justement comme faire ça...comment créer ce tableau...

  12. #12
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Je ne sais plus comment on fait, mais il y a un moyen de lire un fichier ligne par ligne.
    Petit souci, ton fichier va croître de façon polynomiale avec le nombre de villes, j'espère que tu n'as pas trop de villes.

    Ensuite, tu fais un explode sur la première ligne pour avoir le nom de tes index, puis pour chaque ligne tu fais une boucle pour définir les éléments de ton tableau.
    Ca ne me paraît pas super compliqué, mais attention à ne pas s'emmêler les pinceaux dans les boucles.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 82
    Points : 87
    Points
    87
    Par défaut
    Pour avoir réalisé une app qui gère ce genre d'informations, voici ce que je peux t'en dire.

    La majorité des transporteurs utilisent un tarif par département, et contrairement à ce que j'ai pu lire, il n'y a pas de règles précise pour le calcul du tarif en fonction de la distance ou du temps...

    Pour une raison simple, chaque transporteur possède ses lignes de prédilection (celle ou il a beaucoup de clients), sur lesquelles il est trés compétitif, et pour d'autre (peu de clients, ou parce qu'il sait qu'il aura du mal a trouver du frêt pour rentrer) il augmentera ses tarifs.

    L'avantage d'un tableau multidimensionnel est qu'une fois la liaison trouvée (case de coord x, y) tu peux explorer le tableau en profondeur pour trouver le transporteur le moins cher (chaque feuille representant alors les tarifs d'un transporteur) sur cette liaison.

    Mais cela n'est pas aussi simple, car en plus de cela il faut integrer les volumes de marchandises qui font varier les prix.

    Et enfin, certains transporteurs ont des grilles tarifaires régionales avec des limites qui ne correspondent pas aux départements ( Et là on est obligé de reconsiderer les offres ville par ville).

    Je te souhaite bien du courage....

    Une dernière info, Certains transporteurs possèdent des api qui te permettent de faire le calcul en ligne.

    @++

Discussions similaires

  1. Extraire d'un tableau multidimensionnel/associatif
    Par laloune dans le forum Langage
    Réponses: 4
    Dernier message: 01/09/2014, 14h43
  2. [Tableaux] tableau multidimensionnel
    Par Biosox dans le forum Langage
    Réponses: 3
    Dernier message: 15/03/2007, 17h41
  3. [Tableaux] Tableau Multidimensionnel
    Par Captain_futur dans le forum Langage
    Réponses: 3
    Dernier message: 09/12/2005, 21h37
  4. Réponses: 2
    Dernier message: 27/11/2005, 23h36
  5. [Tableaux] Tableau associatif
    Par anzar dans le forum Langage
    Réponses: 3
    Dernier message: 24/10/2005, 11h17

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