Ich Stand heute vor dem Problem das ich mit der Standard mysql Extension keine Transaktion durchführen konnte. Mit der neuen mysqli Extension ist dies nun möglich ;-)
Sinn der Abrage ist es das wenn z.B. die Sprache "de" nicht gefunden wird ein Fallback auf "en" gemacht werden soll. Das ganze schreibe ich in einen XML Dom.
|
PHP Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/**
* Create Main_Index Document
* @return \b XMLDocument
*/
function hjcms_main_index()
{
global $SQLRES, $LOCALES;
$dom = new DomBuilder();
if( ! is_object( $SQLRES ) )
return $dom;
$QueryDB = <<<EOT
START TRANSACTION;
SELECT SQL_BUFFER_RESULT @lng:=IF( STRCMP(`main_lang`,'$LOCALES'),'en','$LOCALES')
FROM `hjcms_main_data` WHERE ( `main_activ` LIKE 1 ) ORDER BY `main_id` ASC;
SELECT SQL_SMALL_RESULT `settings_id`, `settings_param`, `settings_value`
FROM `hjcms_settings` WHERE ( `settings_value` LIKE 0 ) ORDER BY `settings_id`;
SELECT SQL_SMALL_RESULT * FROM `hjcms_meta_definition`
WHERE (`meta_tag` IS NOT NULL) ORDER BY `meta_reference_id` ASC LIMIT 127;
SELECT SQL_SMALL_RESULT `main_id`, `main_type`, `main_title`, `main_body`,
`main_modified`, `main_posted` FROM `hjcms_main_data`
WHERE ( `main_type` RLIKE "news|about" AND `main_lang` LIKE @lng AND `main_activ` LIKE 1 )
ORDER BY `main_id` ASC;
SELECT SQL_SMALL_RESULT `board_id`, `board_public`, `board_sort`, `board_name`,
`board_description`, COUNT(`panel_id`) AS `board_panel_subcount`
FROM `hjcms_board` USE INDEX(`board_permissions_id`)
LEFT JOIN `hjcms_panel` ON (`panel_board_id`=`board_id` AND `panel_activated`='1')
WHERE (`board_disabled`='0' AND `board_permissions_id`!=0 AND `panel_activated`='1' )
GROUP BY `board_id` ORDER BY `board_sort` ASC LIMIT 999;
COMMIT;
EOT;
$KEY_SET = array(
"settings_id" => "hjcms_settings",
"meta_id" => "meta",
"main_id" => "main",
"board_id" => "boardnav"
);
if( mysqli_multi_query( $SQLRES, $QueryDB ) )
{
do {
if( $result = mysqli_store_result( $SQLRES ) )
{
$fields = mysqli_fetch_field( $result );
if( ! array_key_exists( (string)$fields->name, $KEY_SET ) )
continue;
while( $rows = mysqli_fetch_assoc( $result ) )
{
$dom->addSibling( $KEY_SET[$fields->name], $fields->name );
foreach( $rows AS $k => $v )
{
$dom->childNode( $k, $v );
}
}
mysqli_free_result( $result );
}
mysqli_more_results( $SQLRES );
} while ( mysqli_next_result( $SQLRES ) );
}
return $dom->getDom();
}
|