2 pièce(s) jointe(s)
Comparer les valeurs de 2 tables dans une requête
Salut tous le monde !
Voilà, je suis bloqué sur quelque chose que je pensais facile mais dont je ne voix l’aboutissement depuis bientôt 2 jours déjà. Je veux afficher les données de ma table A si l'une de ces champs ne se trouve pas dans un des champs de la tables B. Voilà ce que j'ai fait parmi tant d'autres qui n'ont pas fonctionner :
Code:
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
<?php
// ------------------------------------------------------------
// Connection à la Base de Données
// ------------------------------------------------------------
if( !function_exists('my_pdo_connexxion') )
{
function my_pdo_connexxion()
{
// ---------
$hostname = 'localhost'; // voir hébergeur ou "localhost" en local
$database = 'test_tuto'; // nom de la BdD
$username = 'root'; // identifiant "root" en local
$password = ''; // mot de passe (vide en local)
// ---------
// connexion à la Base de Données
try {
// chaine de connexion (DSN)
$strConn = 'mysql:host='.$hostname.';dbname='.$database.';charset=utf8'; // UTF-8
$extraParam = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // rapport d'erreurs sous forme d'exceptions
PDO::ATTR_PERSISTENT => true, // Connexions persistantes
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // fetch mode par defaut
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" // encodage UTF-8
);
// Instancie la connexion
$pdo = new PDO($strConn, $username, $password, $extraParam);
return $pdo;
}
// ---------
catch(PDOException $e){
$msg = 'ERREUR PDO connexion...'; die($msg);
return false;
}
// ---------
}
}
// --------------------------------
$pdo = my_pdo_connexxion();
// --------------------------------------------------------------
?>
<?php
// --------------------------------
// La requete (exemple) : tous les "objet", classés par "id".
$query = "SELECT DISTINCT * FROM profil INNER JOIN traitement ON profil.datemesure != traitement.traiter ORDER BY profil.datemesure ASC;";
try {
$pdo_select = $pdo->prepare($query);
$pdo_select->execute();
$NbreData = $pdo_select->rowCount(); // nombre d'enregistrements (lignes)
$rowAll = $pdo_select->fetchAll();
} catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); }
// --------------------------------
// affichage
if ($NbreData != 0)
{
?>
/****************** PUIS J'AFFICHE DANS UN TABLEAU MES VALEURS ****************/
<?php
$i = 1;
foreach ( $rowAll as $row )
{
?>
<tr>
<?php
echo '<td><input class="text_back" type="text" value="'.$row['datemesure'].'" name="datemesure'.$i.'" readonly/></td>';
echo '<td><input class="text_back" type="text" value="'.$row['pseudo_profil'].'" name="pseudo_profil'.$i.'" readonly/></td>';
echo '<td>';
echo '<input type="submit" name="Formulaire'.$i.'" value="Formulaire" class="button03" /></br>';
if(isset($_POST['Formulaire'.$i.''])){
$select = "select * from profil order by datemesure desc";
$aVar = mysqli_connect('localhost','root','','test_tuto');
$qry = mysqli_query($aVar, $select);
if(!$qry){
header('Location: ../account');
}else{
header('Location: ../formulaire_vue3?pseudo_profil='.$row['pseudo_profil'].'&datemesure='.$row['datemesure'].'&session_user='.$session_user.' ');
}
}
echo '</td>';
?>
</tr>
<?php
$i += 1;
} // fin foreach
unset($i);
?> |
Je précise déjà que mes tables ne sont point identiques en terme de colonnes ou de lignes mais les champs que je compare dans ma requête sont de la même nature (DATETIME). Au départ la table B est vide, dans ce cas, rien ne s'affiche dans mon tableau et je ne comprend pas pourquoi. Mais, lorsque je met une donnée manuellement, le tableau donne comme je veux mais lorsque je met une deuxième donnée, le tableau se met à répéter tous en double et etc. Ma question serait donc de savoir comment je peut régler ce problème ou où ai-je fais une erreur que jeux peut corriger.
Merci d'avoir lu ce poste !!!