Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите, пожалуйста, исправить запрос к базе!
 
 автор: www777   (27.08.2007 в 15:34)   письмо автору
 
 

Друзья! Я новичок и пытаюсь разобраться в хитростях php и mysql.

А как не разбираться как на готовых примерах. Вот и стал разбирать одну cms.

Там код такой:




<?php

$id = @ $_REQUEST['id'];
$sql = 'SELECT s.*, t.name type_name, COUNT(i.id) items_count FROM #sections s, #types t LEFT JOIN #items i ON (i.section_id = s.id) WHERE s.type_id = t.id AND s.id = ? GROUP BY s.id';
$res = mysql_dbquery($sql, $id);

if (!$section = mysql_fetch_assoc($res)) show_error('Section not found');

$sql = 'SELECT gid, parent_id FROM #sections WHERE id = ?';
$section_gid = $section['gid'];
$pid = $section['parent_id'];
while (!$section_gid && $pid) {
$res = mysql_dbquery($sql, $pid);
list($section_gid, $pid) = mysql_fetch_row($res);
}
if (!allowed($section_gid, $_SESSION['gid'])) show_error('Forbidden');

if (isset($_POST['id'])) {
if (empty($_POST['title'])) show_error('Section title required');
$title = $_POST['title'];
$type_id = (empty($_POST['type_id']) ? $section['type_id'] : $_POST['type_id']);
$template = $_POST['template'];
$sort = (int) $_POST['sort'];

if ($section['depth']) {
$sql = 'SELECT id, path, depth FROM #sections WHERE id = ?';
$res = mysql_dbquery($sql, $_POST['parent_id']);
if (!$parent = mysql_fetch_assoc($res)) show_error('Invalid section parent');
if (!preg_match('/^[a-z][a-z0-9_-]*$/', $_POST['alias'])) show_error('Invalid section alias');
$alias = $_POST['alias'];
$path = ($parent['depth'] ? $parent['path'].'/' : '').$alias;
$depth = $parent['depth'] + 1;
$sql = 'SELECT id FROM #sections WHERE path = "?" AND id != ?';
$res = mysql_dbquery($sql, $path, $id);
if (mysql_fetch_row($res)) show_error('Section /'.$path.' already exists');

$sql = 'UPDATE #sections SET parent_id=?, alias="?", path="?", depth=?, type_id=?, title="?", template="?", sort=? WHERE id = ?';
mysql_dbquery($sql, $parent['id'], $alias, $path, $depth, $type_id, $title, $template, $sort, $id);

if ($section['path'] != $path) {
$pos = strlen($section['path']) + 1;
$sql = 'UPDATE #sections SET path = CONCAT("?", SUBSTRING(path, ?)) WHERE path LIKE "?/%"';
mysql_dbquery($sql, $path, $pos, $section['path']);
}
} else {
$sql = 'UPDATE #sections SET type_id=?, title="?", template="?", sort=? WHERE id = ?';
mysql_dbquery($sql, $type_id, $title, $template, $sort, $id);
}

if ($_SESSION['gid'] == 1) {
$gid = (isset($_POST['inherit_gid']) ? 'NULL' : (array_sum($_POST['groups']) + 1));
$sql = 'UPDATE #sections SET gid = ? WHERE id = ?';
mysql_dbquery($sql, $gid, $id);
}

event('section-edit-post', array($id));

refresh();
}


$sql = 'SELECT id, path FROM #sections WHERE id != ? AND path NOT LIKE "?/%"';
$res = mysql_dbquery($sql, $id, $section['path']);
$parents = array();
while ($s = mysql_fetch_assoc($res)) {
$parents[$s['id']] = $s['path'];
}

$templates = array();
if ($tplfiles = glob('templates/*.tpl.php')) {
foreach ($tplfiles as $f) $templates[] = basename($f, '.tpl.php');
}

$sql = 'SELECT * FROM #groups WHERE id != 1';
$res = mysql_dbquery($sql, $id);
$groups = array();
while ($g = mysql_fetch_assoc($res)) {
$groups[$g['id']] = $g['name'];
}

?>

Так вотя вся фишка ф том, что на локальном хосте все работает безупречно, а на настоящем хосте (проверено на двух разных хостингах), код не исполняется, т.е. выделенный жирным шрифтом запрос не выполняется. Проверял это проставлением /* */ для того, чтобы выявить проблему. Код нужен весь этот для того, чтобы переопределить переменные для взаимодействия с формами, которые выводятся в браузер дальше после этого кода. Если весь этот код убрать, то дальше все отображается (формы в смысле). Помогите, пожалуйста, понять в чем дело и обясните мне чайнику запутанный синтаксис выборки из базы. Заранее спасибо!

   
 
 автор: ddhvvn   (27.08.2007 в 15:41)   письмо автору
 
   для: www777   (27.08.2007 в 15:34)
 

Во-первых: оформляйте код соотвествующими тегами!
Во-вторых? на хостинге ошибки скрипт выводит?

   
 
 автор: www777   (27.08.2007 в 15:49)   письмо автору
 
   для: ddhvvn   (27.08.2007 в 15:41)
 

Ой, извините, пропустил теги... да...

На хостинге ошибки не выводит, если код весь закомментирован, а формы дальше выводит. На локальном хостинге, формы выводит и вываливаются рядом с ними ошибки.

   
 
 автор: www777   (29.08.2007 в 20:32)   письмо автору
 
   для: www777   (27.08.2007 в 15:34)
 


$sql = 'SELECT s.*, t.name type_name, COUNT(i.id) items_count FROM #sections s, #types t LEFT JOIN #items i ON (i.section_id = s.id) WHERE s.type_id = t.id AND s.id = ? GROUP BY s.id';


Люди добрые, ну хоть поясните, пожалуйста, синтаксис и основные операторы в запросе! А то что-то все молчат...

   
 
 автор: cheops   (30.08.2007 в 19:59)   письмо автору
 
   для: www777   (27.08.2007 в 15:34)
 

Функция show_error() что выводит? Имеется ли какой-либо ответ от СУБД?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования