Mam pewien problem męczę się już od wczoraj, otóż jest sobie baza gdzie są rekordy, i chcę wybrać tylko te rekordy, które były brane tego samego dnia np. są do pobranie takie rekordy takie id (12,13,23)
I mamy w bazie takie rekordy
id_wziecia data
12 2018-08-04 12117
13 2018-08-04 12117
23 2018-08-04 12117
2 2018-08-05 12117
12 2018-08-05 12117
13 2018-08-05 12117
To w tym wypaDKU BY TYLKO POBRAŁO rekordy z daty 20-18-08-04 i nie ma czegoś takie w sql więc chciałem napisać własny algorytm i napisałem coś takiego i to mi nie zwraca prawidłowych wyników.
$zapytanie = DB::select("select $porcja,data,produkty.nazwa as nazwa,id_produktu from spozycie join produkty on spozycie.id_produktu = produkty.id $join where id_produktu in $produkty $where $group $having $sortuj");
if ($dzien == "on") print "dobrze";
$tablica = array();
$i = 0;
$bool = false;
$blad = 0;
$z = 0;
$id_p = str_replace('(', '', $produkty);
$id_p = str_replace(')', '', $id_p);
$id_p2 = explode(",",$id_p);
$dat = "";
$blad2 = false;
foreach ($zapytanie as $zapytanie2) {
//print "f";
$blad = false;
$data[$i] = explode(" ",$zapytanie2->data);
if ($dzien == "on") {
//print "d";
//if ($i == 0) $bool = true;
if ( $i != 0 and $data[$i][0] != $data[$i-1][0] ) $bool = true;
else $bool =false;
// else if ( $i != 0 and $data[$i][0] != $data[$i-1][0]) {
//$dat = $data[$i][0];
//print $dat . "<br>";
//$bool = true;
if ($blad2 == true) {
$tablica[$z]["porcja"] = $zapytanie2->porcja;
$tablica[$z]["data"] = $zapytanie2->data;
$tablica[$z]["nazwa"] = $zapytanie2->nazwa;
$tablica[$z]["id_produktu"] = $zapytanie2->id_produktu;
$z++;
}
// }
if ($bool == true) {
//var_dump($id_p2);
print "<font color=red>" . $data[$i][0] . "</font><br>";
for ($j=0;$j< count($id_p2);$j++) {
print "kupka";
for ($b =$i;$data[$b][0] != $data[$b-1][0];$b--) {
if ($data[$b][0] == $id_p2[$j]) {
$blad++;
break;
}
print $blad;
}
$dzien2 = explode("-",$data[$i][0]);
// $id_P = DB::select("select id_produktu from spozycie where year(data) = '" . $dzien2[0] .
// "' and month(data) = '" . $dzien2[1] . "' and day(data) = '" . $dzien2[2] . "' and id_produktu = '" . $zapytanie2->id_produktu . "' and id_produktu = '" . $id_p2[$j] . "'");
// foreach ($id_P as $id_P2) {
// print "kiła ";
// }
// if (empty($id_P2)) $id_P3 = 0;
// else $id_P3 = $id_P2->id_produktu;
// print "<font color=red>" . $id_P3 . "</font><br>";
// if ($id_P3 == "") {
// $blad = false;
// }
//if ($id_p2[$j] != $zapytanie2->id_produktu) $blad = false;
}
if (count($id_p2) <=$blad) $blad2 =true;
$blad = 0;
}
//$bool =false;
}
else {
$tablica[$i]["porcja"] = $zapytanie2->porcja;
$tablica[$i]["data"] = $zapytanie2->data;
$tablica[$i]["nazwa"] = $zapytanie2->nazwa;
$tablica[$i]["id_produktu"] = $zapytanie2->id_produktu;
}
$i++;
}
var_dump($tablica);
}
Trochę namieszałem i chodzi mi o to, żeby ten algorym porównywał każdy element z tablicy $id_p2 z każdym elemtnem z tablicy bazy danych dla aktualnego dnia i potem jak zdnajdzie porównanie to zwiększa wartośc $blad++ i potem na końcu pętli porówniuje.