ajouter une condition à une jointure de 2 tables

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 : ajouter une condition à une jointure de 2 tables

Re: [RESOLU] ajouter une condition à une jointure de 2 tables

par Merac » 31 juil. 2020, 10:20

Merci. Je n'aurai pas pensé tout seul, il y des logiques php que je maîtrise peu.

Encore merci pour cette solution.

Re: [RESOLU] ajouter une condition à une jointure de 2 tables

par Patriboom » 29 juil. 2020, 23:19

Ça fait beaucoup de code à changer en cas d'évolution du projet.
Voici une solution plus économe: ne fais porter la condition que sur l'élément qui change ( ici, je ne trouve de différence qu'entre p.idde et p.ida

par conséquent, ton code pourrait être simplifié en :
$sql = 'SELECT p.*,m.pseudo FROM '.$prefixtable.'mp AS p LEFT JOIN '.$prefixtable.'membres AS m ON '.((!isset($_GET['send'])) ? 'p.idde=m.id WHERE ida' : 'p.ida=m.id WHERE idde' ).' = "'.intval($idmembre).'" and m.forum = "'.add_gpc($numduforum).'" and p.forum = "'.add_gpc($numduforum).'" ORDER BY id DESC ';
ou la différence confiée à une variable et cette dernière intégrée à la construction de ta requête:
$Variante = (!isset($_GET['send'])) ? 'p.idde=m.id WHERE ida' : 'p.ida=m.id WHERE idde' ;

$sql = 'SELECT p.*,m.pseudo FROM '.$prefixtable.'mp AS p LEFT JOIN '.$prefixtable.'membres AS m ON '.$Variante.' = "'.intval($idmembre).'" and m.forum = "'.add_gpc($numduforum).'" and p.forum = "'.add_gpc($numduforum).'" ORDER BY id DESC ';

Re: ajouter une condition à une jointure de 2 tables

par Merac » 28 juil. 2020, 17:23

OUf!! résolut du moins je pense.
La solution

Code : Tout sélectionner

if(!isset($_GET['send'])) { $sql = 'SELECT p.*,m.pseudo FROM '.$prefixtable.'mp AS p LEFT JOIN '.$prefixtable.'membres AS m ON p.idde=m.id WHERE ida = "'.intval($idmembre).'" and m.forum = "'.add_gpc($numduforum).'" and p.forum = "'.add_gpc($numduforum).'" ORDER BY id DESC '; } else { $sql = 'SELECT p.*,m.pseudo FROM '.$prefixtable.'mp AS p LEFT JOIN '.$prefixtable.'membres AS m ON p.ida=m.id WHERE idde = "'.intval($idmembre).'" and m.forum = "'.add_gpc($numduforum).'" and p.forum = "'.add_gpc($numduforum).'" ORDER BY id DESC '; }

ajouter une condition à une jointure de 2 tables

par Merac » 28 juil. 2020, 14:57

Bonjour,

J’ai récupéré un script d’un vieux forum (2005) et mis sous PHP7.

je le modifie en multi forum ( pour plusieurs classes) et je suis sur les dernières modif

Pour cela j’ai crée un champ forum (même nom) sur toute les tables et l’élève pointera sur son forum, via une session, dès qu’il se connecte.

Là, j’ai un script avec une jointure et malgré le temps passé je n’arrive pas a faire ce que je veux soit :

il faut que le champ forum de la table mp soit egal au champ forum de la table message et que les 2 soit égales à la variable $nom_forum

Le script original :

Code : Tout sélectionner

if(!isset($_GET['send'])) { $sql = 'SELECT p.*,m.pseudo FROM '.$prefixtable.'mp AS p LEFT JOIN '.$prefixtable.'membres AS m ON p.idde=m.id WHERE ida = "'.intval($idmembre).'" ORDER BY id DESC '; } else { $sql = 'SELECT p.*,m.pseudo FROM '.$prefixtable.'mp AS p LEFT JOIN '.$prefixtable.'membres AS m ON p.ida=m.id WHERE idde = "'.intval($idmembre).'" ORDER BY id DESC '; }
Il faut dire que du PHP je ne maitrise que les fonctions élémentaires

Merci pour votre aide
Antoine