Nu dacht ik dat dit wel met een array zou moeten kunnen.
Maar hij voert hem nu maar 1 keer uit, namelijk de laatste. Wat doe ik fout
$aVersies = array('1', '2', '3');
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry ="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
}
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
echo $sVersies.$qry;
Om het een beetje overzichtelijk te houden is dit maar maar een klein deel van de code.
Zo te zien sluit het haakje op regel 14 het haakje van regel 3. Oftewel $qry wordt eerst een paar keer overschreven in de foreach loop en dan..... wordt de laatste uitgevoerd erbuiten. Ik denk dat je gewoon die query call binnen de foreach loop moet zetten.
SELECT bk_boekingen_kenmerk, bk_boekingen_naam, bk_boekingen_soort, bk_boekingen_datum, bk_locatie_naam
FROM bk_boekingen_versie1 bk
LEFT JOIN bk_locatie loc ON bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE bk.bk_boekingen_datum<'1398895200' )
UNION
(SELECT bk_boekingen_kenmerk, bk_boekingen_naam, bk_boekingen_soort, bk_boekingen_datum, bk_locatie_naam
FROM bk_boekingen_versie2 bk
LEFT JOIN bk_locatie loc ON bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE bk.bk_boekingen_datum<'1398895200' )
UNION
(SELECT bk_boekingen_kenmerk, bk_boekingen_naam, bk_boekingen_soort, bk_boekingen_datum, bk_locatie_naam
FROM bk_boekingen_versie3 bk
LEFT JOIN bk_locatie loc ON bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE bk.bk_boekingen_datum<'1398895200' )
ORDER BY bk_boekingen_datum DESC
Versie 1 is van 12 jaar geleden en is heel anders opgebouwd, net als versie 2. Versie 3 is de huidige versie.
Ik ben inmiddels wel achter het probleem.
$qry overschrijft zichzelf steeds.
Ik heb nu de $qry =''; buiten de foreach gezet en nu werkt het wel.
$qry ='';
$aVersies = array('1', '2', '3');
$laatsteversie = '3';
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry .="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
}
Voor de mensen die heel nieuwsgierig zijn geworden over het geheel.
Dit is de complete query.
$qry ='';
$aVersies = array('1', '2', '3');
$laatsteversie = '3';
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry .="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']) || isset($_GET['invoerpersnr']))
{
$qry .="
LEFT JOIN
bk_locatie loc
ON
bk.bk_boekingen_kenmerk=pers.bk_personeel_boeking_id";
}
$qry .="
LEFT JOIN
bk_locatie loc
ON
bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE
";
//datum bepalen
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 1)
{
$qry .="
bk.bk_boekingen_datum>=' ".$vandaag." '
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 2)
{
$qry .="
bk.bk_boekingen_datum<' ".$vandaag." '
AND
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 3)
{
$qry .="
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status = 20";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
bk.bk_boekingen_datum<'".$vandaag."'";
}
}
// kijken of het om een invoerpersoon gaat
if(isset($_GET['invoerpersnr']))
{
$qry .="
AND
bk_boekingen_aannemer_id='".$_GET['invoerpersnr']."'";
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
AND
bk_personeel_mw_id='".$_GET['persnr']."'";
}
$qry .="
)";
if($sVersies!=$laatsteversie)
{
$qry .="
UNION
";
}
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
GROUP BY
bk_boekingen_kenmerk";
}
$qry .="
ORDER BY
bk_boekingen_datum";
// Hoe gaan we sorteren?
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 2)
{
$qry .="
DESC";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
DESC";
}
else
{
$qry .="
ASC";
}
}
//dat is hem dan
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
echo $qry;
Ik roep het geloof ik wat vaak, maar due group-by op regel 92 is fout.
Als je door de left join mogelijk te veel records krijgt, dan moet he dat oplossen door bjj die join aan re geven welkrecord je wilt hebben.
Met foutmelding ondrrdrukking lijkt he foute query een juist antwoord te geven, maar is dat wel zo?
Het script is inmiddels een beetje aangepast.
Dus wellicht klopt het nu wel
$qry ='';
$aVersies = array('1', '2', '3');
$laatsteversie = '3';
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry .="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']) || isset($_GET['invoerpersnr']))
{
$qry .="
JOIN
bk_personeel pers
ON
bk.bk_boekingen_kenmerk=pers.bk_personeel_boeking_id";
}
$qry .="
JOIN
bk_locatie loc
ON
bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE
";
//datum bepalen
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 1)
{
$qry .="
bk.bk_boekingen_datum>=' ".$vandaag." '
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 2)
{
$qry .="
bk.bk_boekingen_datum<' ".$vandaag." '
AND
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 3)
{
$qry .="
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status = 20";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
bk.bk_boekingen_datum<'".$vandaag."'";
}
}
// kijken of het om een invoerpersoon gaat
if(isset($_GET['invoerpersnr']))
{
$qry .="
AND
bk_boekingen_aannemer_id='".$_GET['invoerpersnr']."'";
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
AND
bk_personeel_mw_id='".$_GET['persnr']."'";
}
$qry .="
)";
if($sVersies!=$laatsteversie)
{
$qry .="
UNION
";
}
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
GROUP BY
bk_boekingen_kenmerk";
}
$qry .="
ORDER BY
bk_boekingen_datum";
// Hoe gaan we sorteren?
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 2)
{
$qry .="
DESC";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
DESC";
}
else
{
$qry .="
ASC";
}
}
//dat is hem dan
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}