Salutare,
Inca nu am scris pe forum, dar ma chinui de vreo doua ore sa formulez un query in care sa obtin ceva si numa’ nu reusesc. Bineinteles is incepator si pe partea de programare…
Deci sa trec la subiect. Am doua tabele muncitori(id, nume, prenume) si unde_a_lucrat(id, muncitor_id, data, loc)
Pe mine ma intereseaza sa afisez din tabelul muncitori doar pe cei care la o anumita data inca nu sunt inregistrati in tabelul unde_a_lucrat. Adica o sa setez cookie cu data si sa i-mi returneze doar acei muncitori care inca nu sunt inregistrati ca au lucrat in data respectiva.
Sper ca am fost cat de cat explicit.
$query = "“SELECT m.id, m.nume, m.prenume, u.muncitor_id, u.datum
FROM muncitor m
LEFT JOIN unde_a_lucrat u
ON m.id = u.muncitor_id
WHERE m.datum != $_COOKIE[‘date’]”;
Cam asa arata query care la mine nu functioneaza.
_$query = "“SELECT m.id, m.nume, m.prenume, u.muncitor_id, u.datum FROM muncitor m LEFT JOIN unde_a_lucrat u ON m.id = u.muncitor_id WHERE m.datum != $COOKIE[‘date’]or m.datum is null”;
Este gresit query-ul (ar fi trebuit u.datam nu m.datam), si chiar daca ar fi fost corect tot nu ar fi intors ce trebuie.
Ar fi trebuit ceva de genul:
SELECT m.id, m.nume, m.prenume, u.muncitorid, u.datum FROM muncitor m left join (select id, data from unde_a_lucrat where datam != $COOKIE[‘date’]) u on m.id=u.muncitor_id where u.data is null
doar ca varianta asta este mult mai lenta decat cele prezentate mai sus, iar varianta propusa de florin.fratica este cea mai rapida
Adauga pentru fiecare munctor si alte zile si atunci nu mai da ce trebuie. Teoretic va intoarce toti oamenii (chiar si dubluri) care nu au muncit deloc sau au muncit si in alte zile
$_arbeiters = $conn->select("SELECT id, name, vorname, status
FROM arbeiter
WHERE status = 1
AND id NOT IN
(SELECT arbeiter_id
FROM arbeitsaufteilung
WHERE datum = :datum)",
array('datum' => $_SESSION['datum']));
asa am folosit si functioneaza perfect.
apropo. pe localhost am folosit cookie si a functionat dar cand am incarcat pe server nu a mai functionat.
am folosit ceva de genul:
if (isset($_POST['set_date'])) {
setcookie('datum', $datum, time() - 3600);
}
cam asa arata tabelul/formularul in care am nevoie de query unde am cerut ajutor. ideea e ca fiecarui muncitor ii e alocat un rand care dupa ce dau submit se salveaza doar cei care au campurile completate.
chestiea e ca dupa ce completez de exeplu un rand si dau submit, il salveaza, acel rand nu mai apare, doar ca daca completez un alt rand si dau submit nu mai salveaza. trebuie mai intai sa dau refresh la pagina, si apoi functioneaza.