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

Форум PHP

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

 

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

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

тема: переменная и moodle
 
 автор: V@ldem@r   (15.07.2010 в 20:07)   письмо автору
 
 

Здравствуйте!
У меня проблема следующего характера.
Необходимо из одной базы перенести данные в другую. А точнее из одной системы дистанционного обучения в другую, а именно в систему moodle. Может кто слышал про такую.
Столкнулся с проблемой добавления курса. Так как просто так добавление у меня не проходит. Чтобы курс отобразился после добавления в базу, необходимо обязательно сделать переход на страницу с отображением только что добавленного курса.

Пример моего кода:

<?php

include("confelearn.php");
if (isset(
$_POST['id'])) {$id=$_POST['id'];}
    
$select=mysql_query("select * from Courses where CID='$id'");
    
$mass=mysql_fetch_array($select);
    
//$cmod=mysql_query("SELECT ModID FROM mod_list WHERE CID='$id'");
    
$cmod=mysql_query("SELECT * FROM mod_list WHERE CID='$id'");
    
$count=mysql_num_rows($cmod);
    
//$vmod=mysql_query("select Title from mod_list where CID='$id'");
    
$vmod=mysql_query("select * from mod_list where CID='$id'");
    
$modul=mysql_fetch_array($vmod);

       
$idi=$mass['CID'];
       
$fullname=$mass['Title'];
       
$summary=$mass['Description'];
       
$timecr=$mass['createdate'];
include (
"configmoodlle.php");    




$ins=mysql_query("insert into mdl_course (category, id, fullname, format, shortname, summary, timecreated, newsitems, numsections) values ('1', '$id', '$fullname', 'topics', '$id','$summary','$timecr', '5', '$count') ");

if (
$ins=='true')
{
echo 
"<html><head> 
<meta HTTP-EQUIV='Refresh' Content='0; URL=http://moodle/course/view.php?id=
$id'>  
</head></html>"
;
}


После всей этой красоты мне нужно еще обновить таблицу

$i=1;
do 
{    
    if (isset($_POST['id'])) {$id=$_POST['id'];}
    $Titlemod=$modul['Title'];
    $modules=mysql_query("update `mdl_course_sections` set summary='$Titlemod' where course='$id' and section='$i'");
    $i=$i+1;

}

while ($modul=mysql_fetch_array($vmod));


Как мне сделать, чтобы после перенаправления на страницу с добавленным курсом, переход осуществлялся назад или в другой файл и подтягивал с собой id добавленного курса, чтобы выполнить цикл по обновлению полей?

  Ответить  
 
 автор: Fratyr   (19.07.2010 в 17:39)   письмо автору
 
   для: V@ldem@r   (15.07.2010 в 20:07)
 

Если не делать никаких выводов на страницу, то переходы осуществляются функцией header("Location: http://www.domain.com/file.php");

Иначе, выплевываешь яваскрипт код:
echo "<script type="text/javascript">location.href='url';</script>";

Что бы между страницами гуляли какие-то данные, открывай в каждом из таких файлов сессию session_start(); и записывай туда тот же id. ( $_SESSION['id'] = $id );

  Ответить  
 
 автор: Trianon   (19.07.2010 в 18:09)   письмо автору
 
   для: V@ldem@r   (15.07.2010 в 20:07)
 

Код, как обычно, дико грязный.
Ошибки не контролируются.
Полно мест с неопределенными переменными.
Половина кода не читается, поскольку уходит вправо.

Но даже если на всё на это закрыть глаза...
что Вы имеете в виду под
$ins=mysql_query(...);
if ($ins=='true') ?

mysql_query никогда не возвращает текстовых строк.
Ни 'true' ни каких либо еще.

  Ответить  
 
 автор: Fratyr   (19.07.2010 в 18:40)   письмо автору
 
   для: Trianon   (19.07.2010 в 18:09)
 

http://il2.php.net/mysql_query

При пустом результате, возвращается boolean FALSE.

но проверять нужно так if ( $ins == true )

  Ответить  
 
 автор: Trianon   (19.07.2010 в 22:13)   письмо автору
 
   для: Fratyr   (19.07.2010 в 18:40)
 

я в курсе вообще-то

  Ответить  
 
 автор: V@ldem@r   (20.07.2010 в 19:08)   письмо автору
 
   для: Fratyr   (19.07.2010 в 18:40)
 

Спасибо, попробую! Только вот в чем проблема, такую операцию необходимо будет повторить много раз. Так как надо будет из одной базы перегнать данные в другую.

  Ответить  
 
 автор: V@ldem@r   (20.07.2010 в 19:09)   письмо автору
 
   для: Trianon   (19.07.2010 в 18:09)
 

А что вам в моем коде не нравиться? Почему он грязный то? У меня все нормально умещается, кто виноват что у вас монитор с маленьких разрешением.

  Ответить  
 
 автор: Trianon   (20.07.2010 в 19:42)   письмо автору
 
   для: V@ldem@r   (20.07.2010 в 19:09)
 

Я написал, почему грязный.
Потому что Вы не контролируете ошибки и работаете с неопределенными переменными.

При чем тут разрешение моего монитора?
У меня их три, и у всех разрешение разное.
Код следует писать так, чтоб он вмещался на страницу печати.
К слову сказать, для переброса, подобного Вашему, если обе БД размещены на одном сервере, вообще никакой php не нужен.
Нужно выполнить 1 (один) оператор
INSERT into db2.tbl2 SELECT ... FROM db1.tbl1 ...

  Ответить  
 
 автор: V@ldem@r   (20.07.2010 в 20:06)   письмо автору
 
   для: Trianon   (20.07.2010 в 19:42)
 

Не все так просто. Если бы так можно было сделать, то все было бы проще простого. Но мудл, не понимает, вернее не отображает инфу, которая добавлена просто в базу. Необходимо после добавления именно сделать переход на страницу с только что добавленным курсом. Вот в чем вся проблема.
И еще, как же надо правильно по вашему писать, чтобы контролировать переменные?
Подскажите как правильно, я буду вам признателен.

  Ответить  
 
 автор: Trianon   (20.07.2010 в 20:34)   письмо автору
 
   для: V@ldem@r   (20.07.2010 в 20:06)
 

error_reporting(E_ALL);

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

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