[RESOLU] Jointure ou pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Jointure ou pas

Re: Jointure ou pas

par Nodibb » 02 juin 2014, 20:55

Merci Yann,

je me suis mal exprimé par 2 colonnes je pensais à cette représentation

Ville Ville
Cabinet Cabinet
Cabinet Cabinet
Cabinet

Du coup je me suis tourné vers jquery pour résoudre mon problème, mais si y a plus propre je suis preneur :)

Re: Jointure ou pas

par yann18 » 02 juin 2014, 19:04

pour disposer 2 blocs côtes à côte sous forme de colonne, on peut modifier le rendu de ces blocs en css grâce à la propriété display:
.ville, .cabinets{
display:inline-block;
 vertical-align:middle;

}
<?php


$query = $db->query("SELECT  ville_nom, cabinet_nom, cabinet_id FROM cabinets c JOIN villes v ON c.ville_id=v.ville_id");
$result = $query->fetchAll( PDO::FETCH_GROUP);
$count = $query->rowCount();

foreach($result as $ville=>$value){
 echo "<div class='content'>";
  echo "<div class='ville'><h4> $ville</h4></div> <div class='cabinets'> ";
  foreach($value as $k=>$val){
   echo  "<div class='cabinet'><input type='checkbox' id='cabinet".$val['cabinet_id']."' name='cabinet[]' value='".$val['cabinet_id']."'><label for='cabinet".$val['cabinet_id']."'>{$val['cabinet_nom']}</label></div>";
  }

echo "  <div><br></div></div></div>";
}
?>
pour récupérer les checbox cochés, tu parcours avec une boucle le tableau $_POST['cabinet']

un exemple de colonne:exemple

Re: Jointure ou pas

par Nodibb » 31 mai 2014, 22:07

J'aurais peut être du ré-ouvrir un post pour ce nouveau problème mais comme cela concerne cette requête spécifique donc je poursuis.

Il faudrait que j'arrive a scinder cette requête en 2 parties afin de l'afficher sur 2 colonnes :

Code : Tout sélectionner

$query = $db->query("SELECT ville_nom, cabinet_nom, cabinet_id FROM cabinets c JOIN villes v ON c.ville_id=v.ville_id"); $result = $query->fetchAll( PDO::FETCH_GROUP); $count = $query->rowCount(); foreach($result as $ville=>$value){ echo "<h4> $ville</h4>"; foreach($value as $k=>$val){ echo "<p><input type='checkbox' id='cabinet{$val['cabinet_id']}' name='cabinet{$val['cabinet_id']}' value='{$val['cabinet_nom']}'><label for='cabinet{$val['cabinet_id']}'>{$val['cabinet_nom']}</label></p>"; } }
Si j'arrive à récupérer le nombre total d'enregistrement impossible de comprendre comment je peux séparer le résultats afin de les mettre dans 2 div distincts .

Une inspiration ?

Re: Jointure ou pas

par moogli » 29 mai 2014, 12:59

Salut,

Si tu considère ton sujet résolus peux tu cliquer sur le bouton "résolus" a droite du titre ?

Merci

Re: Jointure ou pas

par Nodibb » 29 mai 2014, 11:18

Merci pour cette expilcation

Re: Jointure ou pas

par yann18 » 28 mai 2014, 23:05

Ca tombe bien j'utilise PDO et cette fonction à l'air bien sympathique, faut juste que j'apprenne à afficher un tableau :D (oui je suis un vrai débutant).
dans l'exemple que j'ai cité plus haut , $query->fetchAll(PDO::FETCH_GROUP) donne un tableau multidimensionnel et associatif dont les clés sont les noms des villes et les éléments de ce tableau sont eux mêmes des tableaux répertoriant les boutiques. Afficher un tel tableau revient à le parcourir avec 2 boucles: la 1ère boucle récupère la clé(la ville) et la seconde récupère les boutiques(donc tous champs qui sont dans le select):

//le 1er champ de la requête doit être ville pour pouvoir grouper par ville
 $query = $pdo->query("SELECT ville, nom_boutique,id_boutique FROM boutique b JOIN ville v ON b.id_boutique=v.id_boutique");

     $result = $query->fetchAll( PDO::FETCH_GROUP);

foreach($result as $ville=>$value){
  echo "<h3> $ville</h3>";
  foreach($value as $k=>$val){
    echo "<p>{$val['nom_boutique']},{$val['id_boutique']} </p>";
  }
}

Sinon pour ma culture personnel 2 tables avec une jointure c'est faisable ou pas ?
oui une jointure sert à extraire les données contenues dans plusieurs tables .Exceptionnellement une jointure peut extraire les données d'une seule table(cas de l'auto-jointure)

Re: Jointure ou pas

par Nodibb » 28 mai 2014, 21:16

Ca tombe bien j'utilise PDO et cette fonction à l'air bien sympathique, faut juste que j'apprenne à afficher un tableau :D (oui je suis un vrai débutant).

Sinon pour ma culture personnel 2 tables avec une jointure c'est faisable ou pas ?

Merci yann pour ta solution

Re: Jointure ou pas

par yann18 » 28 mai 2014, 19:50

bonjour,

si tu utilises PDO, fetchAll(PDO::FETCH_GROUP) permet de grouper les enregistrements en fonction du premier champ spécifié de la requête sql select.tu trouveras un exemple ici:
affichage par ville avec pdo

Jointure ou pas

par Nodibb » 28 mai 2014, 18:05

Salut à tous,

Grand débutant en php, je dois créer et afficher une page d'une liste de boutique en france. Ces boutiques devront être regroupés par ville, l'affichage finale ressemblant à ce schéma :

Paris
Boutique xx rue xx
Boutique zz rue zz

lille
Boutique xx rue xx...

Je n'ai pas de problème pour afficher le résultat :
Boutique xx rue xx a Paris
Boutique zz rue zz a Paris etc ...

la requête et la boucle étant simple à écrire, mais impossible avec une boucle aussi simple d'arriver au résultat souhaité.
Est-ce là qu'interviennent les jointures ?
Si j'ai un peu compris la chose, il me faudrait une table ville (avec id_ville et nom) et une table boutique (id, nom, jointure id_ville) ?

Sur le principe est-ce quelque chose dans ce style

Merci de vos réponse