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] Requête récursive ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Par défaut [Tableaux] Requête récursive ?
    Bonjour,

    Je vous expose mon problème :

    J'ai un numéro de téléphone, au format français, mais des appels qui peuvent être internationaux donc 01XXXXXXXX ou avec le préfixe 00.

    Ensuite, dans une base MySQL, je dispose de préfixes auquels sont associés un tarif.

    L'idée c'est en partant du numéro, parser le bon tarif.

    Au départ, j'me suis dit que je partirais du numéro entier, en diminuant d'un chiffre au fur et à mesure, jusqu'à ce que je tombe sur le bon préfixe. Mais il semblerait que cette solution soit sujette à flood et finisse par excéder les 30 secondes de temps d'exécution par défaut, bien que les premières lignes retournées soient concluantes.

    Je m'arrache un peu les cheveux sur une autre solution, en récupérant la table SQL dans une variable et en essayant de travailler sur ça. Mais peut être que le Vendredi m'empêche d'y voir clair.

    Si vous aviez une solution, elle serait la bienvenue.

    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    il manque une information : la taille des préfixe est elle fixe ? et sinon, quelle est la taille minimum et la taille maximum d'un préfixe ? et ces tailles sont elles susceptibles de changer ?

    Sinon, une solution bien plus rapide est de recuperer la liste des préfixes en UNE SEULE requete SQL et de faire le traitement en PHP (trouver le bon préfixe dans la liste avec un (substr($tel, 0, strlen($prefixe))===$prefixe) par exemple)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Par défaut
    Citation Envoyé par Fladnag
    il manque une information : la taille des préfixe est elle fixe ? et sinon, quelle est la taille minimum et la taille maximum d'un préfixe ? et ces tailles sont elles susceptibles de changer ?

    Sinon, une solution bien plus rapide est de recuperer la liste des préfixes en UNE SEULE requete SQL et de faire le traitement en PHP (trouver le bon préfixe dans la liste avec un (substr($tel, 0, strlen($prefixe))===$prefixe) par exemple)
    Merci d'avoir répondu.

    La taille des préfixes n'est pas fixe, l'Algérie ce sera 213, l'Algérie mobile ce sera par exemple 2136 etc...

    Donc il faut parser celui correct pour ne pas fausser le tarif.

    Effectivement j'ai récupérer toute la table dans un tableau type t_price[$i]['prefix'] t_price[$i]['tarif'] ...

    Mon soucis c'est aussi de récupérer le tarif entre autre colonne du tableau.

    Peut-être y verras-tu plus clair ?

    Edit : une ligne de la table ressemble à ceci :

    0803 | M | 0.125 | 0 | 0.094 | 45

  4. #4
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    bah je vois pas ou le probleme si t'as récupéré le tableau ;o)

    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
    $indice=NULL;
    foreach($t_price as $cle => $tableau) {
       if ($tableau['prefix'] == substr($tel, 0, strlen($tableau['prefix'])) {
          $indice = $cle;
          break;
       }
    }
     
    if ($indice === NULL) {
       echo 'pô trouvé';
    } else {
       echo 'Les valeurs qui vont bien : <br><pre>';
       var_dump($t_price[$indice]);
       echo '</pre>';
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 34
    Par défaut
    Que dire ?

    Je suis bluffé ! Vraiment merci, le coups du strlen je n'y avais pas pensé.

    Je ne savais pas trop comment utiliser foreach en plus avec ce genre de tableau et je pensais pas qu'on pouvait procéder comme ça.

    Merci !!!

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

Discussions similaires

  1. Requête récursive dans access
    Par Australia dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 29/07/2014, 15h15
  2. [SQL Server]Problème avec une requête récursive
    Par evans dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/04/2006, 20h16
  3. [SQL Server] Requête récursive
    Par margagn dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/04/2006, 04h31
  4. [Tableaux] Requêtes et valeurs interpretées
    Par Linaa dans le forum Langage
    Réponses: 13
    Dernier message: 21/02/2006, 22h19
  5. Requête récursive
    Par tirixil dans le forum Bases de données
    Réponses: 3
    Dernier message: 07/03/2005, 16h11

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