We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 25356
    • 8 Posts
    Хоть убейте не получается!

    Код модуля:

     /***********************************
    * 
    * MODx Offer
    * 
    ***********************************/
    
    $dbname = $modx->db->config['dbase']; //имя базы данных
    $dbprefix = $modx->db->config['table_prefix']; //префикс таблиц
    $mod_table = $dbprefix."manager_offer"; //таблица модуля
    $theme = $modx->config['manager_theme']; //тема админки
    $basePath = $modx->config['base_path']; //путь до сайта на сервере
    
    echo '
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"  lang="en" xml:lang="en">
    <head>
      <link rel="stylesheet" type="text/css" href="media/style/'.$theme.'/style.css" />
    </head>
    <body>
     
    <br />
    <div class="sectionHeader">Купоны</div>
     
      <div class="sectionBody">
     
    <script language="JavaScript" type="text/javascript">
    function postForm(action, id){
      document.module.action.value=action;
      if (id != null) document.module.item_id.value=id;
        document.module.submit();
      }
    </script>
     
    <form name="module" method="post">
    <input name="action" type="hidden" value="" />
    <input name="item_id" type="hidden" value="" />
    ';
     
    $action = isset($_POST['action']) ? $_POST['action']:'';
     
    switch($action) {
     
    ////Установка модуля (создание таблицы в БД)
    case 'install':
      $sql = "CREATE TABLE $mod_table (id INT(11) NOT NULL AUTO_INCREMENT, title VARCHAR(255), description TEXT(2000), address VARCHAR(255), date VARCHAR(255), origcost INT(55), sale VARCHAR(55), cost INT(55), PRIMARY KEY (id))";
      $modx->db->query($sql);
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Удаление таблицы модуля
    case "uninstall":
      $sql = "DROP TABLE $mod_table";
      $modx->db->query($sql);
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Добавление записи
    case 'add':
      if (!empty($_POST['item_id'])){//редактирование записи
        $data = mysql_fetch_array($modx->db->select("title, description, address, date, origcost, sale, cost", $mod_table, "id = $_POST[item_id]", "", ""));
        $id = $_POST['item_id'];
        $title = $data['title'];
        $description = $data['description'];
        $address = $data['address'];
        $date = $data['date'];
        $origcost = $data['origcost'];
        $sale = $data['sale'];
        $cost = $data['cost'];   
        $save = "update";
      }else{//если запись новая
        $id = '';
        $title = '';
        $description = '';
        $address = '';
        $date = '';
        $origcost = '';
        $sale = '';
        $cost = '';
        $save = "save";
      }
      echo '
    Название предложения<br /><input type="text" name="title" value="'.$title.'" /><br />
    Описание<br /><textarea name="description" cols="40" rows="5">'.$description.'</textarea><br />
    Алрес<br /><input type="text" name="address" value="'.$address.'" /><br /> 
    Дата действия предложения<br /><input type="text" name="date" value="'.$date.'" /><br />
    Обычная цена<br /><input type="text" name="origcost" value="'.$origcost.'" /><br />
    Скидка<br /><input type="text" name="sale" value="'.$sale.'" /><br />
    Ваша цена<br /><input type="text" name="cost" value="'.$cost.'" /><br />    
    <a href="#" onclick="postForm(\''.$save.'\',\''.$id.'\');return false;"><img src="media/style/'.$theme.'/images/icons/save.gif" align="absmiddle" />Добавить предложение</a>
     
    <a href="#" onclick="postForm(\'reload\',null);return false;"><img src="media/style/'.$theme.'/images/icons/cancel.gif" align="absmiddle" />Отмена</a>
    ';
    break;
     
    ////Сохранение записи в БД
    case 'save':
      $sql = "INSERT INTO $mod_table VALUES (NULL,'$_POST[title]','$_POST[description]','$_POST[address]','$_POST[date]','$_POST[origcost]','$_POST[sale]','$_POST[cost]')";
      $modx->db->query($sql);
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Обновление записи в БД
    case 'update':
      $fields = array(
         "title" => $_POST['title'],
         "description" => $_POST['description'],
         "address" => $_POST['address'],
         "date" => $_POST['date'],
         "origcost" => $_POST['origcost'],
         "sale" => $_POST['sale'],
         "cost" => $_POST['cost']    
         );
      $query = $modx->db->update($fields, $mod_table, "id = ".$_POST['item_id'].""); 
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
     
    ////Перезагрузка страницы (сброс $_POST)
    case 'reload':
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Удаление записи в БД 
    case 'delete':
      $modx->db->delete($mod_table, "id = $_POST[item_id]");
      header("Location: $_SERVER[REQUEST_URI]");
    break;
     
    ////Страница модуля
    default:
      if (mysql_num_rows(mysql_query("show tables from $dbname like '$mod_table'"))==0){
      //если таблицы не существует, выводим кнопку "Установить модуль"
      
        echo '<a href="#" onclick="postForm(\'install\',null);return false;">Установить модуль</a>';
     
      }else{
      //если же модуль уже установлен, выводим его
      
        echo '
        </form>
        <a href="#" onclick="postForm(\'add\',null);return false;"><img src="media/style/'.$theme.'/images/icons/newdoc.gif" align="absmiddle" />Добавить</a>
        ';
     
        $data_query = $modx->db->select("*", $mod_table, "", "id ASC", ""); 
     
        echo '
    <br /><br />
    <table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#707070">
      <thead>
      <tr>
        <td><b>Название предложения</b></td>
        <td><b>Описание</b></td>
        <td><b>Адрес</b></td>
        <td><b>Дата действия предложения</b></td>
        <td><b>Обычная цена</b></td>
        <td><b>Скидка</b></td>
        <td><b>Ваша цена</b></td>
        <td><b></b></td>
        <td><b></b></td>
      </tr>
      <thead>
      <tbody>
    ';
     
        while ($data = mysql_fetch_array($data_query)){//выводим записи
        echo '
      <tr bgcolor="#FFFFFF">
        <td>'.$data["title"].'</td>
        <td>'.$data["description"].'</td>
        <td>'.$data["address"].'</td>
        <td>'.$data["date"].'</td>
        <td>'.$data["origcost"].'</td>
        <td>'.$data["sale"].'</td>
        <td>'.$data["cost"].'</td>
        <td align="center"><a href="#" title="Редактировать" onclick="postForm(\'add\','.$data["id"].');return false;"><img src="media/style/'.$theme.'/images/icons/logging.gif" align="absmiddle" /></a></td>
        <td  align="center"><a href="#" title="Удалить" onclick="if(confirm(\'Вы уверены?\')){postForm(\'delete\','.$data["id"].')};return false"><img src="media/style/'.$theme.'/images/icons/delete.gif" align="absmiddle" /></a></td>
      </tr>';
        }
     
        echo '
      </tbody>
    </table>
    <br /><br />
    <a href="#" onclick="if(confirm(\'Вы уверены?\')){postForm(\'uninstall\',null)};return false;"><img src="media/style/'.$theme.'/images/icons/delete.gif" align="absmiddle" />Удалить все предложения</a>
    ';
     
      }
    break;
    } 
     
    echo '
    </div>
    </body>
    </html>
    ';
    


    Тестовый код сниппета:
    <?php
    $dbname = $modx->db->config['dbase']; //имя базы данных
    $dbprefix = $modx->db->config['table_prefix']; //префикс таблиц
    $mod_table = $dbprefix."manager_offer"; //таблица модуля
    $theme = $modx->config['manager_theme']; //тема админки
    $basePath = $modx->config['base_path']; //путь до сайта на сервере
    
    $data = mysql_fetch_array($modx->db->select("id, title, description, address, date, origcost, sale, cost", $mod_table, "", "", ""));
    
    
                            echo '<div class="left">';
                                echo '<h1>'.$data['title'];
    echo '</h1>';
    
                               echo '</div>';
                          
    ?>
    


    Не выводит ничего.
      • 26744
      • 157 Posts
      Проблема осталась та же - нехватка знаний!
      1. Смотрите, какие ошибки выдает сниппет - они записываются в Отчеты > Просмотр событий.
      2. Если не можете найти ошибку - изменяйте код по частям пока не заработает.
      3. Пробуйте на локальном сервере запустить отдельно сниппет, т.е. создайте PHP-файл и запустите - ошибка сразу покажется с номером строки.
      4. Ошибка тут: echo ’<h1>’.$data[’title’]; Ругается на кавычки - или ’<h1>’ заменить на "<h1>" или... лучше первое.

      Может всё-таки планка взята слишком высоко, может начать с вывода "Hello, World" ?

      Логику самого сниппета не проверяЮ, но исполнение хромает, кажется, на обе ноги smiley))))
        • 25356
        • 8 Posts
        С выводом "Привет,мир!" я уже разобралась=))
        Я и так и так ковычки пробовала=)Разницы нет..у меня он не ругается на кавычки..=)
        Вы, как опытный программист, может посоветуете после прочтения книдки для начинающих, как лучше дальше продвигаться?
          • 26744
          • 157 Posts
          Quote from: rockmania at Feb 28, 2011, 02:03 AM

          С выводом "Привет,мир!" я уже разобралась=))
          Отлично!
          Quote from: rockmania at Feb 28, 2011, 02:03 AM

          Я и так и так ковычки пробовала=)Разницы нет..у меня он не ругается на кавычки..=)
          Так, а на что ругается?
          Quote from: rockmania at Feb 28, 2011, 02:03 AM

          Вы, как опытный программист, может посоветуете после прочтения книдки для начинающих, как лучше дальше продвигаться?
          Я далеко не опытный. Создавать, создавать и создавать сайты, скрипты и т.д.
            • 785
            • 2,113 Posts
            Попробуйте такой вариант:
            <?php
            if(!$result=$modx->db->select("*", $modx->getFullTableName('manager_offer')))
            	echo 'ERROR: '.mysql_error();
            else {
            	while ($row=$modx->db->getRow($result)) {
            		echo '<div class="left"><h1>'.$row['title'].'</h1></div>';
            	}     
            }                
            ?>
            А для освоения PHP полезно разбирать примеры на сайте
            http://docs.php.net/manual/ru/
              Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
              Статьи о MODx, регулярно новые публикации