Поддержка Проблемы и решения Вывод текста из БД

  • Есть часть плагина:

    register_activation_hook(__FILE__, 'first_start');
    
    function first_start () {
    	global $wpdb;
    	global $sape_code;
    	global $number;
    	$number = '0000000000000';
       	$table_name = $wpdb->prefix . "madsape";
       	if($wpdb->get_var("show tables like '$table_name'") != $table_name) {
    $sql = "CREATE TABLE '$table_name' ('code' VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY ('code')) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
    	require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
          	dbDelta($sql);
      	$rows_affected = $wpdb->insert($table_name, array('code' => $number));
    add_option("sape_code", $sape_code);
    }
    }
    
    add_action('admin_menu', 'sape_menu');
    
    function sape_menu() {
    add_submenu_page('options-general.php'
                         , 'Mad_Sape'
                         , 'Mad_Sape'
                         , 'edit_plugins'
                         , __FILE__
                         , 'callme');
    add_action('admin_menu', 'callme');
    }
    
    function callme() {
    	include 'wp_area.php';
    	$table_name = $wpdb->prefix . "madsape";
    	global $wpdb;
    	global $number;
    	$sql = "SELECT COUNT(*) AS 'Строки', 'code' FROM 'wp_madsape' GROUP BY 'code' ORDER BY 'code' LIMIT 0, 30 ";
    	require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    	$result = dbDelta($sql);
    $rows_affected = $wpdb->get_results($table_name, array('code'));
    echo $rows_affected;
    echo $result;
    add_action('admin_menu', 'footer');
    }
    
    function footer() {
    add_action('wp_footer', 'sape_code');
    }
    
    function sape_code() {
    		include 'sape.php';
    }

    Нужно: вывести «0000000000000»
    Есть: в данный момент вп отдаёт «Array» вместо «0000000000000»

    Где ошибка?

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • На убогость кода прошу не обращать внимания, на данный момент там много мусора.

    Предположительно проблема в функции callme, не представляю как вытянуть оттуда эту строку. Сама запись в БД создаётся без проблем.

    SELECT COUNT(*) AS 'Строки', 'code' FROM 'wp_madsape' GROUP BY 'code' ORDER BY 'code' LIMIT 0, 30 ";

    вы уверены что SQL правильный проверяли его отдельно в phpMyAdmin например
    $wpdb->get_results этот метод возернет вам массив, а вы пытаетесь его распечатать сразу для начала убедитесь, что вы получили

    echo '<pre>';print_r();echo '</pre>';

    а вот это еще что такое dbDelta($sql); может весь функционал скрыт в этой функции, посоветую к разработчику обратится

    Эммм. К разработчику? Эммм… Это моя поделка из статей кодекса по написанию плагина.

    UPD:

    function callme() {
    	include 'wp_area.php';
    	global $wpdb;
    	$table_name = $wpdb->prefix . "madsape";
    $myrows = $wpdb->get_results("SELECT 0, code FROM $table_name");
    	echo '<pre>';
    	print_r($myrows[0]);
    	echo '</pre>';
    add_action('admin_menu', 'footer');
    }

    …наконец отдаёт:

    stdClass Object
    (
        [code] => 0000000000000
    )

    Существует ли более вменяемый способ вывести "0000000000000"?

    Модератор Yuri

    (@yube)

    print $myrows[0][‘code’];

    Fatal error: Cannot use object of type stdClass as array in…

    ну тебе немного в php надо подразобраться, Юрий не много ошибся в коде

    print $myrows[0]->code;

    должен сам такие ошибки находить, если плагин писать взялся

    Уря! Спасибо всем, наконец отдаёт вменяемую запись.

    stur, знания синтаксиса на нуле, я знаю, но чёрт побери, почему бы не совмещать грабли и плагин?

    И да, есть ли дебаггеры под ошибки синтаксиса? Ну очень хочется осилить плагин невзирая на невежество 🙂

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • Тема «Вывод текста из БД» закрыта для новых ответов.