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] probleme d'addition et soustration en php


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de pierre987321
    Inscrit en
    Août 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 139
    Points : 62
    Points
    62
    Par défaut [Tableaux] probleme d'addition et soustration en php
    voila je fait un moteur de recherche avec recherche par code postaux.

    mon probleme :

    en faite je recup le zip et je v lui faire + ou - un nombre determiné par le visiteur pour étendre les chances de trouver une annonce.

    voila j'ai fais sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	$codepostal=trim(@$_GET['codepostal']);
    	$distance=trim(@$_GET['distance']);
     
        $codemini=$codepostal-$distance;
        $codemaxi=$codepostal+$distance;
     
    	if($codemini == '')
    		$codemini=00000;
    	if($codemaxi =='')
    		$codemaxi=99999;
     
    	$query_search .= " AND products.codepostal BETWEEN ". $codemini ." AND ". $codemaxi;
    c'est faux je c, c pour cela que je suis la
    en plus comment faire pour eviter les erreur du style :

    je chercher sur le code postale :
    69050 avec une distance de 100
    qui va donner de 68950 à 69150

    mais 68950 est faux il faut rester mini 69000 pour avoir des annonce du meme departement

    avez vous des idéess :

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Tu es en train d'additionner des choux et des carottes.

    Si tu veux faire une recherche par proximité, il te faut une table des communes avec leurs coordonnées géographique (latitude, longitude).

    Il y a, en France, environ 36500 communes pour environ 6500 codes postaux. Par exemple, le cp '51300' est utilisé par 45 communes, dont les extrêmes sont éloignées d'environ 30 km.

    Donc, il faut que tu vois les choses autrement.

    Sur ce site, beaucoup d'info : http://www.lion1906.com/

    Un exemple de recherche par proximité : http://www.autocadre.com. Essaie la recherche par catégorie et par code postal.

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    +1

    Et merci pour le lien

  4. #4
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    hmm, on ne sais pas ce qu'il cherche, et s'il a envie de ressortir aussi toutes les communes ayant le meme code postal, aprés tout, pourquoi pas.
    En tout cas, la remarque est pertinente... ;-)

    j'ai fait ça, mais je pense que ça peut être optimisé car ça ressemble fort à de la bidouille, mais bon ça marche et j'ai pas envie de me prendre la tête... a toi de voir...
    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
     
    <?php
    // valeurs utilisateur
    $val = '69050';
    $fourchette = '100';
     
    // on s'assure de la validité des valeurs
    // val est vide ?
    $val = (empty($val))?('10000'):($val);
     
     
    // pour un code postal de 5 chiffres ( si negatif on retire le moins )
    $val = (substr($val,0,1) == "-")?(substr($val,1,5)):(substr($val,0,5));
    // si egal a 0 on passe a la valeur par defaut
    $val = ($val == 0)?('10000'):($val);
    // pour une fourchette de 3 chiffres
    $fourchette = substr($fourchette,0,3);
    // si egal a 0 on passe a vide
    $fourchette = ($fourchette == 0)?(''):($fourchette);
     
    // est-ce des nombres ?
    $v = intval($val) or die("la valeur doit être numérique !");
    if(!empty($fourchette)) $f = intval($fourchette) or die("la fourchette doit être numérique !");
     
    // le seuil
    $seuil = substr($val,0,2);
     
    // les mini maxi
    $val_mini = $val-$fourchette; 
    $val_maxi = $val+$fourchette;
    $val_mini = (substr($val_mini, 0,2) != $seuil)?($seuil.'000'):($val_mini);
    $val_maxi = (substr($val_maxi, 0,2) != $seuil)?(($seuil+1).'000'):($val_maxi);
    $val_maxi = ($val_maxi > 99999)?(99999):($val_maxi);
     
    // la requete
    if(!empty($fourchette)) $query_search .= " AND products.codepostal BETWEEN ". $val_mini ." AND ". $val_maxi;
    else $query_search .= " AND products.codepostal = ". $val;
     
    echo $query_search;
    ?>
    [edit]
    mouais bon, c'est nul, il me sort des fourchettes différentes si le seuil mini n'est pas bon, vaut mieux oublier ce code... décidemment y'a des jours ou je ferais mieux de rien dire
    [/edit]

  5. #5
    Membre du Club Avatar de pierre987321
    Inscrit en
    Août 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 139
    Points : 62
    Points
    62
    Par défaut ...
    oui bien sur, je cherche pas le résultat de un code = une ville.
    c pour élllargireee le champ de recherche

    se soir je v voir ton code qui p peut etre bien me rendre service.
    il donne des fourchettes dif ?

  6. #6
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    heu non aprés vérification de ton post, ça donne bien ce que tu voulais.
    mais bon il me semble bien compliqué pour le résultat obtenu...
    si j'ai le temps, je regarderai pour l'améliorer

  7. #7
    Membre du Club Avatar de pierre987321
    Inscrit en
    Août 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 139
    Points : 62
    Points
    62
    Par défaut
    ok super

  8. #8
    Membre du Club Avatar de pierre987321
    Inscrit en
    Août 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 139
    Points : 62
    Points
    62
    Par défaut
    a oui donc je vien t de tester sa marche nikel

    mais est il possible de le rendre non obligatoire ?


    dans se cas de figure le visiteur est obliger de remplire au moin le "$val"



    moi je fais sa pour un autre truc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	$minprice=trim(@$_GET['minprice']);
    	$maxprice=trim(@$_GET['maxprice']);
    	if($minprice == "")
    		$minprice=0;
    	if($maxprice == "")
    		$maxprice=9999999;
     
    	$query_search .= " AND products.price BETWEEN ". $minprice ." AND ". $maxprice;
    comme sa dans le cas ou se n'est pas rempli toute les valeur son prise en compte


    la je tente de l'adapter a ton script qui est finalement tres bon...
    as tu une idée pour etre comme mon exemple, si pas rempli prand en compte de 0 à 99999.

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

Discussions similaires

  1. [Tableaux] Probleme pour rafraichir une page php
    Par bodysplash007 dans le forum Langage
    Réponses: 1
    Dernier message: 21/03/2007, 12h31
  2. [Tableaux] Probleme tableau
    Par chocobos dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2005, 12h34
  3. Probleme d'envois de mail serveur PHP/ASP
    Par oulahoup dans le forum ASP
    Réponses: 2
    Dernier message: 23/08/2005, 15h38
  4. Probleme de variable entre SQL et Php
    Par copin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/06/2005, 11h58
  5. [VB6] Problème d'addition de dates et de nombres
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/11/2002, 22h12

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