php Ausgabe mit id NOT IN (1,2,3)

Jetzt habe ich den Code abgeändert und bekomme alle Mitarbeiter angezeigt!

PHP:
<?php
$sql = "SELECT DISTINCT T2.ID, T2.filliale, T2.Abteil FROM users AS T2
LEFT JOIN  Mitarbeiter_Urlaub AS T1 ON T1.Mitarbeiter_ID=T2.ID AND

$datum BETWEEN T1.urlaub_von AND T1.urlaub_bis
WHERE T1.Mitarbeiter_ID IS NULL";
foreach ($pdo->query($sql) as $mitarbeiter_urlaub) {
    
echo $mitarbeiter_urlaub['ID'];   
}   
?>
 
PHP:
<?php
$sql = "SELECT DISTINCT T2.ID, T2.filliale, T2.Abteil FROM users AS T2
LEFT JOIN  Mitarbeiter_Urlaub AS T1 ON T1.Mitarbeiter_ID=T2.ID AND
/*HIER!!!*/
".$datum." BETWEEN T1.urlaub_von AND T1.urlaub_bis

WHERE T1.Mitarbeiter_ID IS NULL";
foreach ($pdo->query($sql) as $mitarbeiter_urlaub) {
   echo $mitarbeiter_urlaub['ID'];
   }
?>
Glaub ich zumindest.

btw: Solche Queries würde ich übrigens ZUERST in einem SQL-Client machen
Für MySQL kann man MySQL-Workbench oder phpMyAdmin (oder wie das heisst) nehmen.
Wenn das Query irgendwann das bringt, was man will, in Code einbauen, Parameter anpassen. Fertig!
 
Ich hab keine Ahnung von PHP, aber ein kurzer Blick ins Manual...

Deine ursprüngliches Skript umgebaut
PHP:
<?php $timestamp = time();
$datum = date("Y-m-d", $timestamp);

$sql = "SELECT * FROM Mitarbeiter_Urlaub WHERE '$datum' >= urlaub_von AND  '$datum' <= urlaub_bis";

/* Das hier ist geraten */
$mitarbeiter_urlaub = $pdo->query($sql);

/* Das hier */
echo Implode(",", $mitarbeiter_urlaub['Mitarbeiter_id']);
 
Hi Zvoni,
vielen Dank für Deine Mühe, aber ich bin einfach zu blöd es umzusetzen.
Wünsche Dir dennoch einen schönen Abend.
 
Ich habe den Code von Zvoni nochmals überarbeitet und bekomme jetzt alle Mitarbeiter aus der Filiale x und der Abteilung y angezeigt.
Wo muss ich nun die Klausel für das Beratungsdatum einbinden?
Bei diesem Termin ist laut Tabelle 1 ein Mitarbeiter im Urlaub, der aber ohne der Clausel noch angezeigt wird

PHP:
<?php     
//. Tabelle1 = "Urlaubstabelle" (Detail)
//. Tabelle2 = Mitarbeiter (Master)   
    
$Beratungsdatumdatum = '2023-11-12';   
    
$sql = "SELECT DISTINCT T2.id, T2.filliale, T2.abteil, T2.mitarbeiter_img FROM users AS T2
LEFT JOIN  Mitarbeiter_Urlaub AS T1 ON T1.Mitarbeiter_id=T2.id

BETWEEN T1.urlaub_von AND T1.urlaub_bis
WHERE T1.Mitarbeiter_id IS NULL AND filliale='Witzenhausen' AND abteil='Küche' ";
foreach ($pdo->query($sql) as $mitarbeiter_urlaub) {
?>
<img src="termin/mitarbeiter/<?php echo $mitarbeiter_urlaub['mitarbeiter_img'] ?>" class="card-img-top" style="width: 100px;" alt="...">
<?php } ?>
 
Ich habe den Code von Zvoni nochmals überarbeitet und bekomme jetzt alle Mitarbeiter aus der Filiale x und der Abteilung y angezeigt.
Wo muss ich nun die Klausel für das Beratungsdatum einbinden?
Bei diesem Termin ist laut Tabelle 1 ein Mitarbeiter im Urlaub, der aber ohne der Clausel noch angezeigt wird

PHP:
<?php    
//. Tabelle1 = "Urlaubstabelle" (Detail)
//. Tabelle2 = Mitarbeiter (Master)  
   
$Beratungsdatumdatum = '2023-11-12';  
   
$sql = "SELECT DISTINCT T2.id, T2.filliale, T2.abteil, T2.mitarbeiter_img FROM users AS T2
LEFT JOIN  Mitarbeiter_Urlaub AS T1 ON T1.Mitarbeiter_id=T2.id

BETWEEN T1.urlaub_von AND T1.urlaub_bis
WHERE T1.Mitarbeiter_id IS NULL AND filliale='Witzenhausen' AND abteil='Küche' ";
foreach ($pdo->query($sql) as $mitarbeiter_urlaub) {
?>
<img src="termin/mitarbeiter/<?php echo $mitarbeiter_urlaub['mitarbeiter_img'] ?>" class="card-img-top" style="width: 100px;" alt="...">
<?php } ?>
In Zeile 9

Mich würde es überhaupt wundern, wenn bei der SQL-Abfrage kein Fehler kommt
 
Zurück