PHP interesse |
|
Beste mensen,
Ik ben een mysql classe aan het schrijven, voor het snel en goed maken van queries, met diverse functies voor verwerking erin. Ik ben inmiddels zover dat ik simpele queries met eenledige (ik weet niet of ik dat goed zeg) WHERE clauses kan maken (SELECT * FROM `users` WHERE `id` = 12). Ik ben nu bezig met zeg maar de meerledige WHERE clauses en daar loopp ik vast (SELECT * FROM `events` WHERE `active` != 0 && inschrijfdatum >= 31-03-2030).
Dit is het hele script: Plaatscode: 139846 en het stukje dat zich vreemd gedraagt is dit:
(regel 148)
Merk op dat die prints allemaal zijn om te testen...
elseif ($c = preg_match_all("/.*?(&&)/is", $this->select_under_which_condition, $m))
{
$andexploder = explode ("&&", $this->select_under_which_condition);
$operators_split = explode(" ",$this->determine_operators());
foreach ($operators_split as $key => $o)
// this is to remove the empty entries for non used items
{
if (empty($o))
{
unset($operators_split[$key]);
}
else
{
$keys .= $key.",";
}
}
$key_exploder = explode(",", $keys);
print "ANDS:".count($andexploder);
$i=0;
foreach($andexploder as $ands)
{
$i++;
print "<br>".$i;
foreach ($key_exploder as $key)
{
if (!empty($operators[$key]))
{
$fieldandvalue = explode($operators[$key], $ands);
print "<p>"."f:".$fieldandvalue[0]."<br/>".$fieldandvalue[1]."</p>";
}
}
}
}
elseif ($c = preg_match_all("/.*?(&&)/is", $this->select_under_which_condition, $m)) { $andexploder = explode ("&&", $this->select_under_which_condition); $operators_split = explode(" ",$this->determine_operators()); foreach ($operators_split as $key => $o) // this is to remove the empty entries for non used items { { unset($operators_split[$key]); } else { $keys .= $key.","; } } $key_exploder = explode(",", $keys); $i=0; foreach($andexploder as $ands) { $i++; foreach ($key_exploder as $key) { if (!empty($operators[$key])) { $fieldandvalue = explode($operators[$key], $ands); print "<p>"."f:".$fieldandvalue[0]."<br/>".$fieldandvalue[1]."</p>"; } } } }
Hier wordt het object voor de klasse gemaakt (ander bestand dan die op plaatscode):
$events = new query("*", "events", "active != 0 && openeduntill >= ".date("Y-m-d"));
$events -> make_query();
$events = new query ("*", "events", "active != 0 && openeduntill >= ".date("Y-m-d")); $events -> make_query();
De verwachtte output is:
Citaat: ANDS:2
1
f:active
0
2
f: openeduntill
2010-08-16
Maar ik krijg dit:
Citaat: ANDS:2
1
f:active
0
f:active != 0
2
f: openeduntill >= 2010-08-16
f: openeduntill
2010-08-16
Heeft iemand enig idee wat het probleem is? Wat ik over het hoofd zie?
Bij voorbaat dank,
Urqbz
P.s. Ik zal deze klass, als het af is posten, voor vrij gebruik.
|