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

CreativPur

Erfahrenes Mitglied
Hi, ich habe folgendes Problem..
Ich habe 2 Tabellen in meiner sql-Bank. users und Mitarbeiter_Urlaub

In der Mitarbeiter_Urlaub-Tabelle habe ich die Mitarbeiter_id und die Urlaubszeit.
In der user-Tabelle habe ich Werte von den Mitarbeitern.

Bei der Tabellen Mitarbeiter_Urlaub ist die Mitarbeiter_id indisch mit der id von der user-Tabelle

Beide Tabellen funktionieren auch einwandfrei.

Bei der Mitarbeiter_Urlaub-Tabelle lasse ich die ID auslesen, welche gerade Urlaub hat..

PHP:
<?php $timestamp = time();
$datum = date("Y-m-d", $timestamp);

$sql = "SELECT * FROM Mitarbeiter_Urlaub WHERE '$datum' >= urlaub_von AND  '$datum' <= urlaub_bis";
foreach ($pdo->query($sql) as $mitarbeiter_urlaub) {
echo $mitarbeiter_urlaub['Mitarbeiter_id'].',';
}

Ergebnis: 1,2
das ist auch korrekt!

Bei der user-Tabelle gebe ich unter bestimmten WHERE-Klauseln die Mitarbeiter aus..

PHP:
<?php $id = $mitarbeiter_urlaub['Mitarbeiter_id'];
$sql = "SELECT * FROM users WHERE filliale = 'Göttingen' AND abteil = 'Wohnzimmer'  ORDER BY id asc";
 
foreach ($pdo->query($sql) as $mitarbeiter) {
?>
<div class="col-2">
<div class="card">
  <img src="termin/mitarbeiter/<?php echo $mitarbeiter['mitarbeiter_img'] ?>" class="card-img-top" alt="...">
  <div class="card-body">
    <?php echo $mitarbeiter['id'] ?>
  </div>
</div>
</div>
 
<?php }   ?>
auch dies klappt perfekt..!

nun möchte ich das Ergebnis der ersten Ausgabe mit der zweite Ausgabe verbinden, so das die ID 1,2 ni der zweiten Ausgabe nicht angezeigt werden...
PHP:
<?php 
$sql = "SELECT * FROM Mitarbeiter_Urlaub WHERE '$datum' >= urlaub_von AND  '$datum' <= urlaub_bis";
foreach ($pdo->query($sql) as $mitarbeiter_urlaub) {

$id = $mitarbeiter_urlaub['Mitarbeiter_id'];
$sql = "SELECT * FROM users WHERE filliale = 'Göttingen' AND abteil = 'Wohnzimmer'  AND id NOT IN ('$id')  ORDER BY id asc";
 
foreach ($pdo->query($sql) as $mitarbeiter) {
?>
<div class="col-2">
<div class="card">
  <img src="termin/mitarbeiter/<?php echo $mitarbeiter['mitarbeiter_img'] ?>" class="card-img-top" alt="...">
  <div class="card-body">
    <?php echo $mitarbeiter['id'] ?>
  </div>
</div>
</div>
 
<?php }    } ?>

Leider wird mir nur ein Mitarbeiter , anstatt zwei von den id-NOT nicht angezeigt

PS: Ich habe auch keine FEHLERMELDUNG!
 
Ich habe auch keine FEHLERMELDUNG!
Du hast auch kein error_reporting hochgedreht und auch keine Debug-Ausgaben und du schreibst immer noch "Select *", obwohl dir solche Dinge schon mehrfach geschrieben wurden!
Solange du dich nicht an solche Grundlagen hältst, kannst du nicht auf meine Hilfe hoffen, denn deine Bequemlichkeit unterstütze ich nicht mehr!

Und bei einer einzigen id "id NOT IN" zu schreiben ist sowieso Quatsch
 
