J'ai un formulaire d'importation de feuille d'heures où les utilisateurs soumettent les heures travaillées par jour. Ces données sont envoyées à une table appelée heures.Comment interroger la base de données SQL à partir de php sur lequel l'utilisateur n'a pas envoyé son rapport d'heure pour les 30 derniers jours
Ce tableau contient les colonnes:
utilisateur, jour, heure, BeginTime, endtime
Je veux envoyer chaque employé un e-mail quand ils n'ont pas envoyé dans leurs heures de travail par journée. Ce que j'ai essayé jusqu'ici: créer un tableau avec les utilisateurs actifs.
J'ai créé un tableau à partir d'une requête sql en php avec toutes les feuilles d'heures par utilisateur d'hier.
Avec array_diff_assoc j'ai les utilisateurs qui n'ont pas envoyé leur feuille de temps pour 'hier'.
Donc pas de problème ici. Mais je cherche une solution plus propre qui peut le faire pendant plusieurs jours dans le passé. Disons le dernier mois. Est-ce que quelqu'un a une bonne suggestion pour me pousser dans la bonne direction?
Base de données est sql Langage de programmation php
Ne vous méprenez pas, je ne ai pas besoin de tonnes de code. Je ne suis pas fainéant, je veux essayer de le chercher moi-même. J'ai juste besoin d'une poussée dans la bonne direction.
exemple de la vie réelle:
Tableau structure: Hourimport Table < ---- un à plusieurs < ---- table utilisateur | un à plusieurs | Hourimport détail
Hourimport contient le dayreports numéro d'enregistrement unique, l'utilisateur, la date, le statut, le courrier
Hourimport détail contient les détails des enregistrements du dayreport. Plusieurs enregistrements de détail par jour. Par exemple, une heure de voyage de 8h à 9h et les heures de travail de 9h à 17h. Pauses et miles parcourus. * n'est pas nécessaire pour cet exemple car toutes les données dont j'ai besoin se trouvent dans la table hourimport.
utilisateurs contient id, nom, courrier, etc
echo '<br>STEP 1: <br>Connected successfully <br><br>';
$yesterdayT = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d")-1, date("Y")));
$yesterday = date("Y-m-d H:i:s", strtotime($gisterenT));
$yesterday = "'$gisteren'";
//////////////////////////////////////////////////////////
$result = mysql_query("select id as employee from users inner join user_group on users.id=user_group.user_id where group_id=10 or group_id=11");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$rows = array();
while($rows[]=mysql_fetch_array($result));
echo "<br>A <--<pre>";
print_r ($rows);
echo "</pre><br><br>";
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
$result1 = mysql_query("select employee from hourimport INNER JOIN hourimport_detail ON hourimport.id=hourimport_detail.parent_id WHERE hourimport.date =$yesterday");
if (!$result1) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$rows1 = array();
while($rows1[]=mysql_fetch_array($result1));
echo "<br>B <--<pre>";
print_r ($rows1);
echo "</pre><br><br>";
//////////////////////////////////////////////////////////
$result3=array_diff_assoc($rows,$rows1);
echo "<br>Users that didnt send in their dayreport<pre>";
print_r ($result3);
echo "</pre><br><br>"
C'est ce que j'ai jusqu'à présent. Et cela fonctionne jusqu'à maintenant.
Hourimport id int (11) auto_increment Date datetime employé int (11) courrier int (11) texte d'état
Veuillez poster un code essayé et quelques données pour un exemple reproductible. La description de votre question est géniale mais nécessite une illustration réelle. – Parfait
Avez-vous aussi une table 'users'? Si oui, veuillez l'ajouter à la question. De plus, quelle base de données utilisez-vous spécifiquement? Toutes les bases de données relationnelles utilisent SQL - MySQL? Serveur SQL? – halfer
Pouvez-vous afficher votre syntaxe create table pour votre table 'hours'? J'ai besoin de connaître le 'type' de vos colonnes. – Gravy