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

Форум MySQL

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

 

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

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

тема: Не срабатывает UPDATE-запрос
 
 автор: soup-bubble   (06.10.2011 в 12:00)   письмо автору
 
 

Извините за настойчивость, но не могли бы вы помочь это внедрить в php, мне немного это тяжеловато.

есть кнопка

<input name="Set_dublicate_product" type="submit" value="---" class="CRM_Button">


и ее обработчик

if ($_POST[Set_dublicate_product])
{
  $SQL = urlencode("SELECT * FROM $tbl_Katalog 
LEFT JOIN $tbl_Katalog_Names 
ON $tbl_Katalog.id_photo = $tbl_Katalog_Names.id_photo 
WHERE $tbl_Katalog_Names.id_lang = '$GLOBALS[id_lang]' AND
$tbl_Katalog.Status != 2 
ORDER BY $tbl_Katalog.Output_Ord");
  $path = $GLOBALS[path_post]."update_repeated.php";
 
  if($erno==0)
  {
   $thanks = "Файл Обновляется! Подождите несколько минут.";/* Осталось <span id='Time_Span'></span>";*/
   $init_timer = true;
  }

else {$thanks = "Ошибка сетевого соединения";}
}

и следовательно файл update_repeated.php

<? 
session_start 
();
@
set_time_limit(0);
@
error_reporting(7);
$cur_path '../';
$always true;
require 
$cur_path."BD_Block.php";
require 
$cur_path."Library.php";
$PHP_SELF "update_repeated.php";

$SQL $mysql_query("UPDATE 
    (SELECT 
$tbl_Katalog.scu, MIN($tbl_Katalog.priority) AS minimum FROM $tbl_Katalog
    GROUP BY 
$tbl_Katalog.scu) AS mink 
    LEFT JOIN 
$tbl_Katalog as k ON 
    k.scu = mink.scu AND k.priority = mink.minimum 
    SET k.Show_ord = 1"
);
?>


Данным образом я пробовал внедрить, но значения в БД не меняются.
Не могли бы Вы помочь, или может попробовать объяснить нюансы?

  Ответить  
 
 автор: cheops   (06.10.2011 в 12:28)   письмо автору
 
   для: soup-bubble   (06.10.2011 в 12:00)
 

Не понятно, где и как у вас используется $path?

  Ответить  
 
 автор: soup-bubble   (06.10.2011 в 12:33)   письмо автору
 
   для: cheops   (06.10.2011 в 12:28)
 

$path = $GLOBALS[path_post]."update_repeated.php"; - путь к файлу update_repeated.php;
$GLOBALS[path_post] - путь к каталогу, который содержит update_repeated.php; и прописан он в файле с конфигом

  Ответить  
 
 автор: cheops   (06.10.2011 в 12:34)   письмо автору
 
   для: soup-bubble   (06.10.2011 в 12:33)
 

Путь $path потом где вызывается при помощи инструкций include/require/include_once/require_once? Если да, сообщите какой точно?

  Ответить  
 
 автор: soup-bubble   (06.10.2011 в 13:00)   письмо автору
 
   для: cheops   (06.10.2011 в 12:34)
 

не вызывается

  Ответить  
 
 автор: cheops   (06.10.2011 в 13:35)   письмо автору
 
   для: soup-bubble   (06.10.2011 в 13:00)
 

Тогда его нужно где-то вызывать, иначе как PHP узнает, что файл с таким названием нужно пропустить через интерпретатор?

  Ответить  
 
 автор: soup-bubble   (06.10.2011 в 13:29)   письмо автору
 
   для: cheops   (06.10.2011 в 12:34)
 

Есть обработчик еще одной кнопки - полный его код - следующий:

if ($_POST[Set_Partner_Upload])
{
  $SQL = urlencode("SELECT * FROM $tbl_Katalog 
LEFT JOIN $tbl_Katalog_Names 
ON $tbl_Katalog.id_photo = $tbl_Katalog_Names.id_photo
WHERE $tbl_Katalog_Names.id_lang = '$GLOBALS[id_lang]' AND
$tbl_Katalog.Status != 2 
ORDER BY $tbl_Katalog.Output_Ord");
  $hash = md5("qdfhqev4y1245hdf".$id_unload);
  $path = $GLOBALS[path_post]."made_csv_active.php";
  $data = "b=1&hash=$hash&SQL=$SQL&e=1";
  $request ="POST $path  HTTP/1.1\r\n";
  $request.="Host:".$_SERVER[HTTP_HOST]." \r\n"; 
  $request.="Accept: */*\r\n"; 
  $request.="Content-Type: application/x-www-form-urlencoded\r\n";
  //$request.="Referer: 127.0.0.1 \r\n";
  $request.="Connection: Keep-Alive\r\n"; 
  $request.="Content-Length: ".strlen($data)."\r\n";
  $request.="User-Agent: ".$_SERVER[HTTP_USER_AGENT]."\r\n"; 
  $request.="\r\n\r\n";
  $request.=$data;
  
  $f_socet = fsockopen($GLOBALS[host_socket],80, $erno, $erstr);
  stream_set_blocking($f_socet, 0); // отключение блокировки (чтобы не ждал завершения выполнения)
  stream_set_timeout($f_socet, 30); // максимальное время отправки одного потока
  fputs($f_socet, $request); // отсылка запроса сокету;

  if($erno==0)
  {
   $thanks = "Файл создается! Подождите несколько минут.";/* Осталось <span id='Time_Span'></span>";*/
   $init_timer = true;
  }
  else {$thanks = "Ошибка сетевого соединения";}
}


Может следует что-то добавить из этого в обработчик предыдущей кнопки?

  Ответить  
 
 автор: cheops   (06.10.2011 в 13:39)   письмо автору
 
   для: soup-bubble   (06.10.2011 в 13:29)
 

А чем вызывана такая сложная (и помоему не безопасная) схема вызова запроса? Вы передаете SQL-запрос через POST-параметр, а почему бы файл $path просто не вызвать при помощи конструкции require()?
<?php
  
require($path);
?>

  Ответить  
 
 автор: soup-bubble   (06.10.2011 в 14:12)   письмо автору
 
   для: cheops   (06.10.2011 в 13:39)
 

а вместо чего и где это вставить?

Может быть будет проще написать все в 1 файле? Что-то на подобии такого:

<input name="Set_dublicate_product" type="submit" value="---" class="CRM_Button">

<?
if ($_POST[Set_dublicate_product]) 

  
$SQL mysql_query("update $tbl_Katalog k,(select $tbl_Katalog.scu, `$tbl_Katalog.Status`, min($tbl_Katalog.priority) as priority from $tbl_Katalog where `$tbl_Katalog.Status`=1 group by $tbl_Katalog.scu) t
set 
$tbl_Katalog.show_ord=1
where k.scu=t.scu and k.`status`=t.`status` and k.priority=t.priority"
); 

if(
$erno==0)
  {
   
$thanks "Файл создается! Подождите несколько минут.";/* Осталось <span id='Time_Span'></span>";*/
   
$init_timer true;
  }
  else {
$thanks "Ошибка сетевого соединения";}
  }
?>

  Ответить  
 
 автор: cheops   (06.10.2011 в 14:51)   письмо автору
 
   для: soup-bubble   (06.10.2011 в 14:12)
 

Да, или так. Добавьте временно вызов mysql_affected_rows(), чтобы выяснить происходит реальное обновление базы данных или нет.
<input name="Set_dublicate_product" type="submit" value="---" class="CRM_Button"> 

<? 
if ($_POST[Set_dublicate_product])  
{  
  
$SQL mysql_query("update $tbl_Katalog k,(select $tbl_Katalog.scu, `$tbl_Katalog.Status`, min($tbl_Katalog.priority) as priority from $tbl_Katalog where `$tbl_Katalog.Status`=1 group by $tbl_Katalog.scu) t 
set 
$tbl_Katalog.show_ord=1 
where k.scu=t.scu and k.`status`=t.`status` and k.priority=t.priority"
);  
echo 
"Было обновлено ".mysql_affected_rows($SQL)." строк";
if(
$erno==0
  { 
   
$thanks "Файл создается! Подождите несколько минут.";/* Осталось <span id='Time_Span'></span>";*/ 
   
$init_timer true
  } 
  else {
$thanks "Ошибка сетевого соединения";} 
  } 
?>

  Ответить  
 
 автор: cheops   (06.10.2011 в 12:33)   письмо автору
 
   для: soup-bubble   (06.10.2011 в 12:00)
 

В любом случае, временно добавьте проверку сколько фактически было обновлено строк update_repeated.php
<?php
...
$SQL $mysql_query("UPDATE  
    (SELECT 
$tbl_Katalog.scu, MIN($tbl_Katalog.priority) AS minimum
    FROM 
$tbl_Katalog 
    GROUP BY 
$tbl_Katalog.scu) AS mink  
    LEFT JOIN 
$tbl_Katalog as k ON  
    k.scu = mink.scu AND k.priority = mink.minimum  
    SET k.Show_ord = 1"
);
  echo 
"Было обновлено ".mysql_affected_rows($SQL)." строк";
?>

  Ответить  
Rambler's Top100
вверх

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