Не работает сабмит формы

Главные вкладки

Аватар пользователя Grok Grok 23 мая 2011 в 10:53

Пишу модуль. В нем есть форма. Пр попытке сабмита пишет.

Fatal error: Cannot use string offset as an array in D:\web\xampplite\htdocs\veloplaneta\includes\form.inc on line 992

В чем ошибка не пойму Sad Гляньте плиз свежим взглядом.

<?php
/**
 * Hook menu
 */

function catalog_seo_menu(){
    $items = array();
    $items['admin/catalog_seo'] = array(
        'title' => 'Catalog seo',
        'page callback' => 'catalog_seo_listing',
        'page arguments' => array(),
        'access arguments' => array('administer nodes'),
        'type' => MENU_NORMAL_ITEM
    );
   
    $items['admin/catalog_seo/%/edit'] = array(
        'title' => 'Catalog seo',
        'page callback' => 'catalog_seo_edit',
        'page arguments' => Array
                (
                    2
                ),
        'access arguments' => array('administer nodes'),
        'type' => MENU_CALLBACKz
    );
   
    $items['admin/catalog_seo/add_url'] = array(
        'title' => 'Catalog seo',
        'page callback' => 'catalog_seo_addurl',
        'access arguments' => array('administer nodes'),
        'type' => MENU_CALLBACKz
    );
   
   
    return $items;
}

/**
 * theme
 */

function catalog_seo_theme(){
    return array('catalog_seo_listing' => array('arguments' => array('listing'=> NULL),
                                                'path' => drupal_get_path('module','catalog_seo').'/templates',
                                                 'template' => 'catalog_seo_listing'));
}

/**
 * catalog listing
 */

function catalog_seo_listing(){
    $result = pager_query("SELECT * FROM {catalog_seo}",20,0,"SELECT count(*) FROM {catalog_seo}");
    $listing_rows = array();
    while($row = db_fetch_object($result)){
        $listing_rows[]=$row;
    }
   
    return theme('catalog_seo_listing',$listing_rows).theme('pager', NULL, 20, 0);;
}

/**
 * catalog seo edit
 */

function catalog_seo_edit($row_id){    
    $result = db_query("SELECT * FROM {catalog_seo} WHERE id=%n",$row_id);
    $row = db_fetch_object($result);
    return drupal_get_form('catalog_seo_edit_form',$row);
}

function catalog_seo_edit_form(&$form_state,$row){
    $form['url'] = array(
        '#title'=>'Url',
        '#type'=>'textfield',
        '#value'=> $row->url
                         );
   
   
        $form['id'] = array(
        '#type'=>'hidden',
        '#value'=> $row->id
                         );
   
    $form['keywords_text'] = array(
        '#title'=>'Keywords',
        '#type'=>'textarea',
        '#value'=> $row->keywords
                         );
   
    $form['description_text'] = array(
        '#title'=>'Description',
        '#type'=>'textarea',
        '#value'=> $row->description        
                         );
   
    $form['seotext'] = array(
        '#title'=>'Seo text',
        '#type'=>'textarea',
        '#value'=> $row->seotext
                         );    
   
    $form['submit'] = array(
        '#type'=>'submit',
        '#value'=>'Отправить'
                         );
    return $form;
       
}

function catalog_seo_edit_form_submit($form,&$form_state){
    $rows = $form_state['values'];
    db_query("UPDATE {catalog_seo} SET keywords='%s', description='%s', seotext='%s' WHERE id=%d",strip_tags($rows['keywords_text']),strip_tags($rows['description_text']),strip_tags($rows['seotext']),$rows['id']);

   // db_query("UPDATE {catalog_seo} SET keywords='".strip_tags($rows['keywords_text'])."', description='".strip_tags($rows['description_text'])."', seotext='".strip_tags($rows['seotext'])."' WHERE id=".$rows['id']);
}

Комментарии

Аватар пользователя Grok Grok 23 мая 2011 в 11:50

спасибо огромное. подскажите пожалуйста еще.

теперь не делаеться сабмит формы. функция сабмита выглядит вот так. ошибок не пишет

function catalog_seo_edit_form_submit($form,&$form_state){
    $rows = $form_state['values'];
    db_query("UPDATE {catalog_seo} SET keywords='".strip_tags($rows['keywords_text'])."', description='".strip_tags($rows['description_text'])."', seotext='".strip_tags($rows['seotext'])."' WHERE id=".$rows['id']);
}
Аватар пользователя penexe penexe 23 мая 2011 в 12:00

"Grok" wrote:
спасибо огромное. подскажите пожалуйста еще.

теперь не делаеться сабмит формы. функция сабмита выглядит вот так. ошибок не пишет


а где id в форме?

Аватар пользователя Grok Grok 23 мая 2011 в 12:14

Тоже самое с добавлением

/**
 * add form
 */

function catalog_seo_addurl(){
    return drupal_get_form('catalog_seo_addurl_form');    
}

function catalog_seo_addurl_form(&$form_state){
    $form['url'] = array(
        '#title'=>'Url',
        '#type'=>'textfield',

                         );
   

    $form['keywords_text'] = array(
        '#title'=>'Keywords',
        '#type'=>'textarea',

                         );
   
    $form['description_text'] = array(
        '#title'=>'Description',
        '#type'=>'textarea',
       
                         );
   
    $form['seotext'] = array(
        '#title'=>'Seo text',
        '#type'=>'textarea',
                         );    
   
    $form['submit'] = array(
        '#type'=>'submit',
        '#value'=>'Отправить'
                         );
    return $form;
       
}

function catalog_seo_addurl_submit($form,&$form_state){
   
    $form_state['redirect'] = 'admin/catalog_seo';
    $rows = $form_state['values'];
    db_query("INSERT INTO {catalog_seo} SET keywords='%s', description='%s', seotext='%s'",strip_tags($rows['keywords_text']),strip_tags($rows['description_text']),strip_tags($rows['seotext']),$rows['id']);
}