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 :

Jointures à assembler


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Jointures à assembler
    Bonjour

    Je cherche a savoir si on peut joindre c'est deux requêtes ensemble , qui fonctionne bien separemment mais je voudrai savoir comment les joindre si cela est possible , car je n 'arrive pas du tout ,

    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
     
    $q_1= $connec->query ("select id_member, city, round((6371*acos(cos(radians('$lat'))*cos(radians(`latitude`))*cos(radians(`longitude`) -radians('$lon'))+sin(radians('$lat'))*sin(radians(`latitude`)))) , 2) as dist
    from donnee_connect
    where (6371*acos(cos(radians('$lat'))*cos(radians(`latitude`))*cos(radians(`longitude`) -radians('$lon'))+sin(radians('$lat'))*sin(radians(`latitude`)))) <= '$searchrange'
    order by dist, city 
    ");
    while( $ri = mysqli_fetch_array($q_1)){
    $dest_city = $ri["city"];
    $dest_membre = $ri["id_member"];
    $dist = $ri["dist"];
     
    echo $dest_city;
    echo $dist;
    }


    et

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $q = $connec->query("SELECT * FROM donnee_member INNER JOIN donnee_connect ON donnee_member.id =  donnee_connect.id_member  INNER JOIN description_member ON donnee_member.id = description_member.id_member_desc
     WHERE (age BETWEEN '$rangeage[0]' AND '$rangeage[1]') 
    AND (weight_desc BETWEEN '$weightrange[0]' AND '$weightrange[1]')
    AND (size_desc BETWEEN '$sizerange[0]' AND '$sizerange[1]')");
     
         while( $r = mysqli_fetch_array($q)){
         echo 'Résultat de la recherche: '.$r['nom'].' '.$r['prenom'].' '.$r['age'].' <br />';
         echo 'Résultat de la ville: '.$r['city'].'<br />';
         }

  2. #2
    Modérateur

    Sur quel critère veux tu joindre ces requêtes ?
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  3. #3
    Membre à l'essai
    C est pour un moteur de recherche interne , avec une recherche pour les alentour de la ville sur une distance donnée et la deuxième pour afficher le profil en fonction de âge , taille etc
    Et je voudrai pouvoir faire tout cela en une requête au lieu de deux

  4. #4
    Modérateur

    Bonjour,

    il serait préférable de poster uniquement la requête SQL (sans le code php inutile ici) et de l'indenter un minimum... les requêtes n'en seront que plus lisible !

    Par ailleurs, il serait utile de poster le résultat attendu afin de préciser le besoin.

  5. #5
    Membre à l'essai
    Oui désolé pour cela mais je suis nocive , en faite je voudrai faire que au lieu de 2 requêtes je me retrouve qu'avec une seul requête .Mais je n'arrive pas a construire correctement la requête

  6. #6
    Membre à l'essai
    J'ai finalement réussi a faire tout cela en une requête merci a vous , cependant je suis désole j 'ai une autre question
    Comment comparer dans une requête plusieurs valeur de checkbox par rapport aux valeurs dans une base de donnée , svp

    Je m 'explique avec un exemple
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $colors = array(_dark_hair,"bleu","vert","orange","rouge");
    for($i=0;$i<sizeof($colors);$i++){
     
    echo '<input type="checkbox" name="couleur[]" value="'.$i.'">'.$colors[$i].'<br>';
    }


    pour recuperer et afficher j'utilise un foreach mais comment on fais pour adapter sur une requête pour vérifier par rapport a base de donnée étant donner qu'il peut y a avoir plusieurs réponses (toujours dans le cas d'un moteur de recherche) ?

  7. #7
    Membre à l'essai
    J 'ai finalement trouver un solution je ne sais pas si c'est une bonne solution mais elle a le mérite de fonctionner
    Je post pour ceux qui aurai besoin par la suite
    il suffit d'utiliser implode(), et pour la recherche en bdd d utiliser IN

    exemple :
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(isset($couleur))
      {
       $couleur_filter = implode("','", $couleur);
       $test = " AND colors IN('".$couleur_filter."')";
      }

###raw>template_hook.ano_emploi###