Webboard

Pełna wersja: Dodawanie rekordu MySQL
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam, mam problem z funkcją insert_query, mianowicie mam błąd:
Kod:
Fatal error: Call to undefined method mysqli::insert_query()
Z tego co rozumiem, funkcja nie jest zdefiniowana ale to przecież funkcja MyBB 

Mój kod:
Kod PHP:
                            $query $con->query("SELECT * FROM goldPanel_News");
                            while (
$row $query->fetch_assoc()) {
                                
$dane_admina $con->query("SELECT PLAYER_ADMIN_LEVEL FROM premiumMod_Admins WHERE PLAYER_NAME='".$row['Author']."'");
                                
$dane_admina $dane_admina->fetch_assoc();
                                
$dane_konta $con->query("SELECT PLAYER_VIP_TIME, PLAYER_SKIN FROM premiumMod_Players WHERE PLAYER_NAME='".$row['Author']."'");
                                
$dane_konta $dane_konta->fetch_assoc();
                                
$nick nameRank($row['Author'], $dane_admina['PLAYER_ADMIN_LEVEL'], $dane_konta['PLAYER_VIP_TIME'], '1');

 
                               eval("\$panel .= \"".$templates->get("pg_news_row")."\";");
                            }

                            
$panel .= '<form action="panel.php?module=main&controller=main" method="post">
                            <input required class="textbox" name="topicName" size="40" maxlength="85" value="" tabindex="1" type="text">
                            <textarea style="width: 100%; padding: 4px; margin: 0;" rows="8" cols="80" name="topicThread" tabindex="1"></textarea>
                            <input value="Napisz temat" class="button" name="submit" tabindex="4" accesskey="s" type="submit">
                            </form>'
;

                            if (
$mybb->request_method == "post") {
                                
$temat = array(
                                    
"Author" => "X3nO",
                                    
"Topic" => $db->escape_string($mybb->get_input('topicName')),
                                    
"Thread" => $db->escape_string($mybb->get_input('topicThread')),
                                    
"Date" => date("d.m.Y, H:i:s")
                                );
                    
                                if (
$con->insert_query("goldPanel_News"$temat)) {
                                    
$panel .= "Dodana wpis do bazy danych.";
                                }
                            } 
Zaczynasz jeden wątek, nie kończysz, lecisz z następnym. Pokaż cały kod. Rozumiem że select działa normalnie? Masz to jako funkcje czy kod w ifie akcji?
(30.07.2016, 22:12)Supryk napisał(a): [ -> ]Zaczynasz jeden wątek, nie kończysz, lecisz z następnym. Pokaż cały kod. Rozumiem że select działa normalnie? Masz to jako funkcje czy kod w ifie akcji?
Nie rozumiem stwierdzenia Zaczynasz jeden wątek, nie kończysz, lecisz z następnym..

Select działa. Mam funkcję w pluginie jako hook którego uruchamiam na podstronie
(30.07.2016, 22:12)Supryk napisał(a): [ -> ]Pokaż cały kod.
panel.php
Kod:
<?php
define('IN_MYBB', 1);
require "./global.php";
add_breadcrumb("goldPanel", "panel.php");
$plugins->run_hooks("pgpage_start");
if($mybb->settings['goldPanel_status'] == 1) {
    eval("\$podstr = \"".$templates->get("pg_global")."\";");
} else {
    $podstr = '<html><head>'.$headerinclude.'</head><body>'.$header.'goldPanel jest wyłączony.'.$footer.'</body></html>';
}
output_page($podstr);
?>
$con nie jest u Ciebie klasa mybb, a później wpis znasz do niej funkcje mybb, zmień funkcje insertu lub sposób połączenia

btw, trzymanie danych do bazy w ustawieniach to najgorsze co mozna zrobic
Dzięki, działa. A gdzie zalecasz trzymać dane do bazy?

Mam też pytanie dot. parsera postów z MyBB, dodałem edytor i wszystko pięknie dodaje się do bazy, jak wyświetlam selectem z $parser to nie ma efektu. W sensie widać kod BBCode.