Sehr geehrter Herr bdt600,
ich bitte mir doch einen anderen Ton..
1. Bequemlichkeit ist für mich ein absolutes FREMDWORT,
2. Woher möchten Sie wissen, das ich kein error_reporting hochgedreht und auch keine Debug-Ausgaben erhalten habe?
(nur weil ich im Quelltext es nicht aufgeführt habe?)
Ich schrieb aber, dass keine Fehlermeldung kam. (Wer lesen kann, ist klar im Vorteil!)
3. Select funktioniere auch mit "".
4. In meinem Beispiel ist zu ersehen, dass es sich hierbei um 2 ID`s im "id NOT IN" handelt: Dies ist auch nur eine BEISPIEL! (Wer lesen kann, ist klar im Vorteil!)

Zum Glück sind nicht alle so wie Sie, vorsichtig auf den Nenner gebracht, arrogant und eingebildet.
Dieser Chat ist auch Hilfesuchenden.
Solche Menschen wie Sie vertreiben doch nur die Mitglieder!
Aber das wird man Ihnen bestimmt schon bestätigt haben..

Hochachtungsvoll
CreativPur
 
Mit
PHP:
$id = $mitarbeiter_urlaub['Mitarbeiter_id'];
hast du bei
PHP:
$sql = "SELECT * FROM users WHERE filliale = 'Göttingen' AND abteil = 'Wohnzimmer'  AND id NOT IN ('$id')  ORDER BY id asc";
genau eine Id. Wenn man seinen eigenen Quellcode nicht lesen kann und keine Debug-Ausgaben nutzt, sollte man vielleicht nicht irgendwelche Sprüche raus hauen.
Und dass du keinerlei Debug-Ausgaben in deinem Quellcode postest, ist ja nichts Neues bei dir.

Und ja, "Select *" funktioniert auch, aber für dich extra noch einmal:
Beim Einsatz von SQL-Datenbanken sollte das Abrufen aller Spalten eines Datensatzes per SELECT * vermieden werden. Stattdessen sollten die gewünschten Spaltennamen explizit aufgelistet werden (SELECT col1, col2 FROM …). Einige Vorteile:

Häufig werden in einer Abfrage nicht alle Spalten benötigt, die aktuell existieren oder in Zukunft existieren könnten, sodass unnötige Daten übertragen werden.
Bei expliziter Angabe der gewünschten Spalten können Datenbanksysteme unter Umständen Indizes zur Beantwortung von Abfragen nutzen.
Eine Auflistung der Spaltennamen macht den Code verständlicher, da die Tabellenstruktur nicht erst im Datenbankschema nachgelesen werden muss.
Bei Änderungen am Datenbankschema (etwa bei Entfernung oder Umbenennung einer Spalte) schlägt eine Query, die kein SELECT * nutzt, sofort fehl. Das ist hilfreich, da so keine Stelle im Code übersehen werden kann, an der wahrscheinlich auch die PHP-Datenstrukturen an das neue Schema angepasst werden müssen.
In der Gewissheit, dass dich das jetzt wieder nicht überzeugt, habe ich echt keinen Nerv, immer wieder bei dir die Grundlagen zu nennen. Wenn du keinen sauberen Quellcode willst, dann ist das deine Sache, aber wundere dich nicht, wenn das ein oder andere nicht funktioniert.

Dies ist auch nur eine BEISPIEL!
Aha, du postest einen Quellcode, der nicht wirklich im Einsatz ist, sehr sinnvoll! :(

arrogant und eingebildet
Deine Beleidigungen machen deinen Quellcode auch nicht besser
 
Ich stimme @CreativPur in #3 in großen Teilen zu:

Solche Menschen wie Sie vertreiben doch nur die Mitglieder!
Das habe ich mehr als ein Mal beobachtet, dass das passiert ist. Und es gibt sehr wahrscheinlich eine hohe Dunkelziffer: Viele Neue, die eine Frage haben, werden sich erst Mal ein wenig umsehen, bevor sie sich registrieren und gleich wieder verschwinden, wenn sie unfreundliche und abschreckende Postings sehen.

Was das select * betrifft: Es trifft natürlich zu, dass es Vorteile hat, die Felder explizit aufzuzählen. Aber hier und in vielen anderen Fällen hat es mit dem Problem des Fragestellers nichts zu tun, ist off-topic und trägt zur Problemlösung nichts bei.

Merke: Durch Vorwürfe und Forderungen ist noch kein Problem gelöst und kein Projekt ans Laufen gekommen, sondern nur durch Lösungen.
 
@Sempervivum
Von dir habe ich eigentlich nichts anderes erwartet. Poste du weiterhin deine fertigen Lösungen hier und in anderen Foren, du scheinst ja nichts Besseres den ganzen Tag zu tun zu haben.
Durch Vorwürfe und Forderungen ist noch kein Problem gelöst
Das stimmt wohl, aber wenn man jemandem immer und immer wieder grundlegende Dinge posten muss und diese immer und immer wieder missachtet werden, dann darf man sich auch nicht wundern, wenn man mal etwas säuerlich reagiert.

Aber bitte, wie ihr wollt. Ich halte mich ab sofort zurück und werden hier nicht mehr posten.
 
Es wäre schon mal viel gewonnen, wenn du nicht nur html, sondern auch php sauber formatiert hier ausgeben würdest. Dann wäre das hier vielleicht aufgefallen.

Denn da muß ich bdt600 Recht geben, hier steht immer nur eine id drin.
PHP:
$id = $mitarbeiter_urlaub['Mitarbeiter_id'];
Die Zeile 5 und 6 liegen innerhalb der Schleife, die in Zeile 3 gestartet wird. Ich hätte hier eher erwartet, daß durch die Schleife ein Ergebnis Array aufgebaut wird, bevor es damit weitergeht.
 
Ich denke mal, wir sollten mal das KRIEGSBEIL begraben und sachlich und vor allem Respektvoll miteinander umgehen.
Ich habe ihn den ganzen Jahren, wo ich hier bin wirklich verdammt viel gelernt und bin euch auch sehr dankbar dafür!
Sicherlich macht jeder seine immerwiederkehrenden Fehler, die einfach nicht angenommen werden wollen, aber geht es nicht allen Menschen so ?
Ich habe mit 65 Jahren gelernt, auch darüber mal hinweg zu schauen..
 
Ich würde dennoch gern auf mein Problem zurück kommen.
Tabelle 1: (Mitarbeiter_Urlaub)
id (int)
Mitarbeiter_id (int)
urlaub_von (date)
urlaub_bist (date)

Tabelle 2: (users)
id: = user_id
filiale:
abteil:
mitarbeiter_img:


Im ersten Script wird mir der Wert aus Tabelle 1 ausgegeben:
Welche Mitarbeiter sind zur Zeit im Urlaub?

PHP:
<?php
$sql = "SELECT mitarbeiter_id, urlaub_von, urlaub_bis FROM Mitarbeiter_Urlaub WHERE '$datum' >= urlaub_von AND  '$datum' <= urlaub_bis";
foreach ($pdo->query($sql) as $mitarbeiter_urlaub) {  
echo $mitarbeiter_urlaub[id].',';
?>

Als Ergebnis bekomme ich folgende id's ausgegeben: 104, 128

Im zweitem Script wird mir der Wert aus Tabelle 2 ausgegeben:
Welche Mitarbeiter befinden sich in welcher Filiale und in welcher Abteilung und sollen laut Tabelle 1 nicht ausgegeben werden ?

PHP:
<?php
$id = $mitarbeiter_urlaub['Mitarbeiter_id'];
$sql = "SELECT filliale, abteil, mitarbeiter_img, id  FROM users WHERE filliale = 'Göttingen' AND abteil = 'Wohnzimmer' AND id NOT IN ('$id') ORDER BY id asc";
foreach ($pdo->query($sql) as $mitarbeiter) {  
?>

Das Resultat:

PHP:
<div class="col-2">
<div class="card" align="center">
  <img src="https://www.cj-jaeger.de/Webseite/termin/mitarbeiter/<?php echo $mitarbeiter['mitarbeiter_img'] ?>" class="card-img-top" alt="...">
  <div class="card-body">
    <?php echo $mitarbeiter['id'] ?>
  </div>
</div>
</div>
 
<?php }    }  ?>

Der Fehler: Die Mitarbeiter_id 104 wird nicht ausgegeben, aber die Mitarbeiter_id 128
 

Neue Beiträge

Zurück