Категории

[FAQ] Часто задаваемые вопросы и ответы

Проблемы и решения

Ошибки и исправления

Общие вопросы

Расширения

Установка и обновление

Модули

Шаблоны

Локализация интерфейса

Коммерческие предложения

Учимся бизнесу

Бизнес книги

Поисковая оптимизация (SEO)

Магазины на ShopOS

Хостинг для ShopOS

Предложения и пожелания

Курилка

Помогите по запросу

В этом запросе где-то ошибка. я не силен в этом деле.

$get_members = mysql_query("SELECT members.*, count(short_urls.*) as urls_num FROM members LEFT JOIN short_urls ON members.id = short_urls.owner GROUP BY members.id ORDER BY urls_num DESC LIMIT 10");

то ли запятая, толи еще что-то...

В ошибке следующее
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) as urls_num FROM members LEFT JOIN short_urls ON members.id = short_urls.owne' at line 1


Я не могу понять, где и как поправить, чтобы было норм.

Если инфы мало, тогу выложить и таблицы, откуда тянется все.


members.*

попробовать заменить на просто *

count(short_urls.*)

на

count(*)

если нужно узнать сколько в таблице short_urls записей всего - проще наверное отдельный запрос сделать


о. Спасибо большое. Выводит как надо!

для вывода общего количества я уже сделал :D такие запросы легкие, в них шарю))


Еще вопрос.
Как правильно построить запрос SQL на обновление определенного поля в таблице, если на странице редактирования текст вводится в такое поле

<?php echo '&nbsp;' . os_draw_textarea_field('shoutbox_text', '', '100%', '3', stripslashes($shoutbox['shoutbox_text'])); ?>


Такался тыкался, так и не понял как подцеплять текст из textarea приведенного выше.
вот сам запрос
if ($_GET['update_id']){
os_db_query("UPDATE " . TABLE_SHOUTBOX . " SET shoutbox_text = shoutbox_text WHERE shoutbox_id ='".$_GET['update_id']."'");
}



Попробуйте так

if ($_GET['update_id']){
os_db_query("UPDATE " . TABLE_SHOUTBOX . " SET shoutbox_text = '".$_GET['shoutbox_text']."'  WHERE shoutbox_id ='".$_GET['update_id']."'");
}


Не работает. Видимо что-то не правильно в коде.
Просто очистило текст, и все.


Вместо GET попробуйте POST.


Нет. Не вкатило. Видимо я вообще не правильно делаю или код не там установлен.

Вот что у меня есть

<?php

require('includes/top.php');

$main->head();

$main->top_menu();

if ($_POST['maxrows']){
$maxrows = is_numeric(os_db_prepare_input($_POST['maxrows']));
} else {
$maxrows = $_GET['maxrows'];
}

if ($maxrows <= '20') $maxrows=20;

// Удаляем одну запись с определенным ID
if ($_GET['delete_id']){
os_db_query("delete from " . TABLE_SHOUTBOX . " where shoutbox_id ='".$_GET['delete_id']."'");
}

// Удаляем все полностью
if ($_GET['delete_all']=='true'){
os_db_query("truncate " . TABLE_SHOUTBOX);
}

// Обновляем
if ($_GET['update_id']){
os_db_query("UPDATE ".TABLE_SHOUTBOX." SET shoutbox_text = '".$_GET['shoutbox_text']."' WHERE shoutbox_id ='".$_GET['update_id']."'");
}

?>


Далее на странице уже идет вывод списка
<?php
if ($_GET['page'] > 1) $rows = $_GET['page'] * $maxrows - $maxrows;

$shoutbox_query_raw = "select shoutbox_id, shoutbox_text, shoutbox_time from " . TABLE_SHOUTBOX . " order by shoutbox_time DESC";
$shoutbox_split = new splitPageResults($_GET['page'], $maxrows, $shoutbox_query_raw, $shoutbox_query_numrows);
$shoutbox_query = os_db_query($shoutbox_query_raw);

while ($shoutbox = os_db_fetch_array($shoutbox_query)) {
$rows++;
if (strlen($rows) < 2) {
$rows = '0' . $rows;
}
?>
<tr class="dataTableRow">
<td class="dataTableContent"><?php echo $rows; ?></td>
<td class="dataTableContent">
<?php echo '&nbsp;' . os_draw_textarea_field('shoutbox_text', '', '100%', '3', stripslashes($shoutbox['shoutbox_text'])); ?>
</td>
<td class="dataTableContent"><?php echo $shoutbox['shoutbox_time']; ?>&nbsp;</td>
<td class="dataTableContent">
<?php echo '<a class="button" href="'.$_SERVER['PHP_SELF'].'?update_id='.$shoutbox['shoutbox_id'].'&page='.$_GET['page'].'&maxrows='.$maxrows.'"><span>Обновить</span></a>'; ?>
<?php echo '<a class="button" href="'.$_SERVER['PHP_SELF'].'?delete_id='.$shoutbox['shoutbox_id'].'&page='.$_GET['page'].'&maxrows='.$maxrows.'"><span>Удалить</span></a>'; ?>
</td>
</tr>
<?php
}
?>


дальше там постраницчтость и футер....

Может тут что-то не в том месте или чего-то не хватает?
Пинать меня не надо, я в этом деле большущий ламер ;D И делаю все интуитивно, подглядывая в другие файлы, но вот с обновлением разабраться не могу. Может какая форма нужная для отправки? Я имею ввиду <form>....</form>


Попробуйте вот так сделать:


if ($_GET['update_id'])
{
              $sql_data_array = array('shoutbox_text' => os_db_prepare_input($_POST['shoutbox_text']));
              os_db_perform(TABLE_SHOUTBOX, $sql_data_array, 'update', "shoutbox_id = ' " . (int)$_GET['update_id'] . " ' ");
}


Неа. не получается(
Можно как-то выловить ошибку или не ошибку, а просто посмотреть что и куда отправляется?

У меня установлен netbeans, если поставить Xdebug, то с его помощью можно же будет мониторить выполнение кода?


Без понятия, наверное. А у вас данная область ввода завязана на установленном языке ?



А у вас данная область ввода завязана на установленном языке

Т.е. завязана?


Для начала надо выяснить, передаются ли переменные.

Вставьте в код перед запросом

echo "POST:"; print_r($_POST);
echo "GET:"; print_r($_GET);

И посмотреть выдачу.

Если дадите FTP-доступ в личку, могу глянуть на Ваш случай.


Вот что выдало
POST:Array ( )
GET:Array ( => 1 => 1 => 20 )
Это с кодом который ProRab привел

Я на локалке делаю. Доделаю оформление в админке и выложу весь скрипт архивом завтра или после завтра. Там всего несколько файликов


Вы пытаетесь использовать в запросе переменную $_POST['shoutbox_text'] или $_GET['shoutbox_text'].  А такими переменными у Вас и не пахнет. Диагноз: НЕ передается переменная из формы.

До запроса надо разбираться с формой и передачей параметров.


Я вот как раз и спрашивал про форму в 7 посте. Там же и указал весь код из файла)
Тогда сейчас буду пытаться разобраться с формой.


Ну да, смешно))


Источник



Copyright ShopOS