Kod:
                            require_once MYBB_ROOT."inc/class_parser.php";
                            $parser = new postParser;
                            
                            $query = $con->query("SELECT * FROM goldPanel_News ORDER BY ID DESC");
                            while ($row = $query->fetch_assoc()) {
                                $dane_admina = $con->query("SELECT PLAYER_ADMIN_LEVEL FROM premiumMod_Admins WHERE PLAYER_NAME='".$row['Author']."'");
                                $dane_admina = $dane_admina->fetch_assoc();
                                $dane_konta = $con->query("SELECT PLAYER_VIP_TIME, PLAYER_SKIN FROM premiumMod_Players WHERE PLAYER_NAME='".$row['Author']."'");
                                $dane_konta = $dane_konta->fetch_assoc();
                                $nick = nameRank($row['Author'], $dane_admina['PLAYER_ADMIN_LEVEL'], $dane_konta['PLAYER_VIP_TIME'], '1');
                                $row['Thread'] = $parser->parse_message($row['Thread'], $parser_options);
                                eval("\$panel .= \"".$templates->get("pg_news_row")."\";");
                            }

                            $codebuttons = build_mycode_inserter();

                            $panel .= '<form action="panel.php?module=main&controller=main" method="post">
                            <input required class="textbox" name="topicName" size="40" maxlength="85" value="" tabindex="1" type="text">
                            <textarea id="message" name="message" rows="20" cols="70" tabindex="2" ></textarea>
                            '.$codebuttons.'
                            <input value="Napisz temat" class="button" name="submit" tabindex="4" accesskey="s" type="submit">
                            </form>';
(31.07.2016, 10:56)DeadlyGlobe71 napisał(a): [ -> ]Dzięki, działa.

Więc może byś tak pokazał teraz swój kod i zostawił dla innych?

(31.07.2016, 10:56)DeadlyGlobe71 napisał(a): [ -> ]A gdzie zalecasz trzymać dane do bazy?
W pliku php z odpowiednimi zabezpieczeniami, chmodami.
(31.07.2016, 10:56)DeadlyGlobe71 napisał(a): [ -> ]Mam też pytanie dot. parsera postów z MyBB, dodałem edytor i wszystko pięknie dodaje się do bazy, jak wyświetlam selectem z $parser to nie ma efektu. W sensie widać kod BBCode.
Jeden wątek = jeden problem.
Oczywiście
Kod:
        // Load DB interface
        $sampcon['database']['type'] = 'mysqli';
        $sampcon['database']['database'] = $mybb->settings['goldPanel_table'];
        $sampcon['database']['hostname'] = $mybb->settings['goldPanel_link'];
        $sampcon['database']['username'] = $mybb->settings['goldPanel_login'];
        $sampcon['database']['password'] = $mybb->settings['goldPanel_pass'];

        require_once MYBB_ROOT."inc/db_base.php";

        require_once MYBB_ROOT."inc/db_".$sampcon['database']['type'].".php";
        $con = new DB_MySQLi;
        $con->connect($sampcon['database']);
(31.07.2016, 10:22)Supryk napisał(a): [ -> ]btw, trzymanie danych do bazy w ustawieniach to najgorsze co mozna zrobic

(31.07.2016, 11:51)Supryk napisał(a): [ -> ]W pliku php z odpowiednimi zabezpieczeniami, chmodami.


Z punktu widzenia bezpieczeństwa danych, nie ma to większego znaczenia - jeżeli ktoś dobierze się do plików, to dobierze się też do bazy (np. przez inc/config.php, albo i dowolny inny). Jeżeli ktoś dobierze się do bazy, to zyska na forum / innym skrypcie pełne uprawnienia, a nierzadko pluginy i inne opcje pozwolą mu na sprawdzenie co takiego jest skonfigurowanego.

W tym przypadku powiedziałbym, że liczy się profilaktyka. Już po fakcie i tak jest kaplica ;)