Résultat NULL sur un LEFT OUTER JOIN
Posté : 12 févr. 2016, 19:49
Bonjour à tous,
J'ai passé l'après midi dessus mais je ne vois pas la solution, j'espère que vous pourrez m'aider
Donc, j'explique le contexte :
J'ai décidé de mettre en place un système de messagerie privé sur mon site.
Depuis mon back office je peux injecter de nouveaux messages à mes utilisateurs.
Afin d'éviter d'encombrer la base de milliers de ligne inutile pour des utilisateurs qui ne viennent plus, j'ai décidé d'injecter le contenu de ce MP au moment où la personne se connecte.
Pour que chaque personne puisse agir sur ce MP (Lu, Non Lu, Supprimer) j'utilise donc 2 tables.
Et c'est la que ca coince...
L'idée de ma requète d'injection est de vérifier que ma table INBOX ne contienne pas déjà le message de la table MESSAGE.
Voici mon code :
En fait, l'erreur qui se produit est que la requête ne détecte pas le résultat NULL et réinjecte le contenu indéfiniment.
J'ai testé en mettant une condition if ($resultat != NULL) avant le INSERT mais ca ne change rien.
Merci par avance pour vos lumières
J'ai passé l'après midi dessus mais je ne vois pas la solution, j'espère que vous pourrez m'aider
Donc, j'explique le contexte :
J'ai décidé de mettre en place un système de messagerie privé sur mon site.
Depuis mon back office je peux injecter de nouveaux messages à mes utilisateurs.
Afin d'éviter d'encombrer la base de milliers de ligne inutile pour des utilisateurs qui ne viennent plus, j'ai décidé d'injecter le contenu de ce MP au moment où la personne se connecte.
Pour que chaque personne puisse agir sur ce MP (Lu, Non Lu, Supprimer) j'utilise donc 2 tables.
Et c'est la que ca coince...
L'idée de ma requète d'injection est de vérifier que ma table INBOX ne contienne pas déjà le message de la table MESSAGE.
Voici mon code :
Code : Tout sélectionner
<?php
require('./connect.inc.php');
$user_id = $row['id'];
$result= mysql_query("select m.id id from message AS m LEFT OUTER JOIN inbox AS i on i.messageid = NULL WHERE (m.userid = '0' or m.userid = '".$user_id."') and m.datefin > '".time()."' ");
while($inb = mysql_fetch_array($result)){
$req = mysql_query("INSERT INTO inbox (messageid, userid, statut ) VALUES ('".$inb['id']."','".$user_id."','unread')");
}
?>
J'ai testé en mettant une condition if ($resultat != NULL) avant le INSERT mais ca ne change rien.
Merci par avance pour vos lumières